Ws2812b изменение delay при помощи пульта

Тема в разделе "Проводная и беспроводная связь", создана пользователем Рокки1945, 3 мар 2019.

  1. Рокки1945

    Рокки1945 Гуру

    Здравствуйте, помогите решить проблему.
    Хочется изменять скорость передвижения светодиодов и менять подпрограммы при помощи пульта - библиотека iremote.
    По совету на форуме пробовал по таймеру но срабатывает редко, использовал библиотеку таймер1, видимо на этом таймере сделана библиотека для светодиодов. Другие библиотеки с UNO не работают мстаймер2 и таймер3.
    Подскажите выход, может прерывание по уарту?
     
  2. Рокки1945

    Рокки1945 Гуру

    вот так так и никто не ответит?
     
  3. b707

    b707 Гуру

    если бы Ремоте и библиотека светодиодов была бы на одном таймере - у вас бы никогда не срабатывало. Скорее всего код у вас написан в блокируещем режиме, с делееями - вот и пропускает команды
    Наткнулся на вашу предыдущую тему по этому вопросу - таки да, вам дядяВитя еще там сказал - надо код переписывать. Нужно постоянно преверять пришедшие с пульта команды, а не только после окончания цикла
     
  4. Romambius

    Romambius Нуб

    Перед void setap добавляет переменную на пример time1 то есть const int timer1 = 150; 150 это значение в милисекундах, и там где ваш delay в скобки вписываете переменную.
    Тоесть delay(timer1); что тоже самое что delay(150); это будет значением по умолчанию при каждом запуске ардуины.
    Дальше примерно так;
    if case: 0xDF4577 {
    timer1=250;
    }
    Тоесть если была нажата кнопка на пример 2 то timer1 уже равен 250 миллисекунд а не 150 как это было при старте ардуины.
    Таким образом можно запрограммировать несколько кнопок с разными интервалами для delay();
    Так же можно сделать плавное изменение интервала если вместо присвоения значения 250 тоесть timer1=250; использовать сложение или вычитание тоесть timer1+=25; тоесть при каждом нажатии кнопки timer1 будет увеличиваться на 25 миллисекунд, а так же уменьшаться при нажатии другой кнопки если забить на неё функцию timer1-=25;
     
  5. b707

    b707 Гуру

    Romambius - это все, конечно, интересно - но ТС спрашивал не об этом. Суть его вопроса - как опрашивать кнопки в длинном цикле с задержками. И правильный ответ - избавляться от задержек вовсе. А вы ему опять задержки советуете. Не будет это работать.