Остороно, C++
#include <IRremote.h> // подключаем ИК-библиотекуIRsend irsend; // по умолчанию 3й выход для ИК-диодаint remin; // объявляем ремотИнint remout = 5; // объявляем ремотАут и назначаем ему порт 5bool rem_state = false; // статус ремоутunsigned long rem_Time; // время ремоутаint button1; // кнопка лепесткаint button1_state = 0; // статус кнопки лепесткаunsigned long button1_Time; //время нажатия кнопки на лепесткеint wheel_L; // кнопки руля слеваint wheel_R; // кнопки руля справаint wheel_state = 0; // статус кнопки руляint wheel2_state = 0; // статус кнопки 2 руляint wheel3_state = 0; // статус кнопки громкости вверхint wheel4_state = 0; //статус кнопки громкости внизint wheel5_state = 0; // статус кнопки менюint wheel6_state = 0;unsigned long wheel_Time; //время нажатия кнопки руляunsigned long wheel2_Time; //время нажатия кнопки 2 руляunsigned long wheel3_Time; //время кнопки громкости вверхunsigned long wheel4_Time; //время кнопки громкости внизunsigned long wheel5_Time; //время кнопки менюunsigned long wheel6_Time;int bibi = 7; //активирует клаксонvoid setup() { Serial.begin (9600); pinMode(button1, INPUT); // лепесток = вход pinMode(wheel_R, INPUT); // руль справа - вход pinMode(wheel_L, INPUT); // руль слева - вход pinMode(remout, OUTPUT); // ремАут - выход pinMode(remin, INPUT); // ремИн - вход digitalWrite(remout, LOW); // задаем начальное состояние реле "выключено" pinMode(bibi, OUTPUT); // клаксон}void loop() { remin = analogRead(A2); // считываем показания на входе ремоута button1 = analogRead(A0); // считываю напряжение на входе с лепестка wheel_R = analogRead(A6); // показания справа руля wheel_L = analogRead(A7); // показания слева руля //----------------------------------------------------------------------скетч выполнения программы REMOTE и команды play/pause-------------------- if (remin > 100) // если ремоут приходит - замыкаем реле { digitalWrite(remout, HIGH); rem_Time = millis(); if (!rem_state) // если ремоут приходит - посылаем команду play { irsend.sendNEC(0x20202FD, 32); rem_state = true; } } if (remin < 100) // если ремоут пропадает, отключаем реле через 2 часа { if (millis() - rem_Time > 7200000) { digitalWrite(remout, LOW); } if (rem_state) // если ремоут пропадает, посылаем команду PAUSE { irsend.sendNEC(0x20202FD, 32); rem_state = false; } } //--------------------------------------------------------------------------------скетч передачи команд с лепестка------------------------------- if (button1 < 840 && button1 > 820 && button1_state == 0) // фиксируем время, когда последний раз кнопка была отпущена { button1_Time = millis(); } if (millis() - button1_Time > 10 && millis() - button1_Time < 500 && button1 < 1015 && button1 > 1000) // если было короткое нажатие кнопки { button1_state = 1; // статус кнопки: "было короткое нажатие" } if (button1 < 840 && button1 > 820 && button1_state == 1) // если кнопка отпущена, но короткое нажатие было, посылаем сигнал { irsend.sendNEC(0x202B04F, 32); //кнопка ОК button1_state = 0; //обнуляем статус кнопки } if ( millis() - button1_Time > 300 && button1 < 1015 && button1 > 1000 && button1_state == 1) // если зафиксировано долгое нажатие, посылаем сигнал пульта { irsend.sendNEC(0x20242BD, 32); //кнопка НАЗАД button1_state = 2; // статус кнопки: зажата } if (button1 < 840 && button1 > 820 && button1_state == 2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки { button1_state = 0; } if (button1 < 1000 && button1 > 980) // если лепесток повернут вперед, посылаем команду вверх { irsend.sendNEC(0x202D02F, 32); delay (100); } if (button1 < 970 && button1 > 945) // если лепесток повернут назад, посылаем команду вниз { irsend.sendNEC(0x202708F, 32); delay (100); } //-------------------------------------------------------------------------------------скетч передачи команд с правой стороны руля--------------------------------- //volume up---------------------------------- if (wheel_R == 0 && wheel3_state == 0) { wheel3_Time = millis(); } if (millis() - wheel3_Time > 150 && millis() - wheel3_Time < 600 && wheel_R < 1015 && wheel_R > 1009) { wheel3_state = 1; } if (wheel_R == 0 && wheel3_state == 1) { irsend.sendNEC(0x202A857, 32); //громкость вверх 1 раз wheel3_state = 0; } if ( millis() - wheel3_Time > 600 && wheel_R < 1015 && wheel_R > 1009 && wheel3_state == 1) { irsend.sendNEC(0x202A857, 32); //громкость вверх, если кнопка зажата wheel3_state = 2; } if ( wheel_R < 1015 && wheel_R > 1009 && wheel3_state == 2) { irsend.sendNEC(0x202A857, 32); //громкость вверх, если кнопка зажата } if (wheel_R == 0 && wheel3_state == 2) { wheel3_state = 0; } //volume down---------------------------------------------- if (wheel_R == 0 && wheel4_state == 0) { wheel4_Time = millis(); } if (millis() - wheel4_Time > 100 && millis() - wheel4_Time <= 600 && wheel_R < 996 && wheel_R > 990) { wheel4_state = 1; } if (wheel_R == 0 && wheel4_state == 1) { irsend.sendNEC(0x20238C7, 32); wheel4_state = 0; } if ( millis() - wheel4_Time > 600 && wheel_R < 996 && wheel_R > 990 && wheel4_state == 1) { irsend.sendNEC(0x20238C7, 32); wheel4_state = 2; } if (wheel_R < 996 && wheel_R > 990 && wheel4_state == 2) { irsend.sendNEC(0x20238C7, 32); delay(10); } if (wheel_R == 0 && wheel4_state == 2) { wheel4_state = 0; } //next track & right-------------------------------------------------- if (wheel_R < 5 && wheel_state == 0) { wheel_Time = millis(); } if (millis() - wheel_Time > 100 && millis() - wheel_Time < 600 && wheel_R < 965 && wheel_R > 961) { wheel_state = 1; } if (wheel_R < 5 && wheel_state == 1) { irsend.sendNEC(0x202F807, 32); // следующий трэк delay (100); wheel_state = 0; } if ( millis() - wheel_Time > 600 && wheel_R < 965 && wheel_R > 961 && wheel_state == 1) // если зафиксировано долгое нажатие, посылаем "RIGHT" { irsend.sendNEC(0x2028877, 32); //перемотка wheel_state = 2; delay(500); } if (wheel_R < 965 && wheel_R > 961 && wheel_state == 2) { irsend.sendNEC(0x2028877, 32); //перемотка delay(500); } if (wheel_R < 5 && wheel_state == 2) { wheel_state = 0; } //prev track & left---------------------------------------------- if (wheel_R < 5 && wheel2_state == 0) { wheel2_Time = millis(); } if (millis() - wheel2_Time > 100 && millis() - wheel2_Time < 600 && wheel_R < 898 && wheel_R > 893) { wheel2_state = 1; } if (wheel_R < 5 && wheel2_state == 1) { irsend.sendNEC(0x2027887, 32); //предыдущий трэк delay (100); wheel2_state = 0; } if ( millis() - wheel2_Time > 600 && wheel_R < 898 && wheel_R > 893 && wheel2_state == 1) // если зафиксировано долгое нажатие, посылаем "LEFT" { irsend.sendNEC(0x20208F7, 32); //перемотка назад wheel2_state = 2; delay(500); } if (wheel_R < 898 && wheel_R > 893 && wheel2_state == 2) { irsend.sendNEC(0x20208F7, 32); //перемотка назад delay(500); } if (wheel_R < 5 && wheel2_state == 2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки { wheel2_state = 0; } // play-pause---------------------------------------- if (wheel_L < 900 && wheel_L > 890) { irsend.sendNEC(0x20202FD, 32); delay (100); } // menu (home & green)----------------------------------------- if (wheel_L < 650 && wheel_L > 610 && wheel5_state == 0) // фиксируем время, когда последний раз кнопка была отпущена { wheel5_Time = millis(); } if (millis() - wheel5_Time > 10 && millis() - wheel5_Time < 1000 && wheel_L < 970 && wheel_L > 940) // если было короткое нажатие кнопки { wheel5_state = 1; // статус кнопки: "было короткое нажатие" } if (wheel_L < 650 && wheel_L > 610 && wheel5_state == 1) // если кнопка отпущена, но короткое нажатие было, посылаем сигнал { irsend.sendNEC(0x20258A7, 32); //HOME wheel5_state = 0; //обнуляем статус кнопки } if ( millis() - wheel5_Time > 1000 && wheel_L < 970 && wheel_L > 940 && wheel5_state == 1) // если зафиксировано долгое нажатие, посылаем сигнал пульта { irsend.sendNEC(0x202DA25, 32); //кнопка GREEN wheel5_state = 2; // статус кнопки: зажата } if (wheel_L < 650 && wheel_L > 610 && wheel5_state == 2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки { wheel5_state = 0; } if (wheel_L < 100 && wheel_L > 85) { irsend.sendNEC(0x20258A7, 32); delay (100); } // left-right-ok on wheel_L----------------------------------------------------- if (wheel_L < 1015 && wheel_L > 1010) { irsend.sendNEC(0x20208F7, 32); // ЛЕВО delay (300); } if (wheel_L < 1010 && wheel_L > 990) { irsend.sendNEC(0x2028877, 32); // ПРАВО delay (300); } ////////////////////////ок if (wheel_L < 650 && wheel_L > 610 && wheel6_state == 0) // фиксируем время, когда последний раз кнопка была отпущена { wheel6_Time = millis(); } if (millis() - wheel6_Time > 10 && millis() - wheel6_Time < 600 && wheel_L < 990 && wheel_L > 970) // если было короткое нажатие кнопки { wheel6_state = 1; // статус кнопки: "было короткое нажатие" } if (wheel_L < 650 && wheel_L > 610 && wheel6_state == 1) // если кнопка отпущена, но короткое нажатие было, посылаем сигнал { irsend.sendNEC(0x202B04F, 32); //HOME wheel6_state = 0; //обнуляем статус кнопки } if ( millis() - wheel6_Time > 600 && wheel_L < 990 && wheel_L > 970 && wheel6_state == 1) // если зафиксировано долгое нажатие, посылаем сигнал пульта { irsend.sendNEC(0x20242BD, 32); //кнопка НАЗАД wheel6_state = 2; // статус кнопки: зажата } if (wheel_L < 650 && wheel_L > 610 && wheel6_state == 2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки { wheel6_state = 0; } // КЛАКСОН---------------------------------------------------------------- if (wheel_R > 1021) { digitalWrite(bibi, HIGH); delay (50); } if (wheel_R < 1020) { digitalWrite(bibi, LOW); delay (50); } // Serial.println (wheel_R); //delay (100);}
Социальные закладки