লাইন ফলোয়ার রোবটLine Follower Robot using Arduino
দুইটা IR sensor মেঝের দিকে তাকিয়ে থাকে। সাদা মেঝে আলো ফেরত দেয় (OUT LOW), কালো লাইন দেয় না (OUT HIGH)। বাম sensor লাইন পেলে Arduino বাম চাকা থামায়, রোবট ঘুরে লাইনে ফিরে আসে। Simulator এ প্রতিটা sensor অন (সাদা) বা অফ (কালো) করে চাকা কীভাবে ঘোরে দেখো।
Two IR sensors look down at the floor. White reflects the light (OUT LOW), the black line does not (OUT HIGH). When the left sensor finds the line the Arduino stops the left wheel so the robot turns back onto it. In the simulator, switch each sensor on (white floor) or off (black line) and watch the wheels.
সার্কিট ডায়াগ্রাম · Circuit diagram
যা যা লাগবে · Parts you need
- 1 × Arduino Uno Arduino Uno
- 2 × IR obstacle sensor (FC-51) IR বাধা সেন্সর (FC-51)
- 1 × Motor driver L298N মোটর ড্রাইভার L298N
- 2 × Gear motor (yellow TT) গিয়ার মোটর (হলুদ TT)
- 1 × 9 V battery ৯ V ব্যাটারি
- 17 × Jumper wires জাম্পার তার
সব part একসাথে · All parts in one box: line follower robot kit complete
তার লাগানো · Wiring
| IR obstacle sensor (FC-51) VCC | → | Arduino Uno 5V |
| IR obstacle sensor (FC-51) GND | → | Arduino Uno GND |
| IR obstacle sensor (FC-51) OUT | → | Arduino Uno D2 |
| IR obstacle sensor (FC-51) VCC | → | Arduino Uno 5V |
| IR obstacle sensor (FC-51) GND | → | Arduino Uno GND |
| IR obstacle sensor (FC-51) OUT | → | Arduino Uno D3 |
| Motor driver L298N IN1 | → | Arduino Uno D8 |
| Motor driver L298N IN2 | → | Arduino Uno D9 |
| Motor driver L298N IN3 | → | Arduino Uno D10 |
| Motor driver L298N IN4 | → | Arduino Uno D11 |
| 9 V battery + | → | Motor driver L298N 12V |
| Motor driver L298N GND | → | 9 V battery - |
| Motor driver L298N GND | → | Arduino Uno GND.3 |
| Motor driver L298N OUT1 | → | Gear motor (yellow TT) + |
| Motor driver L298N OUT2 | → | Gear motor (yellow TT) - |
| Motor driver L298N OUT3 | → | Gear motor (yellow TT) + |
| Motor driver L298N OUT4 | → | Gear motor (yellow TT) - |
Code (Arduino C++)
// Line follower: two IR sensors look down at the floor, one each side of a black line.
// White floor reflects the IR light -> OUT is LOW.
// Black line swallows it -> OUT is HIGH.
const int leftIR = 2, rightIR = 3;
const int IN1 = 8, IN2 = 9, IN3 = 10, IN4 = 11;
String last = "";
void motors(int left, int right) { // HIGH = forward, LOW = stop
digitalWrite(IN1, left); digitalWrite(IN2, LOW);
digitalWrite(IN3, right); digitalWrite(IN4, LOW);
}
void say(String s) { // print only when the action changes
if (s != last) { Serial.println(s); last = s; }
}
void setup() {
pinMode(leftIR, INPUT);
pinMode(rightIR, INPUT);
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool leftOnLine = digitalRead(leftIR) == HIGH;
bool rightOnLine = digitalRead(rightIR) == HIGH;
if (!leftOnLine && !rightOnLine) { motors(HIGH, HIGH); say("straight"); }
else if (leftOnLine && !rightOnLine) { motors(LOW, HIGH); say("turn left"); }
else if (!leftOnLine && rightOnLine) { motors(HIGH, LOW); say("turn right"); }
else { motors(LOW, LOW); say("stop: both sensors see black"); }
delay(20);
}