Простейший робот двигающийся по полосе
- Войдите на сайт для отправки комментариев
Пнд, 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