Preview build — page text is a draft awaiting human review. Code badges come from real compiles. The flasher is real but not yet hardware-tested; the Playground is still a preview.
लाइन फ़ॉलोअर रोबोट: the finished build
UnoRobotics

दो IR सेंसर वाला लाइन फ़ॉलोअर रोबोट (Arduino Uno)

दो IR सेंसर इसे काली लाइन पर टिकाए रखते हैं।

कठिनाई
Medium
समय
3 घंटे
पार्ट्स की लागत
₹1,550 · $18
Verified — core avr 1.8.8, 3 Nov 2026Compile-only

सामुदायिक ड्राफ़्ट — गलती बताएं

पार्ट्स लिस्ट

पार्टसंख्यालगभगखरीदें
Arduino Uno R3 (compatible)1₹450खरीदें Arduino Uno R3 (compatible)
L298N dual motor driver1₹150खरीदें L298N dual motor driver
2WD robot chassis kit with 2 BO gear motors and wheels1₹450खरीदें 2WD robot chassis kit with 2 BO gear motors and wheels
2× 18650 Li-ion cells + holder with switch (7.4 V)1₹350खरीदें 2× 18650 Li-ion cells + holder with switch (7.4 V)
Jumper wires1₹40खरीदें Jumper wires
TCRT5000 IR reflective sensor module2₹80खरीदें TCRT5000 IR reflective sensor module
Black insulation tape for the track1₹30खरीदें Black insulation tape for the track
कुल₹1,550

एफ़िलिएट सूचना: “खरीदें” लिंक से FlashReady को बिना अतिरिक्त लागत के छोटा कमीशन मिल सकता है। कीमतें अनुमानित हैं।

वायरिंग

Arduino Uno R3Only the pins used are shown · 5 V logic2× 18650 Li-ion पैक (7.4 V)TCRT5000 IR reflective sensor moduleTCRT5000 IR reflective sensor module #2L298N dual H-bridge motor driver+-5VGNDA0A1A2A3D2D3D5D6VCCGNDDOAO (not connected)VCCGNDDOAO (not connected)IN1IN2IN3IN4ENAENB12VGND5VOUT1 → बायाँ मोटर (+)OUT2 → बायाँ मोटर (−)OUT3 → दायाँ मोटर (+)OUT4 → दायाँ मोटर (−)
Every connection
Arduino Uno R3Part · pinWireNotes
—L298N dual H-bridge motor driver · OUT1—To बायाँ मोटर (+) (not drawn)
—L298N dual H-bridge motor driver · OUT2—To बायाँ मोटर (−) (not drawn)
—L298N dual H-bridge motor driver · OUT3—To दायाँ मोटर (+) (not drawn)
—L298N dual H-bridge motor driver · OUT4—To दायाँ मोटर (−) (not drawn)
5VTCRT5000 IR reflective sensor module · VCCred
GNDTCRT5000 IR reflective sensor module · GNDblack
D2TCRT5000 IR reflective sensor module · DOyellowबायाँ सेंसर
5VTCRT5000 IR reflective sensor module #2 · VCCred
GNDTCRT5000 IR reflective sensor module #2 · GNDblack
D3TCRT5000 IR reflective sensor module #2 · DOgreenदायाँ सेंसर
D5L298N dual H-bridge motor driver · ENAorangeबाएँ मोटर की PWM स्पीड (ENA jumper हटा दें)
A0L298N dual H-bridge motor driver · IN1yellow
A1L298N dual H-bridge motor driver · IN2green
D6L298N dual H-bridge motor driver · ENBpurpleदाएँ मोटर की PWM स्पीड (ENB jumper हटा दें)
A2L298N dual H-bridge motor driver · IN3blue
A3L298N dual H-bridge motor driver · IN4cyan
5VL298N dual H-bridge motor driver · 5VredL298N का regulator Uno के 5V पिन को पावर देता है (5V-EN jumper लगा रहे, बैटरी ≤ 12 V); बैटरी का + 12V टर्मिनल पर
GNDL298N dual H-bridge motor driver · GNDblackसाझा ground: बैटरी −, L298N और Uno
2× 18650 Li-ion पैक (7.4 V) · +L298N dual H-bridge motor driver · 12Vredबैटरी होल्डर के स्विच से होकर। L298N लगभग 2 V गिराता है, इसलिए मोटरों को ~5.4 V मिलता है
2× 18650 Li-ion पैक (7.4 V) · -L298N dual H-bridge motor driver · GNDblackबैटरी −, L298N GND और Uno GND सब यहीं जुड़ते हैं

बोर्ड की ख़ास बातें: दोनों सेंसर ज़मीन से 5–10 mm ऊपर, पहियों से थोड़ा आगे लगाएँ, और टेप की चौड़ाई से थोड़ा ज़्यादा फ़ासले पर — ताकि रोबोट बीच में हो तो दोनों को सफ़ेद दिखे। हर मॉड्यूल का trimmer तब तक घुमाएँ जब तक उसकी LED ठीक सफ़ेद से काले पर जाते समय बदले। Li-ion 18650 सेल short होने या ज़्यादा डिस्चार्ज होने पर आग पकड़ सकते हैं: स्विच वाला होल्डर, protected सेल और सही Li-ion चार्जर इस्तेमाल करें, और कार को चार्ज होते समय कभी अकेला न छोड़ें।

कोड

line-follower-robot.inoArduino C++Open in PlaygroundOpen in PlaygroundFlash
// Line follower robot — Arduino Uno + 2× TCRT5000 IR modules + L298N + 2 DC gear motors.
// The two sensors straddle a black line: the side that sees black steers back towards it.
// Left TCRT5000 DO → D2, right TCRT5000 DO → D3.
// L298N ENA → D5, IN1 → A0, IN2 → A1, ENB → D6, IN3 → A2, IN4 → A3.
constexpr uint8_t LEFT_SENSOR = 2, RIGHT_SENSOR = 3;
constexpr uint8_t ENA = 5, IN1 = A0, IN2 = A1;   // left motor
constexpr uint8_t ENB = 6, IN3 = A2, IN4 = A3;   // right motor
// Most TCRT5000 modules pull DO LOW over a white (reflective) surface and HIGH over black.
constexpr bool LINE_IS_HIGH = true;
constexpr uint8_t FAST = 160, TURN = 140;        // 0–255; the L298N loses ~2 V, so don't go too low

int lastTurn = 0;                                // -1 = last saw the line on the left, +1 = right

void motor(uint8_t en, uint8_t a, uint8_t b, int speed) {
  digitalWrite(a, speed >= 0 ? HIGH : LOW);
  digitalWrite(b, speed >= 0 ? LOW : HIGH);
  analogWrite(en, abs(speed));
}

void drive(int left, int right) {
  motor(ENA, IN1, IN2, left);
  motor(ENB, IN3, IN4, right);
}

bool onLine(uint8_t pin) {
  return (digitalRead(pin) == HIGH) == LINE_IS_HIGH;
}

void setup() {
  const uint8_t outputs[] = {ENA, IN1, IN2, ENB, IN3, IN4};
  for (uint8_t p : outputs) pinMode(p, OUTPUT);
  pinMode(LEFT_SENSOR, INPUT);
  pinMode(RIGHT_SENSOR, INPUT);
  drive(0, 0);
  delay(2000);                                   // time to put it down on the track
}

void loop() {
  bool left = onLine(LEFT_SENSOR), right = onLine(RIGHT_SENSOR);
  if (left && !right) {                          // line drifted left → pivot left
    drive(-TURN, TURN);
    lastTurn = -1;
  } else if (right && !left) {                   // line drifted right → pivot right
    drive(TURN, -TURN);
    lastTurn = 1;
  } else if (!left && !right) {                  // line between the sensors → straight on
    drive(FAST, FAST);
  } else {                                       // both on black: a junction or a wide bend —
    drive(lastTurn * TURN, -lastTurn * TURN);    // keep turning the way we last turned
  }
}

Compiled for uno on avr 1.8.8 · 3 Nov 2026

यह कैसे काम करता है

हर TCRT5000 ज़मीन पर infrared रोशनी डालता है और नापता है कि कितनी वापस लौटी। सफ़ेद सतह बहुत रोशनी लौटाती है, काला टेप बहुत कम; मॉड्यूल का comparator इसे DO पर साफ़ digital सिग्नल में बदल देता है, और trimmer से स्विच होने का पॉइंट सेट होता है।

दोनों सेंसर लाइन के दोनों तरफ़ रहते हैं। रोबोट बीच में हो तो दोनों को सफ़ेद दिखता है और वह सीधा चलता है। अगर लाइन खिसककर बाएँ सेंसर के नीचे आ जाए, तो रोबोट तब तक बाएँ घूमता है जब तक उस सेंसर को फिर सफ़ेद न दिखे; दायाँ सेंसर दूसरी तरफ़ यही करता है। यह लाइन फ़ॉलोअर का पुराना तरीका है, और यह उन मोड़ों पर भी लाइन पकड़े रहता है जहाँ एक सेंसर चूक जाता।

जब दोनों सेंसर को काला दिखे — कोई जंक्शन या बहुत तीखा मोड़ — तो रोबोट उसी तरफ़ घूमता रहता है जिधर पिछली बार घूमा था, और आमतौर पर इससे मोड़ पार हो जाता है।

L298N दोनों मोटर चलाता है; ENA और ENB पर PWM उनकी स्पीड तय करता है, और एक पहिया उल्टा घुमाने से रोबोट तेज़ी से अपनी जगह पर मुड़ता है। स्केच में दी स्पीड से शुरू करें, फिर अपने chassis और फ़र्श के हिसाब से ट्यून करें। मोटर 7.4 V Li-ion पैक से L298N के ज़रिए चलते हैं, और यही L298N Uno की 5 V लाइन को भी पावर देता है।

समस्या समाधान

यह लाइन की तरफ़ मुड़ने के बजाय उससे दूर मुड़ता है

सेंसर आपस में बदल गए हैं, या आपके मॉड्यूल उल्टा आउटपुट देते हैं। D2/D3 के तार आपस में बदलें, या LINE_IS_HIGH उलट दें।

मोड़ पर आगे निकल जाता है और लाइन खो देता है

FAST और TURN कम करें, सेंसर पहियों के axle के पास लाएँ, या चौड़ा टेप लगाएँ।

मोटर चलते ही Uno रीसेट हो जाता है

L298N लगभग 2 V गिराता है और मोटर चालू होते समय झटके से ज़्यादा करंट खींचते हैं। अच्छे, पूरे चार्ज सेल लगाएँ, 5V-EN jumper लगा रहने दें, और Uno के 5V और GND के बीच 470 µF कैपेसिटर जोड़ें।

आगे क्या करें

  • बीच में तीसरा सेंसर जोड़ें और तेज़ चक्कर के लिए proportional (PID) स्टीयरिंग इस्तेमाल करें।
  • ट्रैक पर रुकावट आने पर रुकने के लिए HC-SR04 जोड़ें।
  • Light gate से हर चक्कर का समय नापें और LCD पर दिखाएँ।

↑↓ to move · Enter to open