Всем привет,нужен скетч для атмеги8,смысл такой:атмега получает сигнал от ик пульта и управляет четырьмя выходами.Алгоритм управления: кнопка вкл-выкл-включает или выключает первый выход, при нажатии кнопки 1:2 выход-1 3 выход-0 4 выход-0 при нажатии кнопки 2:2 выход-0 3 выход-1 4 выход-0 при нажатии кнопки 3:2 выход-0 3 выход-0 4 выход-1 задержка исполнения команды после нажатия кнопок 1-2-3 пол секунды. Всем кто откликнется заранее спасибо!
Код (C++): #include "IRremote.h" // https://github.com/z3t0/Arduino-IRremote #define BUTTON_ON_OFF 0xB47 // коды кнопок пульта - заменить на свои #define BUTTON_1 0x80B47 // скетч для подучения кодов кнопок: #define BUTTON_2 0xC0B47 // https://github.com/z3t0/Arduino-IRremote/blob/master/examples/IRrecvDumpV2/IRrecvDumpV2.ino #define BUTTON_3 0x20B47 #define BUTTON_4 0x60B47 #define BUTTON_5 0xE0B47 #define BUTTON_6 0x40B47 #define BUTTON_7 0xA0B47 #define BUTTON_8 0xA90 #define BUTTON_9 0x3EE const byte receiverPin = 11; // пин для подключения выхода ИК-приемника const byte outPin[4] = {3,4,5,6}; // пины для подключения выходов const byte ledPin[4] = {7,8,9,10}; // индикаторы активности - светодиод от пина через резистор 270 Ом на GND const unsigned int pause = 2000; // длительность задержки перед включением выхода (2 сек) IRrecv irrecv(receiverPin); decode_results results; void setup() { for(byte i = 0; i < 4; i++) { pinMode(outPin[i], OUTPUT); pinMode(ledPin[i], OUTPUT); } irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) // получен сигнал с пульта { switch(results.value) // смотрим что получили { case BUTTON_ON_OFF: // нажата кнопка вкл/выкл digitalWrite(outPin[0], !digitalRead(outPin[0])); // delay(pause); // раскомментировать, если пульт слишком быстро отсылает повторный код break; case BUTTON_1: // нажата кнопка 1 delay(pause); // тупим 2 секунды digitalWrite(outPin[1], HIGH); digitalWrite(outPin[2], LOW); digitalWrite(outPin[3], LOW); break; case BUTTON_2: delay(pause); digitalWrite(outPin[1], LOW); digitalWrite(outPin[2], HIGH); digitalWrite(outPin[3], LOW); break; case BUTTON_3: delay(pause); digitalWrite(outPin[1], LOW); digitalWrite(outPin[2], LOW); digitalWrite(outPin[3], HIGH); break; } // switch // включаем соответствующие индикаторы for(byte i = 0; i < 4; i++) digitalWrite(ledPin[i], digitalRead(outPin[i])); irrecv.resume(); } } // loop Жду печенек к чаю
если из кода выкинуть все упоминания ledPin, то экономим 112 байт. Остается по ссылке выше поотключать в IRremote.h неиспользуемые протоколы, тогда должно влезть.
И так влазит Код (C++): Используем библиотеку IRremote версии 2.0.1 из папки: C:\Program Files\Arduino\libraries\IRremote Скетч использует 4 892 байт (68%) памяти устройства. Всего доступно 7 168 байт. Глобальные переменные используют 244 байт (23%) динамической памяти, оставляя 780 байт для локальных переменных. Максимум: 1 024 байт.
я уже повыкинул led pin компилировал вроде влазит но при загрузке четез ардуину пишет not in sync: resp=0x00 что не так?
Bootloader в Atmega8 прошит? Atmega8 это плата Arduino NG or older http://wiki.amperka.ru/установка-и-настройка-arduino-ide:arduino-restore-bootloader-with-arduino P.S. Ссылку поправил
по ссылке пишет страница не найдена бутлодер прошил в програматоре выбрал плату Arduino NG or older w|ATmega8