Удерживание кнопки, помогите чучуть
- Войдите на сайт для отправки комментариев
Чт, 05/09/2013 - 13:43
Имеется ArduinoUNO к нему подключена резистивные кнопки автомобиля для управления музыкой и круизом по схеме
Вроде бы со всем разобрался но мне необходима одна функция, которая при удерживании кнопки у которой диапазон значений от 830 до 890 включала 7 и 8 пин по очереди т.е удерживаем сигнал появляется в 8 пину, в 7 пропадает, удерживаем сиигнал появляется в 7 пину, в 8 пропадает и так по кругу. и при этом во время удерживания не появлялся сигнал на 9 пину так как она будет ставить музыку на паузу, она должна работать тока при кратковременных нажатиях.
вот скетч
int rulevieKnopki=0; int CruisControl=0; void setup() { Serial.begin(9600); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); } void loop() { rulevieKnopki=analogRead(14);//считываем сигнал с пина АЦП CruisControl=analogRead(15);//считываем сигнал с пина АЦП //переключатель if(rulevieKnopki>830&&rulevieKnopki<890)digitalWrite(7, HIGH); else digitalWrite (7, LOW); if(rulevieKnopki>830&&rulevieKnopki<890)digitalWrite(8, HIGH); else digitalWrite (8, LOW); //управление магнитолой if(rulevieKnopki>500&&rulevieKnopki<650)digitalWrite(8, HIGH); else digitalWrite (8, LOW); if(rulevieKnopki>830&&rulevieKnopki<890)digitalWrite(9, HIGH); else digitalWrite (9, LOW); if(rulevieKnopki>895&&rulevieKnopki<950)digitalWrite(10, HIGH); else digitalWrite (10, LOW); if(rulevieKnopki>952&&rulevieKnopki<1000)digitalWrite(11, HIGH); else digitalWrite (11, LOW); if(rulevieKnopki>1001&&rulevieKnopki<1024)digitalWrite(12, HIGH); else digitalWrite (12, LOW); //управление круиз контролем if(CruisControl>300&&CruisControl<420)digitalWrite(5, HIGH); else digitalWrite (5, LOW); if(CruisControl>450&&CruisControl<550)digitalWrite(4, HIGH); else digitalWrite (4, LOW); if(CruisControl>900&&CruisControl<1024)digitalWrite(3, HIGH); else digitalWrite (3, LOW); Serial.println(analogRead(14)); // Serial.println(analogRead(15)); }
Почитайте http://arduino.ru/Reference/Millis.
Имеется ArduinoUNO к нему подключена резистивные кнопки автомобиля для управления музыкой и круизом по схеме
...мне необходима одна функция, которая при удерживании кнопки...
Вы схему наверное взяли из темы "Работа с кнопками. В помощь новичку.",
в ней же есть примеры кода при удержании кнопки...
если использовать один из примеров..., то наверное код при удержании кнопки можно написать так:
Спсибо что откликнулись!!!
Порадовало выражение "Нагрузки там никакой нет это просто кнопка" ))
Не понятно что именно он у вас переключает.. Питание? или на пине OUT логика какая-то с управления идет?
Доброго времени суток !
Как Вы хотите отсчитывать время нажатия ? можно одним из аппаратных таймеров, можно просто счетом вызовов loop(). В виду того что точность длительности удержания сводить к микросекундам нет необходимости, я бы просто в loop() добавил счетчик и в глобальные переменные - переменную счета. При нажатии выставляется переменная счета в 65535 и каждый вызов loop() вычитать по 1 до 0. При отпуске кнопки останавливать счет, усли разница между исходным значением и конечным достаточно велика - выставить флаг. При чтении состояния флага, флаг сбрасывается.
Вот сегодня доделал и схему и скетчь подправил теперь я думаю будет ясно что мне нужно, спасибо если ктото поможет.
Вот код считывания кнопок :
ain - аналоговый ввод
в keyBut код нажатой клавиши и флаг нажатия.
stopCount = длительности нажатия.
PS: отвлеченный вопрос а автомобиль случайно не субару ?
Нет шевроле, но подойдёт такая схема для любой тачилы))) единственное значение сопротивлений поменять и всё.
Переключатель сделал, теперь надо сделать так чтобы 5-й пин не включался при удерживании кнопки.