нужен скетч для атмеги 8

Тема в разделе "Закажу проект", создана пользователем 2a420, 8 июн 2016.

  1. 2a420

    2a420 Нерд

    Всем привет,нужен скетч для атмеги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 пол секунды.
    Всем кто откликнется заранее спасибо!
     
  2. Green

    Green Гик

  3. 2a420

    2a420 Нерд

    пульт ик
     
  4. 2a420

    2a420 Нерд

    кнопка вкл-выкл-включает или выключает первый выход,
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Код (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
     
    Жду печенек к чаю :)
     
    2a420, ZAZ-965 и ostrov нравится это.
  6. ostrov

    ostrov Гуру

    Томасина - махровый штрейкбрехер! :D
     
  7. 2a420

    2a420 Нерд

    Спасибо Вам уважаемый за Ваше внимание,но данный скетч в мегу 8 не влазит(((
     
  8. ZAZ-965

    ZAZ-965 Гуру

  9. Tomasina

    Tomasina Сушитель лампочек Модератор

    думается, это библиотека IRremote.h не влазит, уж слишком она навороченная.
     
  10. 2a420

    2a420 Нерд

    есть ролик наютубе по управлению сверодиодными лентами атмегой 8 там влазит правда алгоритм другой
     
  11. Tomasina

    Tomasina Сушитель лампочек Модератор

    если из кода выкинуть все упоминания ledPin, то экономим 112 байт.
    Остается по ссылке выше поотключать в IRremote.h неиспользуемые протоколы, тогда должно влезть.
     
  12. ZAZ-965

    ZAZ-965 Гуру

    И так влазит
    Код (C++):
    Используем библиотеку IRremote версии 2.0.1 из папки: C:\Program Files\Arduino\libraries\IRremote
    Скетч использует 4 892 байт (68%) памяти устройства. Всего доступно 7 168 байт.
    Глобальные переменные используют 244 байт (23%) динамической памяти, оставляя 780 байт для локальных переменных. Максимум: 1 024 байт.
     
  13. Tomasina

    Tomasina Сушитель лампочек Модератор

    наверное, у нас разные библиотеки. У меня пишет:
     
  14. ZAZ-965

    ZAZ-965 Гуру

  15. 2a420

    2a420 Нерд

    я уже повыкинул led pin компилировал вроде влазит но при загрузке четез ардуину пишет not in sync: resp=0x00 что не так?
     
  16. ZAZ-965

    ZAZ-965 Гуру

    Bootloader прошит? Порт выбран верно?
     
  17. 2a420

    2a420 Нерд

    порт выбран правильно в уну скетч льется без проблем а когда подключаю мегу 8 пишет ошибку
     
  18. ZAZ-965

    ZAZ-965 Гуру

    Последнее редактирование: 8 июн 2016
  19. 2a420

    2a420 Нерд

    по ссылке пишет страница не найдена бутлодер прошил в програматоре выбрал плату Arduino NG or older w|ATmega8
     
  20. ZAZ-965

    ZAZ-965 Гуру

    Как прошиваете Atmega8? Если через USB-UART есть ли вывод на резет?