Здравствуйте, помогите решить проблему. Хочется изменять скорость передвижения светодиодов и менять подпрограммы при помощи пульта - библиотека iremote. По совету на форуме пробовал по таймеру но срабатывает редко, использовал библиотеку таймер1, видимо на этом таймере сделана библиотека для светодиодов. Другие библиотеки с UNO не работают мстаймер2 и таймер3. Подскажите выход, может прерывание по уарту?
если бы Ремоте и библиотека светодиодов была бы на одном таймере - у вас бы никогда не срабатывало. Скорее всего код у вас написан в блокируещем режиме, с делееями - вот и пропускает команды Наткнулся на вашу предыдущую тему по этому вопросу - таки да, вам дядяВитя еще там сказал - надо код переписывать. Нужно постоянно преверять пришедшие с пульта команды, а не только после окончания цикла
Перед 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;
Romambius - это все, конечно, интересно - но ТС спрашивал не об этом. Суть его вопроса - как опрашивать кнопки в длинном цикле с задержками. И правильный ответ - избавляться от задержек вовсе. А вы ему опять задержки советуете. Не будет это работать.