// Подключаем библиотеку для работы с ИК-приемником #include // Вход для ИК-приемника (Out) int RECV_PIN = 4; // Вход контактов микросхемы int EN1 = 5; int IN1 = 2; int IN2 = 3; // Переменные для хранения значений кнопок пульта unsigned long Up = 0xFF18E7; unsigned long Down = 0xFF4AB5; unsigned long Left = 0xFF10EF; unsigned long Right = 0xFF5AA5; unsigned long Ok = 0xFF38C7; unsigned long One = 0xFFA25D; unsigned long Two = 0xFF629D; unsigned long Three = 0xFFE21D; unsigned long Four = 0xFF22DD; unsigned long Five = 0xFF02FD; unsigned long Six = 0xFFC23D; unsigned long Seven = 0xFFE01F; unsigned long Eight = 0xFFA857; unsigned long Nine = 0xFF906F; unsigned long Zero = 0xFF9867; IRrecv irrecv(RECV_PIN); // Инициализируем подключение к ИК-приемнику на входе RECV_PIN decode_results results; // Получаем данные от пульта управления // Получаем данные от пульта управления void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Включаем ИК-приемник pinMode(EN1, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); digitalWrite(EN1, HIGH); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); } // Основной цикл void loop() { if (irrecv.decode(&results)) { Serial.print("[ИК] Получено значение - "); Serial.println(results.value, HEX); if( results.value == Up) { Serial.println("[Двигатель] Движние вперед"); analogWrite(EN1, 250); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); } else if( results.value == Down) { Serial.println("[Двигатель] Движение назад"); analogWrite(EN1, 250); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); } else if( results.value == Ok) { Serial.println("[Двигатель] Остановка.."); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); } else if( results.value == Left) { Serial.println("[Двигатель] Поворот вала в лево"); analogWrite(EN1, 250); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); delay(100); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); } else if( results.value == Right) { Serial.println("[Двигатель] Поворот вала в право"); analogWrite(EN1, 250); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); delay(100); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); } else if( results.value == One) { Serial.println("[Скорость] Установлена - 80"); analogWrite(EN1, 80); } else if( results.value == Two) { Serial.println("[Скорость] Установлена - 100"); analogWrite(EN1, 100); } else if( results.value == Three) { Serial.println("[Скорость] Установлена - 120"); analogWrite(EN1, 120); } else if( results.value == Four) { Serial.println("[Скорость] Установлена - 140"); analogWrite(EN1, 140); } else if( results.value == Five) { Serial.println("[Скорость] Установлена - 160"); analogWrite(EN1, 160); } else if( results.value == Six) { Serial.println("[Скорость] Установлена - 180"); analogWrite(EN1, 180); } else if( results.value == Seven) { Serial.println("[Скорость] Установлена - 200"); analogWrite(EN1, 200); } else if( results.value == Eight) { Serial.println("[Скорость] Установлена - 220"); analogWrite(EN1, 220); } else if( results.value == Nine) { Serial.println("[Скорость] Установлена - 250"); analogWrite(EN1, 250); } irrecv.resume(); // Получаем следующее значение с ИК-приемника } }