@Sir Shungu 0775313131/0711371861
🔧 Understanding Arduino: The Robot's Brain
What Is Arduino?
Arduino is a user-friendly electronics platform that lets you build devices capable of sensing
and responding to their environment. Think of it as the nervous system of a robot.
🎯 Key Features:
o A small programmable microcontroller board (like the popular Arduino Uno)
o Simple hardware connections to sensors, motors, LEDs, and more
o An easy-to-use coding interface to write instructions
🧰 Why it's ideal for beginners:
o Plug-and-play simplicity
o Tons of online tutorials and community help
o Supports endless creative applications—like building a line-following robot or
automated plant waterer
Arduino gives physical machines the ability to think and react, making it an essential tool in
learning robotics.
💻 What Is Coding?
In Plain Terms…
Coding is the art of writing instructions that a computer (or robot!) can understand and follow.
It’s like crafting a recipe—except instead of baking a cake, you’re telling a machine exactly
what to do and when to do it.
📜 Code is written in languages like:
o C++, commonly used with Arduino
o Python, great for general-purpose programming
o JavaScript, often used in web development
🧰 How coding powers robotics:
o Tells the robot when to move, stop, or change direction
o Processes data from sensors (like detecting light or distance)
o Enables decision-making and autonomy
Coding transforms static electronics into interactive, intelligent systems. It’s where logic meets
creativity.
@Sir Shungu 0775313131/0711371861
🎓 UnoArduSim Exercise Pack – Beginner Level
🟢 Exercise 1: LED Blinker (Timing Basics)
Objective: Understand the setup() and loop() structure and use delay() to control timing.
void setup() {
pinMode(13, OUTPUT); // Set built-in LED pin as output
}
void loop() {
digitalWrite(13, HIGH); // Turn LED on
delay(500); // Wait 0.5 seconds
digitalWrite(13, LOW); // Turn LED off
delay(500); // Wait 0.5 seconds
}
In UnoArduSim:
Observe the pin activity graph.
Predict what changing delay(500) to delay(1000) will do.
@Sir Shungu 0775313131/0711371861
🟢 Exercise 2: Counter Display (Variable Tracking)
Objective: Learn how variables are updated in a loop.
int count = 0;
void setup() {
// nothing needed here
}
void loop() {
count = count + 1;
delay(100);
}
In UnoArduSim:
Watch the count value increase.
Try changing count = count + 1 to count = count + 2.
🔵 Exercise 3: Conditional Logic (if Statements)
Objective: Use conditional statements to control behavior.
int count = 0;
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
count = count + 1;
if (count % 2 == 0) {
digitalWrite(13, HIGH); // Light ON for even count
} else {
digitalWrite(13, LOW); // Light OFF for odd count
}
delay(100);
}
In UnoArduSim:
See how LED reacts based on the counter value.
Experiment by changing the condition: count % 3 == 0.
@Sir Shungu 0775313131/0711371861
🟢 Challenge 1: Create a Light Pattern
Let students design their flashing LED pattern using:
Different delay times
Conditional logic
A mix of digitalWrite() instructions
Notes
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
@Sir Shungu 0775313131/0711371861
🎯 Servo Motor Exercise Pack – UnoArduSim Edition
Note: UnoArduSim simulates servo control using pulse signals on digital pins. These exercises
keep wiring simple and focus on the Servo library.
🟢 Exercise 1: Basic Servo Sweep
Objective: Move a servo smoothly from 0° to 180° and back.
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // Connect servo to pin 9
}
void loop() {
for (int pos = 0; pos <= 180; pos++) {
myServo.write(pos);
delay(15); // Smooth motion
}
for (int pos = 180; pos >= 0; pos--) {
myServo.write(pos);
delay(15);
}
}
🔍 In UnoArduSim:
Watch the signal output on pin 9.
Students can change delay(15) to delay(5) to speed up the sweep.
@Sir Shungu 0775313131/0711371861
🟢 Exercise 2: Targeted Positioning
Objective: Move the servo to set angles using conditional logic.
#include <Servo.h>
Servo myServo;
int angle = 0;
void setup() {
myServo.attach(9);
}
void loop() {
angle = 90; // Point to center
myServo.write(angle);
delay(1000);
angle = 45; // Turn left
myServo.write(angle);
delay(1000);
angle = 135; // Turn right
myServo.write(angle);
delay(1000);
}
🔍 Learner Challenge:
Add their own angles to create a motion sequence.
Label each position like “Left”, “Center”, “Right”.
Notes
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
@Sir Shungu 0775313131/0711371861
🔵 Exercise 3: Angle Based on Counter (Logic Flow)
Objective: Use a counter to change servo direction on loop.
#include <Servo.h>
Servo myServo;
int count = 0;
void setup() {
myServo.attach(9);
}
void loop() {
count = count + 1;
if (count % 2 == 0) {
myServo.write(30); // Left lean
} else {
myServo.write(150); // Right lean
}
delay(1000);
}
🎯 Why it matters:
Shows logic triggers based on data.
Teaches how servo actions can depend on conditions.
💡 Challenge Activity: Build a Servo Traffic Arm
Goal: Simulate a traffic gate opening and closing.
Servo goes from 0° (closed) to 90° (open)
Add a counter that toggles it every few seconds
Let learners modify timing and angle ranges
Notes
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
@Sir Shungu 0775313131/0711371861
📘 Arduino LED Blinking Worksheet
Project Title: Blink an LED Using Arduino Uno
🎯 Objective
Build a simple circuit using an Arduino Uno and breadboard that turns an LED on and off every
half second.
🟢 Materials Checklist
Item Quantity ✓
Arduino Uno 1
Breadboard 1
LED (any color) 1
220Ω Resistor 1
Jumper wires 2
USB Cable 1
Computer w/ IDE 1
🛠️ Step-by-Step Instructions
Step 1: Circuit Setup
🔌 Wire your LED like this:
Connect anode (long leg) of LED to pin 13 of Arduino.
Connect cathode (short leg) of LED to one end of the resistor.
Connect other end of resistor to GND on Arduino.
📌 Use the breadboard to anchor the LED and resistor neatly.
@Sir Shungu 0775313131/0711371861
Step 2: Programming the Arduino
🖥️ Open Arduino IDE and enter this code:
void setup() {
pinMode(13, OUTPUT); // Set pin 13 as an output
}
void loop() {
digitalWrite(13, HIGH); // Turn LED ON
delay(500); // Wait 0.5 seconds
digitalWrite(13, LOW); // Turn LED OFF
delay(500); // Wait 0.5 seconds
}
Step 3: Upload and Test
✅ Connect the Arduino via USB.
✅ Select the board (Arduino Uno) and correct COM port in the IDE.
✅ Press Upload.
✅ Watch your LED blink at 1-second intervals.
🔍 Challenge Extensions
🏃 Faster Blink: Change delay(500) to delay(100).
💡 Dual Flash: Add extra LED on pin 12 and flash alternately.
🔀 Pattern Play: Design your own blink pattern using different delays.
@Sir Shungu 0775313131/0711371861
🚦 Traffic Light Simulation – Arduino Exercise Pack
🎯 Objective
Control three LEDs (red, green, and blue) in a
timed sequence to simulate real-world traffic
signals.
🟢 Materials Checklist
Item Quantity
Arduino Uno 1
Breadboard 1
Red LED 1
Green LED 1
Blue LED 1
220Ω Resistors 3
Jumper wires 6+
USB Cable 1
🔌 Wiring Instructions
Assign the LED colors to specific digital pins:
🔴 Red LED → Pin 8
🧰 Green LED → Pin 9
🔵 Blue LED → Pin 10
Each LED connects to its own 220Ω resistor and then to GND.
@Sir Shungu 0775313131/0711371861
🟢 Exercise 1: Simple Sequential Blink
void setup() {
pinMode(8, OUTPUT); // Red
pinMode(9, OUTPUT); // Green
pinMode(10, OUTPUT); // Blue
}
void loop() {
digitalWrite(8, HIGH); // Red ON
delay(1000);
digitalWrite(8, LOW);
digitalWrite(9, HIGH); // Green ON
delay(1000);
digitalWrite(9, LOW);
digitalWrite(10, HIGH); // Blue ON
delay(1000);
digitalWrite(10, LOW);
}
🟢 Exercise 2: Traffic Light Logic
Red → Green → Blue (as pedestrian indicator or warning)
void setup() {
pinMode(8, OUTPUT); // Red
pinMode(9, OUTPUT); // Green
pinMode(10, OUTPUT); // Blue
}
void loop() {
digitalWrite(8, HIGH); // Stop
delay(3000);
digitalWrite(8, LOW);
digitalWrite(9, HIGH); // Go
delay(3000);
digitalWrite(9, LOW);
digitalWrite(10, HIGH); // Caution or Pedestrian signal
delay(2000);
digitalWrite(10, LOW);
}
@Sir Shungu 0775313131/0711371861
🔵 Exercise 3: Blink Blue as Warning
Enhance realism by blinking blue light before changing to red.
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
digitalWrite(9, HIGH); // Green ON
delay(3000);
digitalWrite(9, LOW);
for (int i = 0; i < 3; i++) {
digitalWrite(10, HIGH); // Blue blink
delay(500);
digitalWrite(10, LOW);
delay(500);
}
digitalWrite(8, HIGH); // Red ON
delay(3000);
digitalWrite(8, LOW);
}
🟢 Challenge Extension
Add a button input to simulate a pedestrian requesting to cross.
Introduce serial prints to show which light is active.
Replace delays with millis() for advanced timing control.
@Sir Shungu 0775313131/0711371861
💡 2-by-2 Combination Exercise
Title: Blinking Lights & Buzzing Beats – A Robotics Rhythm Game
Goal: Control an LED and buzzer to blink/beep twice each, repeatedly.
🟢 Materials Needed
Component Quantity
Arduino Uno 1
Breadboard 1
LED (any color) 1
220Ω Resistor 1
Active Buzzer 1
Jumper Wires 4–6
🔌 Wiring Guide
LED → Digital Pin 8 → GND via 220Ω resistor
Buzzer → Digital Pin 9 → GND
🟢💻 Code: 2-by-2 Combination
void setup() {
pinMode(8, OUTPUT); // LED
pinMode(9, OUTPUT); // Buzzer
}
void loop() {
// Blink LED twice
for (int i = 0; i < 2; i++) {
digitalWrite(8, HIGH);
delay(200);
digitalWrite(8, LOW);
delay(200);
}
// Beep Buzzer twice
for (int i = 0; i < 2; i++) {
digitalWrite(9, HIGH);
delay(200);
digitalWrite(9, LOW);
delay(200);
}
// Short pause before repeating
delay(500);}
@Sir Shungu 0775313131/0711371861
🔍 Observations
LED flashes twice → buzzer buzzes twice → repeat.
Adjust delay(200) to speed up or slow down.
Changing the loop count (i < 2) gives different rhythm combos.
🟢 Student Challenge:
Invent your own rhythmic combos!
Here are a few idea starters:
3 LED blinks + 1 buzz
Alternating: LED → buzzer → LED → buzzer
Create a Morse-style signal or musical beat
Add another LED or buzzer to make a duet!
Give it a creative name, like The Double Flash Rumble or BeatBlink 3000. 🎶⚡
@Sir Shungu 0775313131/0711371861