An interactive educational Arduino learning platform designed for Computer Science students and beginners who want to learn Arduino programming from scratch. DEMONSTRUCT transforms your Arduino into a self-teaching device that guides you through hands-on projects with step-by-step instructions.
DEMONSTRUCT (Demo-Construct) is specifically designed for:
- CSE 101 Students at Gebze Technical University
- Beginners with limited resources and time
- Self-learners who don't know where to start
- Makers wanting to build foundational skills
The system takes users from zero Arduino knowledge to a level sufficient for university assignments and simple projects through an interactive desktop application connected to Arduino.
"Demonstruct ensures an Arduino that can teach itself since it has all the potential to do it."
- Menu-driven interface: Main menu (1-4) + Sub-menus for each category
- Connection tab: Test and verify Arduino communication
- Hardware category: Learn pins, analog/digital I/O
- Codes category: Example sketches for each concept
- Projects category: Complete mini-projects
- User authentication: Sign up and log in system
- Serial communication: Connects to Arduino on COM5
- Real-time interaction: Send commands, receive feedback
- Learning tracker: Progress through lessons
- Basic Output: LED blinking (sketch_dec18a)
- User Input: Button control (sketch_dec22a)
- Analog Read/Write: Potentiometer, PWM (sketch_dec23a)
- Sensors: Ultrasonic distance, heat sensor
- Sound: Buzzer control
- Traffic Light: Complete project example
| Technology | Purpose |
|---|---|
| Arduino UNO | Microcontroller platform |
| C++ (Arduino) | Microcontroller programming |
| C (Desktop App) | Serial communication application |
| Serial Communication | Arduino-PC interface |
| Electronics | Circuits and components |
DEMONSTRUCT--Arduino-Instructive/
├── 📂 MAIN_ARDUINO_PROJECT/ # Arduino teaching interface
│ └── MAIN_ARDUINO_PROJECT.ino # Main teaching sketch
├── 📂 MAIN_PROJECT/ # Desktop application
│ ├── MAIN_PROJECTT.c # C source code
│ ├── MAIN_PROJECTT.exe # Compiled executable
│ ├── Users.dat # User credentials
│ ├── Copy.dat # Backup file
│ └── 📂 PNG/ # Circuit diagrams
│ ├── LED1st.png # LED circuit - step 1
│ ├── LED2nd.png # LED circuit - step 2
│ ├── Button1st.png # Button circuit
│ ├── Buzzer1st.png # Buzzer circuit
│ ├── HeatSensor1st.png # Temperature sensor
│ ├── Potentiometer1st.png # Potentiometer circuit
│ ├── Ultrasonic1st.png # Ultrasonic sensor
│ ├── analogread.jpg # Analog read example
│ ├── analogwrite20.jpg # PWM 20/255
│ ├── analogwrite255.jpg # PWM 255/255
│ ├── digitalone.png # Digital output
│ ├── circuitwtester.png # Circuit tester
│ ├── Arduino-counter.png # Counter project
│ └── Arduino_Traffic_Light.png # Traffic light project
├── 📂 Skeches/ # Example Arduino sketches
│ ├── 📂 sketch_dec18a/ # LED blink examples
│ │ └── sketch_dec18a.ino
│ ├── 📂 sketch_dec22a/ # Button examples
│ │ └── sketch_dec22a.ino
│ └── 📂 sketch_dec23a/ # Analog/digital examples
│ ├── sketch_dec23a.ino
│ └── 📂 sketch_dec23a/ # Duplicate folder
│ └── sketch_dec23a.ino
├── 📄 PROJECT.docx # Project documentation
├── 📄 README.md # This file
├── 📄 .gitattributes # Git attributes
└── 📄 LICENSE # MIT License
- Arduino UNO (or compatible board)
- USB Cable (for PC connection)
- PC with Windows OS (for MAIN_PROJECTT.exe)
- Electronic components: LEDs, buttons, resistors, sensors, breadboard, wires
- Connect your Arduino to COM5 port
- Wait for driver installation (if first time)
- Open
MAIN_ARDUINO_PROJECT/MAIN_ARDUINO_PROJECT.inoin Arduino IDE - Select board: Arduino UNO
- Select port: COM5
- Click Upload button
⚠️ Important: If you encounter errors in [2]connections tab later, re-upload the code or reset Arduino
cd MAIN_PROJECT
MAIN_PROJECTT.exe- Create a new account or log in with existing credentials
- User data is stored in
Users.dat
You're now ready to explore:
1 → Codes Category → Sub-menu with example codes
2 → Connection Category → Test Arduino communication
3 → Hardware Category → Learn pins and I/O
4 → Projects Category → Mini-projects
0 → Exit
0 → Return to main menu
2 → Placeholder for your code
- Circuit: Connect LED to pin 13 (built-in LED)
- Test: LED should blink when you send '1' (ON) or '2' (OFF)
- Circuit: Button to pin 2, LED to pin 13
- Test: Press button → LED blinks, counter increments
- Circuit: LED with resistor to pin 11
- Test: Send '3' → LED fades in/out
- Send value: Send '4' then type number (0-255)
- Circuit: Potentiometer to analog pin A0
- Test: Read values in real-time
- Pins: Red (10), Yellow (9), Green (8)
- Sequence: Green (3s) → Yellow (3s) → Red (5s) → Yellow (2s) → Repeat
| Command | Action | Arduino Response |
|---|---|---|
1 |
Turn LED ON | LED lights up |
2 |
Turn LED OFF | LED turns off |
3 |
Blink LED | LED blinks with delay |
4 |
Square calculation | Enter number, get n² |
5 |
Button counter | Press button, count increases |
0 |
Exit program | Terminates connection |
- Select option
2from main menu - Arduino sends "q" to confirm connection
- If no response → Re-upload code or reset Arduino
- Learn about Digital Pins: Input/Output modes
- Understand Analog Pins: Read sensors (A0-A5)
- Study PWM Pins: ~3, ~5, ~6, ~9, ~10, ~11
- Explore Power Pins: 5V, 3.3V, GND
Complete mini-projects that combine multiple concepts:
- Counter: Button-controlled counter with LED feedback
- PWM Dimmer: Potentiometer controls LED brightness
- Traffic Light: Full 3-light sequence
- Distance Sensor: Ultrasonic with buzzer alarm
- Temperature Monitor: Heat sensor with threshold alert
const int ledPin = 13;
const int buttonPin = 2;
void setup() {
Serial.begin(9600);
Serial.setTimeout(10000);
pinMode(ledPin, OUTPUT);
}
void loop() {
char input = (char)Serial.read();
if (input == '1') {
digitalWrite(ledPin, HIGH);
} else if (input == '2') {
digitalWrite(ledPin, LOW);
} else if (input == '3') {
// Blink pattern
for (int i = 0; i < 5; i++) {
digitalWrite(ledPin, HIGH);
delay(800);
digitalWrite(ledPin, LOW);
delay(800);
}
} else if (input == '4') {
int sqr = Serial.parseInt();
Serial.print(sqr * sqr); // Square calculation
} else if (input == '5') {
// Button counter
int buttonState = 0;
int count = 0;
while (1) {
buttonState = digitalRead(buttonPin);
if (buttonState == 1) {
count++;
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
Serial.println(count);
}
char a = (char)Serial.read();
if (a == '1') break;
}
} else if (input == '0') {
exit(0);
}
}void SKchangeLights() {
// Green OFF, Yellow ON for 3 seconds
digitalWrite(green, LOW);
digitalWrite(SKyellow, HIGH);
delay(3000);
// Yellow OFF, Red ON for 5 seconds
digitalWrite(SKyellow, LOW);
digitalWrite(SKred, HIGH);
delay(5000);
// Red + Yellow for 2 seconds
digitalWrite(SKyellow, HIGH);
delay(2000);
// All OFF, Green ON for 3 seconds
digitalWrite(SKyellow, LOW);
digitalWrite(SKred, LOW);
digitalWrite(green, HIGH);
delay(3000);
}| Component | Quantity | Purpose |
|---|---|---|
| Arduino UNO | 1 | Main microcontroller |
| LED (any color) | 3 | Output indication |
| Push Button | 1 | User input |
| 220Ω Resistor | 3+ | LED protection |
| 10kΩ Resistor | 1 | Button pull-down |
| Breadboard | 1 | Prototyping |
| Jumper Wires | 20+ | Connections |
| Potentiometer | 1 | Analog input |
| Buzzer | 1 | Sound output |
| Ultrasonic Sensor (HC-SR04) | 1 | Distance measurement |
| Heat Sensor (LM35) | 1 | Temperature reading |
All circuit diagrams are provided in MAIN_PROJECT/PNG/ folder:
- ✅ Clear images showing component placement
- ✅ Pin connections labeled
- ✅ Step-by-step assembly
By completing this course, students will:
- ✅ Understand Arduino hardware architecture
- ✅ Master digital I/O operations
- ✅ Learn analog reading and PWM writing
- ✅ Interface sensors and actuators
- ✅ Write structured Arduino sketches
- ✅ Debug serial communication issues
- ✅ Build complete projects from scratch
- ✅ Prepare for CSE 101 final projects
This project was designed for Gebze Technical University's CSE 101 (Introduction to Computer Engineering) course:
- Level: First-year students
- Prerequisites: Basic C programming
- Goal: Hands-on hardware experience
- Outcome: Ready for course assignments and projects
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Add more sensor examples (DHT11, PIR, etc.)
- Create video tutorials
- Translate to other languages
- Add troubleshooting guide
- Expand project collection
- Create online simulation version (Tinkercad)
- Add quiz/questions for self-testing
This project is licensed under the MIT License. See the LICENSE file for details.
Tugay Talha İçen
- GitHub: @Tugaytalha
- Twitter: @TugayTalhaIcen
- LinkedIn: Tugay Talha İçen
Project Link: https://github.com/Tugaytalha/DEMONSTRUCT--Arduino-Instructive
- Gebze Technical University CSE 101 course staff
- Arduino Community for excellent documentation
- Fellow students for testing and feedback
- Open source hardware movement for democratizing electronics
🎓 Learn by doing, teach by building!
⭐ Don't forget to star this repo if you found it helpful!
🐛 Use the Issues tab for bug reports or suggestions.
🔌 Plug, code, and learn — Arduino made simple!
┌─────────────────────────────────────┐
│ DEMONSTRUCT QUICK COMMANDS │
├─────────────────────────────────────┤
│ Arduino IDE → Upload to COM5 │
│ Run MAIN_PROJECTT.exe → Login │
│ Main Menu: 1-4 (0=Exit) │
│ Serial: 1=ON, 2=OFF, 3=Blink │
│ 4=Square, 5=ButtonCount │
└─────────────────────────────────────┘