Простейший робот двигающийся по полосе

valter61
Offline
Зарегистрирован: 20.03.2015

Первый день отпуска. Решил собрать для сына простую машинку, двигающуюся по полосе. В принципе хотел что-то подобное еще год назад сделать, но все руки не доходили. Вообщем вот:

#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); 
}
 

 

valter61
Offline
Зарегистрирован: 20.03.2015

valter61
Offline
Зарегистрирован: 20.03.2015

valter61
Offline
Зарегистрирован: 20.03.2015

Ну и видео https://youtu.be/74fTR82MlJY