Ну тогда можно сделать.
Ну тогда можно сделать.
можно..сделал...
У меня хрень получается забиваю кнопки в конфиг запускаю hotkey. и ничего не происходит но если развернуть хоткей то в левом верхнем углу пишутся значения нажатых кнопок которые совпадают с забитыми в конфиг.
Удали конфиг, сконфигурируй по новой
Спасибо помогло . Может почистишь конфиг. программы в шапке ?
Вот и я созрел до своего подхода к обработке нажатий на кнопки. Правда я использую их в связке кнопка-ардуино-ИК диод для управления магнитолой. Почему не устроили скетчи в теме?
1 - пропуски нажатий, 2 - иногда получаем неверное значение, вплоть до другой кнопки, 3 - повторные срабатывания.
Для исследования что же происходит при нажатии соорудил небольшой скетч (его же использую в основной программе с добавкой функции на передачу сигнала ИК.
Смысл его - это 5 измерений через определенный интервал, отбрасывание значения ненажатой кнопки (а это как оказалось тоже имеет место), вычисление среднего значения. Как можно заметить, первое измерение в вычислениях не участвует, т.к. в моем случае оно в 90% случаев оказывалось слишком сильно отличающимся от номинального.PHP код:
#define PIN 6 //номер аналогового порта
int sensorValue[5]; // сопротивление кнопки
byte count=5;
int sensorVal, sum;
void setup() {
Serial.begin(9600);
}
void loop(){
if (analogRead(PIN) < 950){
sensorValue[0] = analogRead(PIN); // прочитать данные АЦП
delay(10);
sensorValue[1] = analogRead(PIN); // прочитать данные АЦП
delay(10);
sensorValue[2] = analogRead(PIN); // прочитать данные АЦП
delay(10);
sensorValue[3] = analogRead(PIN); // прочитать данные АЦП
delay(10);
sensorValue[4] = analogRead(PIN); // прочитать данные АЦП
count = 0;
sum = 0;
for (byte i = 0; i < 5; i++) {
if (sensorValue[i] != 1023) {
sum = sum + sensorValue[i];
count++;
}
sensorVal = sum / count;
}
Serial.println(sensorValue[0],DEC);
Serial.println(sensorValue[1],DEC);
Serial.println(sensorValue[2],DEC);
Serial.println(sensorValue[3],DEC);
Serial.println(sensorValue[4],DEC);
Serial.print("R=");
Serial.println(sensorVal,DEC);
Serial.println("End");
}
}
С таким алгоритмом программа у меня работает совершенно без нареканий. Готов к критике и вопросам![]()
Попробую твой скетч. У меня тоже к алгоритму из шапки есть серьезные вопросы.
Несколько раз переписывал по-своему, но многократный опрос не пробовал.
Супер. А может поделишься кусочком скетча по отправке сигнала, а то у меня проблемы какие то непонятные с этим.
Да пожалуйста, если это чем то поможет.
Этот кусок нужно вставить вместо "принтов".PHP код:
if (sensorValue >423 && sensorValue < 443) {
irsend.sendNEC(0x807F807F, 32); // NEC code >>|
}
if (sensorValue >901 && sensorValue < 921) {
irsend.sendNEC(0x807F827D, 32); // NEC code vol+
}
if (sensorValue >863 && sensorValue < 883) {
irsend.sendNEC(0x807F40BF, 32); // NEC code vol-
}
if (sensorValue >773 && sensorValue < 793) {
irsend.sendNEC(0x807FE21D, 32); // NEC code source
}
delay(200); // Пауза между нажатиями
И не забудь прицепить библиотеку #include <IRremote.h>.
"Ворота" для измеряемых значений у меня довольно таки большие, можно и уменьшить.
Экспериментальным путем были установлены некоторые проблемы обработки нажатия кнопок.
Все работает очень стабильно и четко, если отключить в скетче функции, выполняющиеся по таймеру и пишущие что-то в порт.
Если контроллер что-то пишет в порт, то, соответственно, нажатие кнопок не обрабатывается. Что-то с этим можно сделать?
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)