// подключение библиотеки для работы с ИК-приёмником
#include <IRremote.h>
// указание пина, к которому подключен ИК-приёмник
const byte IR_RECEIVE_PIN = 8;
void setup()
{
Serial.begin(9600);
//активация режима приема ИК-сигналов
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
//правый
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
//левый
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void forward(int time)
{//вперед
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay(time);
}
void backward(int time)
{//назад
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(9, 0);
digitalWrite(10, 1);
delay(time);
}
void stop(int time)
{//стоп
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(time);
}
void left(int time)
{//налево
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(9, 0);
digitalWrite(10, 1);
delay(time);
}
void right(int time)
{//направо
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay(time);
}
void loop()
{
// проверка получения сигнала, // если сигнал пришёл, то выполняется код
if (IrReceiver.decode())
{
// вывод в монитор порта сырых данных
// в десятичном формате
Serial.println(IrReceiver.decodedIRData.decodedRawData);
// вывод справочной информации
//IrReceiver.printIRResultShort(&Serial);
// подготовка приемника к приему следующего сигнала
IrReceiver.resume();
if(IrReceiver.decodedIRData.decodedRawData==4049)
{
forward(300);
stop(10);
}
if(IrReceiver.decodedIRData.decodedRawData==4051)
{
backward(300);
stop(10);
}
if(IrReceiver.decodedIRData.decodedRawData==4052)
{
left(100);
stop(10);
}
if(IrReceiver.decodedIRData.decodedRawData==4050)
{
right(100);
stop(10);
}
}
}