- Pasang motor ke sisi dalam sasis dengan kencang, kabel menghadap ke dalam
- Pasang roda ke motor
- Pasang roda bola ke depan sasis
- Tempelkan breadboard ke bagian depan (kupas sticker), yang terdiri atas:
- ESP8266: mikrokontroler
- DRV8833: motor driver
- saklar tekan
- kabel daya ke baterai (merah dan hitam)
- Sambungkan kabel motor kanan dan kiri ke motor driver di breadboard
- OUT1: kanan hijau
- OUT2: kanan kuning
- OUT3: kiri hijau
- OUT4: kiri kuning
- Tempelkan kotak baterai ke bagian belakang (kupas sticker)
- Tempelkan konektor kabel ke sisi kanan-depan sasis
- Sambungkan kabel daya dari breadboard ke baterai melalui konektor
- Pasang sensor garis ke bagian depan sasis dengan cable-tie
- Sambungkan sensor garis ke mikrokontroler
- VCC: 3V3
- GND: G
- S1: A0
- S2: D3
- S3: D2
- S4: D1
- S5: D0
- Buat lintasan di lantai dengan menggunakan lakban hitam, hindari belokan tajam
- Jalankan robot dengan menekan saklar, tekan lagi saklar untuk mematikan
Berikut kode program robot yang dapat dimodifikasi dan diunggah dengan Arduino IDE. Panduan pemrograman Arduino dengan ESP8266 dapat dilihat di https://docs.google.com/document/d/1_0z1mL4A2LpL8mvHrNIFJj_17V2OeBbMVXgDRVb_39k/edit?usp=sharing.
#define AIN1 D5
#define AIN2 D6
#define BIN1 D8
#define BIN2 D7
bool LL, L, C, R, RR;
void setup() {
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
pinMode(D0, INPUT);
pinMode(D1, INPUT);
pinMode(D2, INPUT);
pinMode(D3, INPUT);
}
void loop() {
RR = !digitalRead(D0);
R = !digitalRead(D1);
C = !digitalRead(D2);
L = !digitalRead(D3);
LL = !(analogRead(A0) > 300);
if (C)
forward(2);
else if (L || LL)
left(2);
else if (R || RR)
right(2);
else
stop(2);
}
void stop(int ms) {
digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW);
digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW);
delay(ms);
}
void forward(int ms) {
digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW);
digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW);
delay(ms);
}
void left(int ms) {
digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW);
digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW);
delay(ms);
}
void right(int ms) {
digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW);
digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW);
delay(ms);
}