Top 10 Arduino Projects for ICT Kerala — The World of Robotics
Prepared by Protomech Robotics. Each project includes a CSS/SVG connection diagram, step-by-step wiring, required components, ready-to-paste Arduino code (copy button) and real-world application ideas — perfect for ICT Kerala Class 10, CBSE, ICSE and NEP-based STEM classes.
1. LED Blinking
Step-by-step connection
- Connect Arduino Pin 13 to one end of the 220Ω resistor.
- Connect the other end of the resistor to the LED anode (long leg).
- Connect the LED cathode (short leg) to GND on Arduino.
- Arduino UNO
- LED
- 220Ω resistor
- Breadboard & jumper wires
// LED Blinking
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Real-world application: Indicator lights, simple status LEDs on appliances and prototypes. Great first exercise for timing / control basics.
2. Traffic Light Simulation
Step-by-step connection
- Connect Red LED anode → **pin 13** via 220Ω resistor; cathode → GND.
- Connect Yellow LED anode → **pin 12** via resistor; cathode → GND.
- Connect Green LED anode → **pin 11** via resistor; cathode → GND.
- Arduino UNO
- Red, Yellow, Green LEDs
- 3 × 220Ω resistors
- Breadboard & jumper wires
// Traffic Light Simulation
int red = 13;
int yellow = 12;
int green = 11;
void setup() {
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
digitalWrite(red, HIGH); delay(5000); digitalWrite(red, LOW);
digitalWrite(yellow, HIGH); delay(2000); digitalWrite(yellow, LOW);
digitalWrite(green, HIGH); delay(5000); digitalWrite(green, LOW);
}
Real-world application: Model traffic intersections, teach road rules & sequencing, simulate pedestrian crossings in class demonstrations.
3. Light Controlled LED (LDR)
Step-by-step connection
- Make a voltage divider: connect LDR between 5V and A0.
- Connect a 10kΩ resistor between A0 and GND.
- Optionally connect an LED to a digital pin to indicate darkness.
- Arduino UNO
- LDR (photoresistor)
- 10kΩ resistor
- LED + 220Ω resistor (optional)
// LDR Light Controlled LED
int ldrPin = A0;
int ledPin = 13;
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
int value = analogRead(ldrPin);
Serial.println(value);
if(value < 300) digitalWrite(ledPin, HIGH);
else digitalWrite(ledPin, LOW);
delay(500);
}
Real-world application: Automatic street light models, energy-saving lighting controls and light-level based triggers.
4. Ultrasonic Distance Measurement (HC-SR04)
Step-by-step connection
- VCC → 5V, GND → GND.
- TRIG → pin 9, ECHO → pin 10.
- Open Serial Monitor to view distance (cm).
- Arduino UNO
- HC-SR04 ultrasonic sensor
- Jumper wires
// HC-SR04 Distance Measurement
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance (cm): ");
Serial.println(distance);
delay(500);
}
Real-world application: Parking sensors, obstacle detection for robots, and proximity alarms.
5. Temperature Sensor (LM35) Monitoring
Step-by-step connection
- LM35 pinout: VCC → 5V, OUT → A0, GND → GND.
- Open Serial Monitor to read Celsius temperature values.
- Arduino UNO
- LM35 sensor
- Jumper wires
// LM35 Temperature Monitor
int tempPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(tempPin);
float voltage = reading * 5.0 / 1024.0;
float tempC = voltage * 100.0;
Serial.print("Temperature (°C): ");
Serial.println(tempC);
delay(1000);
}
Real-world application: Room / fridge monitoring, greenhouse sensors, basic HVAC experiments.
6. Servo Motor Control
Step-by-step connection
- Servo VCC → 5V, GND → GND.
- Servo signal wire → pin 9 (PWM).
- Use separate power if servo draws more current (common GND required).
- Arduino UNO
- SG90 or similar servo
- Jumper wires
// Servo control example
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(0); delay(1000);
myservo.write(90); delay(1000);
myservo.write(180); delay(1000);
}
Real-world application: Pan/tilt camera heads, robotic arms, small actuators in automation projects.
7. Buzzer Alarm with Push Button
Step-by-step connection
- Push button → one side to pin 7, other side to GND. Use internal pull-up.
- Buzzer positive → pin 8, negative → GND.
- Arduino UNO
- Piezo buzzer
- Push button
- 10kΩ resistor (if not using internal pull-up)
// Buzzer alarm with button
int buzzer = 8;
int button = 7;
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(button, INPUT_PULLUP);
}
void loop() {
if (digitalRead(button) == LOW) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
}
Real-world application: Door alarms, classroom demo alarms, simple event notifications.
8. IR Remote Controlled LED
Step-by-step connection
- IR receiver VCC → 5V, GND → GND, OUT → pin 11.
- LED anode → pin 13 via resistor; cathode → GND.
- Install IRremote library in Arduino IDE before uploading the code.
- Arduino UNO
- IR receiver module (e.g., TSOP)
- IR remote
- LED + resistor
// IR Remote Controlled LED (requires IRremote library)
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 13;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(led, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
// Replace the hex values below with your remote's codes (use Serial Monitor to read)
if (results.value == 0xFFA25D) digitalWrite(led, HIGH);
if (results.value == 0xFFE21D) digitalWrite(led, LOW);
irrecv.resume();
}
}
Real-world application: Basic remote control for lights, TV/AC-like device demos and smart home learning modules.
9. Soil Moisture Based Irrigation System
Step-by-step connection
- Soil sensor VCC → 5V, GND → GND, Analog OUT → A0.
- Relay IN → digital pin (e.g., 8), Relay VCC → 5V, GND → GND.
- Relay switches the pump power (mains or battery) — use proper isolation and safety when switching mains.
- Arduino UNO
- Soil moisture sensor
- Relay module (with transistor/optocoupler)
- Small water pump and tubing
// Soil moisture based irrigation
int sensorPin = A0;
int pumpPin = 8;
void setup() {
pinMode(pumpPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = analogRead(sensorPin);
Serial.println(val);
if (val < 400) { // dry threshold — tune for your soil
digitalWrite(pumpPin, HIGH); // switch relay ON
} else {
digitalWrite(pumpPin, LOW); // switch relay OFF
}
delay(2000);
}
Real-world application: Small-scale automated irrigation for home gardens and school labs (teach sensor calibration & water-conservation logic).
10. Obstacle Avoiding Robot
Step-by-step connection
- HC-SR04: VCC → 5V, GND → GND, TRIG → pin 9, ECHO → pin 10.
- Connect L298N logic VCC to 5V, GND to GND, supply motors with separate battery on VIN (common GND).
- Motor driver input pins → Arduino digital pins (example in code: IN1-IN4 = 2,3,4,5).
- Arduino UNO
- L298N Motor Driver (or similar)
- 2 × DC motors & wheels
- HC-SR04 sensor
- Battery pack & chassis
// Obstacle avoiding robot (simple logic)
int trig = 9, echoPin = 10;
int in1=2, in2=3, in3=4, in4=5;
long duration; int distance;
void setup(){
pinMode(trig,OUTPUT); pinMode(echoPin,INPUT);
pinMode(in1,OUTPUT); pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT); pinMode(in4,OUTPUT);
}
void loop(){
digitalWrite(trig, LOW); delayMicroseconds(2);
digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034/2;
if(distance < 20){
// obstacle -> turn right (example)
digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
delay(400);
} else {
// move forward
digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}
delay(100);
}
Real-world application: Autonomous robots, delivery bots, and obstacle-aware systems for indoor navigation demos.