Простейший робот двигающийся по полосе
- Войдите на сайт для отправки комментариев
Пнд, 18/07/2016 - 23:37
Первый день отпуска. Решил собрать для сына простую машинку, двигающуюся по полосе. В принципе хотел что-то подобное еще год назад сделать, но все руки не доходили. Вообщем вот:
#define PWMA 9 #define AIN1 7 #define AIN2 8 #define PWMB 3 #define BIN1 5 #define BIN2 4 #define STBY 6 int analogPin0 = 14; int analogPin1 = 15; int val0 = 0; // переменная для хранения считываемого значения int val1 = 0; void setup() { /* Настроить все 7 выводов на выходы, идущие к драйверу TB6612FNG */ pinMode(PWMA,OUTPUT); pinMode(AIN1,OUTPUT); pinMode(AIN2,OUTPUT); pinMode(PWMB,OUTPUT); pinMode(BIN1,OUTPUT); pinMode(BIN2,OUTPUT); pinMode(STBY,OUTPUT); digitalWrite(STBY,HIGH); } void loop() { val0 = analogRead(analogPin0); // считываем значение val1 = analogRead(analogPin1); if (val0 < 100 && val1 < 100) { goForward(); } if (val0 > 100 && val1 < 100) { rotateLeft(); } if (val0 < 100 && val1 > 100) { rotateRight(); } } void goForward () { digitalWrite (AIN1,HIGH); digitalWrite (AIN2,LOW); analogWrite(PWMA,150); digitalWrite (BIN1,HIGH); digitalWrite (BIN2,LOW); analogWrite(PWMB,150); } void rotateRight () { digitalWrite (AIN1,HIGH); digitalWrite (AIN2,LOW); analogWrite(PWMA,100); digitalWrite (BIN1,LOW); digitalWrite (BIN2,HIGH); analogWrite(PWMB,200); } void rotateLeft () { digitalWrite (AIN1,LOW); digitalWrite (AIN2,HIGH); analogWrite(PWMA,200); digitalWrite (BIN1,HIGH); digitalWrite (BIN2,LOW); analogWrite(PWMB,100); }
Ну и видео https://youtu.be/74fTR82MlJY