Опять кнопка -разные значения при нажатие на одну кнопку
- Войдите на сайт для отправки комментариев
Ср, 12/02/2014 - 22:43
Добрейшего времени.
Помогите пожалуйста.Надо реализовать что бы при нажатие на одну и туже кнопку ,чередовались значения переменной с 0 и 1.
Тоесть нажали на кнопку -результат единица,ещё раз нажали на кнопку результат -0 и так по кругу.
const int buttonPin = 6; // номер входа, подключенный к кнопке 1
int buttonState = 0; // переменная для хранения состояния кнопк
void setup()
{
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH ) {
zvon=1;
Serial.print("1");
delay (2000);
}
if (zvon == 1)
{
if (buttonState == HIGH ){
zvon=0;
Serial.print("2");
}
}
}
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku
const byte buttonPin = 6; // номер входа, подключенный к кнопке 1 boolean buttonState = false; // переменная для хранения состояния кнопк void setup() { pinMode(buttonPin, INPUT); } void loop() { if (digitalRead(buttonPin)) // если кнопка нажата { buttonState = !buttonState; // меняем состояние на противоположное Serial.print(buttonState); delay (50); // задержка для подавления дребезга } }Так при удержании кнопки значение будет непрерывно меняться каждые 50 млс
#define buttonPin 6 // номер входа, подключенный к кнопке 1 bool buttonState = 0; // переменная для хранения состояния кнопк bool zvon = 0; void setup(){} void loop() { if(digitalRead(buttonPin)) // если кнопка нажата { if(!buttonState) { buttonState = 1; zvon = !zvon; // меняем состояние на противоположное Serial.print(zvon); } delay(50); // задержка для подавления дребезга } else buttonState = 0; }bool buttonState = 0;
...
if(!buttonState) - оно никогда не выполнится
С чего бы это вдруг? Вера не позволит?
А ведь верно... Если отрицание лживой истины является правдой, то...
...то Вера все позволит. Теперь спать пора ;)
Если кнопка одна, можно попробовать через прерывания
boolean button = false; // void inverse_button(){ button = !button; delay (50); check_result(); } void check_result(){ Serial.println(); Serial.print ("_button state_: "); Serial.print (button); Serial.println(); } void setup(){ Serial.begin(4800); attachInterrupt (0, inverse_button, FALLING); // для UNO это pin2 } void loop(){ }