analogRead(leftSensor)
Reads reflected light from the left sensor.
Use two analog sensors to make basic line-following motor decisions.
Combine sensor thresholds and motor decisions for line following robots.
Wire left and right sensors to A0 and A1.
Wire motor driver speed inputs to D5 and D6.
Tune lineThreshold for the track and sensor height.
Reduce one side speed when that sensor sees the line.
These are the sections learners should understand before changing the sketch.
Reads reflected light from the left sensor.
Separates line color from floor color.
Changes motor speed to steer.
Use this first table for the exact sample wiring, then use the board-family table when moving the sketch to another Arduino board.
| Code name | Sample pin | Mode | Connect to | Note |
|---|---|---|---|---|
| left/right sensors | A0, A1 | analog input | IR reflectance sensor outputs | Tune lineThreshold for your surface. |
| left/right motors | D5, D6 | PWM OUTPUT | Motor driver speed inputs | Use separate motor power and common GND. |
The code names stay the same; only the physical board pins may change by family. Always confirm with the board silkscreen when using clones or special variants.
| Board family | Digital | PWM | Analog | I2C | SPI | Interrupt |
|---|---|---|---|---|---|---|
| Uno / Nano / Pro MiniDefault target for these samples. | D0-D13 | D3, D5, D6, D9, D10, D11 | A0-A5 | A4 SDA, A5 SCL | D10 SS, D11 MOSI, D12 MISO, D13 SCK / ICSP | D2, D3 |
| Mega 2560Best for many sensors or multiple serial ports. | D0-D53 | D2-D13, D44-D46 | A0-A15 | D20 SDA, D21 SCL | D50 MISO, D51 MOSI, D52 SCK, D53 SS / ICSP | D2, D3, D18, D19, D20, D21 |
| Leonardo / MicroUSB serial can behave differently because the main MCU handles USB. | D0-D13 | D3, D5, D6, D9, D10, D11, D13 | A0-A5 plus extra analog-capable pins by board | D2 SDA, D3 SCL | ICSP header | D0, D1, D2, D3, D7 |
| Nano Every / Uno WiFi Rev2Check the board package pinout for exact PWM labels. | D0-D13 | PWM-marked digital pins | A0-A7 on Nano Every, A0-A5 on Uno WiFi Rev2 | SDA/SCL marked pins | ICSP/SPI marked pins | Use pins supported by digitalPinToInterrupt() |
| Uno R4 Minima / Uno R4 WiFi5V logic board; still confirm shield/library compatibility. | D0-D13 | PWM-marked digital pins | A0-A5 | SDA/SCL marked pins | ICSP/SPI marked pins | Use digitalPinToInterrupt(pin) |
| Due3.3V logic only; protect pins from 5V sensors. | D0-D53 | PWM-marked digital pins | A0-A11 | SDA/SCL and SDA1/SCL1 | SPI header | Use digitalPinToInterrupt(pin) |
| MKR / Nano 33 family3.3V logic. Some AVR-only libraries may need alternatives. | Board-marked digital pins | PWM-marked pins | Board-marked analog pins | SDA/SCL marked pins | SPI marked pins | Use digitalPinToInterrupt(pin) |
/*
Roboda verified Arduino sample 0025
Feature: Line Follow Logic
Generated for online build, classroom practice, and hardware upload testing.
*/
const byte leftSensor = A0;
const byte rightSensor = A1;
const byte leftMotor = 5;
const byte rightMotor = 6;
const int lineThreshold = 260;
void setup() {
pinMode(leftMotor, OUTPUT);
pinMode(rightMotor, OUTPUT);
}
void loop() {
int left = analogRead(leftSensor);
int right = analogRead(rightSensor);
analogWrite(leftMotor, left > lineThreshold ? 120 : 210);
analogWrite(rightMotor, right > lineThreshold ? 120 : 210);
delay(20);
}
Not a member yet? Register now
Are you a member? Login now
New messages appear in the Finite LiveChat Ops Android app.
Rate the lesson quality, diagrams, and support experience.