#include <IRremote.h>
int RECV_PIN = A2;
int PinVL =9; //вперед левый
int PinNL =10; //назад левый
int PinVR =11; //вперед правый
int PinNR =12; //назад правый
int PinLed =13; //индикатор программы
int PinSL =0; //сенсор левый
int PinSR =1; //сенсор правый
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Запуск приемника
analogReference(DEFAULT);
pinMode(PinVL, OUTPUT); //УСТАНОВКА КАК ВЫХОД
pinMode(PinNL, OUTPUT);
pinMode(PinVR, OUTPUT);
pinMode(PinNR, OUTPUT);
pinMode(PinLed, OUTPUT);
}
void motor(int A, int B, int C, int D)
{
digitalWrite(PinVL,A);
digitalWrite(PinNL,B);
digitalWrite(PinVR,C);
digitalWrite(PinNR,D);
}
void loop() {
int Speed = 500;
int Speedd = map(Speed, 1000, 0, 255, 0);
if (irrecv.decode(&results)) {
Serial.println(results.value);
if (results.value == 2 || results.value == 2050){motor(HIGH,LOW,HIGH,LOW);delay(200);motor(LOW,LOW,LOW,LOW);}//вперед
if (results.value == 8 || results.value == 2056){motor(LOW,HIGH,LOW,HIGH);delay(200);motor(LOW,LOW,LOW,LOW);}//назад
if (results.value == 4 || results.value == 2052){motor(HIGH,LOW,LOW,HIGH);delay(100);motor(LOW,LOW,LOW,LOW);}//вращение в лево
if (results.value == 6 || results.value == 2054){motor(LOW,HIGH,HIGH,LOW);delay(100);motor(LOW,LOW,LOW,LOW);}//вращение в право
if (results.value == 1 || results.value == 2049){motor(HIGH,LOW,Speedd,LOW);delay(200);motor(LOW,LOW,LOW,LOW);}//вперед в лево
if (results.value == 3 || results.value == 2051){motor(Speedd,LOW,HIGH,LOW);delay(200);motor(LOW,LOW,LOW,LOW);}//вперед в право
if (results.value == 7 || results.value == 2055){motor(LOW,HIGH,LOW,Speedd);delay(200);motor(LOW,LOW,LOW,LOW);}//назад в лево
if (results.value == 9 || results.value == 2057){motor(LOW,Speedd,LOW,HIGH);delay(200);motor(LOW,LOW,LOW,LOW);}//назад в право
if (results.value == 32 || results.value == 2080){
digitalWrite(PinLed,HIGH);
{
int signalL=analogRead(PinSL);
int signalR=analogRead(PinSR);
motor(LOW,LOW,LOW,LOW);
if (signalL<470 && signalR<470) //если нет препятствий полный вперед
{
motor(HIGH,LOW,HIGH,LOW);
delay (200);
motor(LOW,LOW,LOW,LOW);
delay (1);
}
if (signalL>800 && signalR>800) //если препятствие прямо по курсу,
{ //назад и разворот
motor (LOW,HIGH,LOW,HIGH);
delay(500);
motor(LOW,LOW,LOW,LOW);
delay (1);
motor(HIGH,LOW,LOW,HIGH);
delay(400);
}
else
if (signalL<600 && signalR>600) //если препятствие слева, левый вперед
{
int roatLr = map(signalL, 1023, 450, 255, 0);
motor (roatLr,LOW,LOW,roatLr);
delay(50);
}
else
if (signalL>600 && signalR<600) //если препятствие справа, правый вперед
{
int roatRr = map(signalR, 1023, 450, 255, 0);
motor (LOW,roatRr,roatRr,LOW);
delay(50);
}
}
digitalWrite(PinLed,HIGH);}
irrecv.resume(); // Получаем следующее значение
} //окончание if ir
}//окончание loop