остановите, пока l oop с переменной, используя кнопку на Arduino - PullRequest
0 голосов
/ 25 января 2020

С Arduino я беру аналоговый вход с потенциометра. С помощью входа я регулирую, насколько мигает моя лампа. Проблема в том, что когда я пытаюсь включить или выключить лампу, она мигает или не мигает. Я могу заставить кнопку включить лампу, но не могу заставить ее выключить лампу.

Мой l oop, который заставляет лампу мигать, имеет переменную, которая должна быть 1, чтобы он работал. Однако, когда я изменяю переменную на 0 с помощью оператора if, мигание l oop не прекращается, и лампа продолжает мигать.

Вот мой код:


int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor
int buttonPin = 11;  //select the pin for the button
int buttonState = 0; //variable to start and stop the led

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {

if(digitalRead(buttonPin)==HIGH){
  buttonState = 1;
  delay(1000) //So that buttonState does not instantly change back

  }
 if(digitalRead(buttonPin)==HIGH && buttonState == 1;){
    buttonState = 0;
    delay(1000) //So that buttonState does not instantly change back
  } 

  while(buttonState == 1){
   // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);
  }

}

Спасибо за помощь !

1 Ответ

0 голосов
/ 25 января 2020

Некоторое время внутри l oop всегда подозрительно, и вы привели хороший пример.

Внутри пока l oop buttonState никогда не изменится, таким образом, у вас есть , хотя и навсегда

Просто измените его на if, и ваш эскиз будет вести себя лучше.

Показывает, что delay(1000); не является оптимальным для работы с кнопками. Вы скорее хотите обрабатывать изменения состояния (и рассмотреть вопрос о прыгающих кнопках). Но это сложный вопрос. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...