Кнопка и одно действие
- Войдите на сайт для отправки комментариев
Пт, 07/06/2013 - 12:40
Привет всем подскажите пожалуйста как сделать так .
Нажимаем на кнопку и держим выполнилось действия в скобках 1 раз, отпускаем кнопку выполнилось другое действия в скобках 1 раз?
const int buttonPin = 11; const int ledPin = 13; int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); } void loop(){ buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } else { digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); } }
к примеру повесить на прерывание с флагом CHANGED повесив кнопку на порт 3
без прерывания:
Спасибо
А вообще вы бы над своей темой прикрепленную посмотрели Работа с кнопками. В помощь новичку.
А вообще вы бы над своей темой прикрепленную посмотрели Работа с кнопками. В помощь новичку.
Я эту тему смотрел видимо эту част проморгал
Привет всем подскажите пожалуйсто как сделать одно действие по аналоговому в ходу?
Если правильно понял задачу, то, например, так:
Только здесь в районе 500 будет телепаться туда - сюда, нужно добавить гистерезис срабатывания, например, так ( +-20 зона нечувствительности):
Писал на коленке, компилятора нет под рукой, но смысл, я думаю, понятен
Спасибо
01
if
(sensor>=450&&sensor<=890&&key>85&&key<95)
// - если нажата кнопка Up
02
{
03
val_Up++;
// - прибавляем к переменной единицу при каждой смене цикла.
04
}
05
else
// - если не нажата...
06
{
07
val_Up=0;
// - приравниваем значение к нулю.
08
}
09
if
(val_Up>=10&&sensor>=450&&sensor<=890)
// - если достигаем значения 10 циклов или более то ...
10
{
11
flag_Auto_Up=0;
// - выкл авто режима Up
12
flag_Auto_Down=0;
// - выкл авто режима Down
13
digitalWrite(11,HIGH);
// - двигатель UP
14
digitalWrite(12,LOW);
15
Serial
.print(
" Up "
);
16
val_Up=0;
// - присваиваем ноль для следующих нажатий
17
}
18
19
// - лимит верхний
20
if
(sensor>=891&&sensor<=1024&&key>85&&key<95)
21
{
22
digitalWrite(11,LOW);
// - стоп
23
digitalWrite(12,LOW);
// - стоп
24
}
Ребята ! подскажите , не нашел похожих примеров в поисковике и в теме про кнопки задавал вопрос , но тишина.
Имеем вот такой кусок кода , работает он так - при удержании аналоговой кнопки в течении 10 циклов LOOP включается двигатель и вращается пока не отпустим кноку.
Хотелось-бы добавить в этот код не используя delay такую функцию как "микро шаг" данного двигателя при кратковременном нажатии на эту же кнопку ( до 10 циклолв LOOP ) и получить такой алгоритм:
Удерживаем кнопку более 2-х циклов но до 10-и - код отработает digitalWrite(11,HIGH) на периуд (микро шаг) который я ему задам - допустим 0.5сек и встанет до следующего нажатия кнопки но ожидая это нажатие не более 10 циклов , если удерживать более 10 циклов исполняется код указанный выше .
Здравствуйте. Подскажите пожалуйста, как сделать такую штуку: нажимаем кнопку - загорается светодиод на плате и горит 2 сек, независимо от того, зажата кнопка или нет, а так же чтобы он не загорался при дальнейшем удержании кнопки. Если можно - в виде программы)) Заранее спасибо.
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...
Почитайте и на основе примеров сможете сами сделать
Уже прочитал не раз. Ничего подходящего не увидел.
Читайте до тех пор пока не увидите и эту тему тоже.
Доброго времени суток !
по поводу аналогово считывания кнопок, я бы делал так :