![]() |
![]() |
#2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Добавил сохранение 9 кнопок
И считываю 6 кнопок, на 1 кнопку больше чем в проекте моего робота Я думаю что дальше все будет понятно как еще 3 кнопки добавить Код:
#include <IRremote.h> #include <CyberLib.h> #include <avr/wdt.h> #define robot_pins D4_Out; D5_Out; D6_Out; D7_Out #define robot_go D4_Low; D5_High; D6_High; D7_Low #define robot_back D4_High; D5_Low; D6_Low; D7_High #define robot_left D4_Low; D5_High; D6_Low; D7_Low #define robot_right D4_Low; D5_Low; D6_High; D7_Low; #define robot_stop D4_Low; D5_Low; D6_Low; D7_Low IRrecv irrecv(8); //вход для ик приемника decode_results results; unsigned long ir_go, ir_back, ir_left, ir_right, ir_stop, ir_cool, ir_tmp; void setup() { robot_pins; //управление мотрами D11_Out; D11_Low; //пищалка D15_In; //вход для перемычки D15_High; //включить подтяжку robot_stop; irrecv.enableIRIn(); // включить приемник irrecv.blink13(true); // включить мигание светодиода при приеме ProgPush() ; //программирование кнопок ir_go=ReadEEPROM_Long(0);//прочитать команду из EEPROM ir_back=ReadEEPROM_Long(1);//прочитать команду из EEPROM ir_left=ReadEEPROM_Long(2);//прочитать команду из EEPROM ir_right=ReadEEPROM_Long(3);//прочитать команду из EEPROM ir_stop=ReadEEPROM_Long(4);//прочитать команду из EEPROM ir_cool=ReadEEPROM_Long(5);//прочитать команду из EEPROM randomSeed(A6_Read); //Получить случайное значение for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение готовности робота wdt_enable (WDTO_8S); //Сторожевая собака 8сек. } void loop() { Start if (irrecv.decode(&results)) //если был сигнал с пульта { ir_tmp=results.value; if(ir_go==ir_tmp) //если принятый код равен коду который в памяти то вперед { robot_go; beep(100,300); } else if(ir_back==ir_tmp) //если принятый код равен коду который в памяти то назад { robot_back; beep(100,400); } else if(ir_left==ir_tmp) //если принятый код равен коду который в памяти то назад { robot_right; beep(100,450); } else if(ir_right==ir_tmp) //если принятый код равен коду который в памяти то назад { robot_left; beep(100,500); } else if(ir_cool==ir_tmp) //если принятый код равен коду который в памяти то включить вентилятор { //код для включения beep(100,500); } else if(ir_stop==ir_tmp) //если принятый код равен коду который в памяти то стоп { robot_stop; beep(10,300); beep(10,400); beep(10,300); } irrecv.resume(); //очистить входящий буфер } wdt_reset(); //покормить собаку, что бы она не сбежала End } ////////////////////////////////////////////////////////////////////////////////////////////// void SavePush(uint8_t addr) //сохранить нажатие кнопки { delay_ms(400); //задержка для крректной работы for(uint32_t i=0; i<2000000; i++)//ждем нажатия кнопки пульта { if (irrecv.decode(&results)) //если был сигнал с пульта { // то сохраняем результат в EEPROM WriteEEPROM_Long(addr, results.value); break; //прервать цикл } wdt_reset(); //покормить собаку } delay_ms(100); irrecv.resume(); //очистить входящий буфер } ////////////////////////////////////////////////////////////////////////////////////////////////// void ProgPush() { if(D15_Read==0)//если кнопка нажата { beep(50,800); beep(50,900); beep(50,1000); SavePush(0); //сохранить первое кодовое значение пульта beep(80,800); SavePush(1); //сохранить второе кодовое значение пульта beep(80,900); SavePush(2); //сохранить третье кодовое значение пульта beep(80,850); SavePush(3); //сохранить четвертое кодовое значение пульта beep(80,950); SavePush(4); //сохранить пятое кодовое значение пульта beep(50,1000); beep(50,900); SavePush(5); //сохранить кодовое значение пульта beep(50,1000); beep(50,900); SavePush(6); //сохранить кодовое значение пульта beep(50,1000); beep(50,900); SavePush(7); //сохранить кодовое значение пульта beep(50,1000); beep(50,900); SavePush(8); //сохранить кодовое значение пульта beep(50,1000); beep(50,900); beep(50,800); } } |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|