![]() |
Цитата:
Спасибо, работает! |
Цитата:
|
Рассказывай, чего интриги разводишь?
|
В программе есть переменные, в которых хранится состояние реле, это
relays_state1,2,3,4 Вставляем в программу в программу в начало процедуры setup pinMode(x, OUTPUT), где х - номер пина. Далее в процедуру relay_state добавляем следующий кусок для каждого реле: ------------------------------------------------ if (relays_state1 && 0x01)==0 //проверяем наличие нулевого бита { digitalWrite(х, LOW); //сбрасываем выход } else { digitalWrite(х, HiGH);//устанавливаем выход } -------------------------------------------- для реле 2 использовать 0x02, 3 - 0x04, 4-0x08 и так далее P.S. Есть правда одна тонкость: Bersenev отправляет их на порт в обратном порядке (4,3,2,1), почему так - не знаю, и есть вероятность что первое реле на самом деле находится relays_state4, также возможен обратный порядок битов и тогда проверять надо (relays_state4 && 0x80) для первого реле, (relays_state4 && 0x40) для второго и так далее. Также есть вероятность |
Вложений: 1
|
Если путаются соседние кнопки
На входе ардуино в схеме Берсенева стоит делитель из резистора 3200 Ом (3,2К) и резисторов кнопок 100,100+100,100+100+100 и.т.д. Ом. Значение потенциала для аналогового входа для первой кнопки - 5В *(100/3200)=0,16В. Напряжение меряется 10-битным АЦП, 5В соответствует значению 1023 в памяти контроллера, 0В - 0, всего 1024 градации аналогового сигнала потенциала. В коде у нас получается для первой кнопки значение (0,16/5)*1024=34. Для второй кнопки - 5В *(200/3200)=0,33В в коде (0,33/5)*1024=68. Итак, разница по коду у схемы Берсенева между значениями соседних кнопок - 34 единицы, запас на вариацию сопротивления кнопки (см ниже) - 3 единицы. Это вполне достаточно для устойчивой селекции разных кнопок. Если у вас номиналы резисторов иные - нужно проверить по данным формулам разницу по коду между соседними кнопками и если она меньше - можно попробовать уменьшить сопротивление резистора со значением 3,2К, но не менее, чем до 2К, это даст увеличение разницы в полтора раза. Если неустойчиво читаются кнопки (через раз): Скорее всего вариация аналогового сигнала у Вас превышает заложенную по умолчанию. По-хорошем надо с этим бороться стабилизацией 5В, качественными соединениями, экранированием проводов. Но есть и другой, "ленивый" путь. В программе Берсенева есть такой параметр unsigned int res_key_delta = 3; Как я понял, это зона нечувствительности, в которой может "плавать" измеренное значение аналогового сигнала при сравнении с запомненным значением. Можно попробовать ее аккуратно увеличить. При этом важно не превысить половину минимальной разницы между соседними сигналами кнопок в коде (описано выше). Значительное увеличение данного параметра может привести к путанице с соседними кнопками. В общем, аккуратно увеличивать, пока проблемы не исчезнуть, реально может помочь увеличение на 2-3 единицы. Например так: unsigned int res_key_delta = 5; |
попробовал на китайской Arduino Nano v3.0 http://ru.aliexpress.com/item/With-t...341832857.html, работает без проблем.
|
Иногда подвисает плагин(на пульт не реагирует и температура заввисает).
Это как то лечится? кроме как перегрузкой икара. |
А заработает ли вот такая штука Iteaduino Tiny (ATtiny 85) . Мне нужны только резистивные кнопки. Пока использую ее как эмулятор USB клавиатуры (поучаю сразу комбинацию клавиш), но иногда не подниматся после перезагрузки, надо питание передергивать. Как сом порт работает надежнее. Но не понятно как плагин с компортом общается.
|
Помогите пож. не могу приручить
в настройках порт и скорость поставил, плагин включил, но в настройках кнопок не могу прицепить динамические кнопки к кнопкам ардуино |
Часовой пояс GMT +4, время: 10:03. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot