Проблема со скетчем
- Войдите на сайт для отправки комментариев
Вс, 17/02/2019 - 19:34
Добрый день.
Собрана простая схема подключения светодиода (9 пин) через кнопку (2 пин). Предполагалось: нажал кнопку - загрелось, отпустил - погасло.
Вот скетч:
const int LED = 9;
const int button = 2;
int buttonState = LOW;
void setup() {
pinMode (LED, OUTPUT);
pinMode (button, INPUT);
}
void loop() {
buttonState = digitalRead(button);
if(buttonState == HIGH){
digitalWrite(LED, HIGH);
}else {
digitalWrite(LED, LOW);
}
}
Но по факту работает так: подал питание, диод загорелся, НАЖАЛ КНОПКУ - ДИОД ПОГАС, ОТПУСТИЛ КНОПКУ - ОПЯТЬ ЗАГОРЕЛСЯ.
Ведь по идее, когда кнопка нажата на 2 pin приходит HIGH, и диод должен тоже загораться.... А работает с точностью наоборот.
Я, честно сказать, растерян, прошу помощи
Обычно кнопка замыкает на землю, т.е. при нажатии приходит как раз 0. Во вторых смотря как подключен диод. Он может и 1 и 0 включаться. В общем нужна схема.
const int ledPin = 9; const int btnPin = 2; int state = 0; void setup() { pinMode (ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode (btnPin, INPUT_PULLUP); } void loop() { switch (state) { case 0: if (!digitalRead(btnPin)) { delay(100); state = 1; digitalWrite(ledPin, HIGH); } break; case 1: if (digitalRead(btnPin)) { delay(100); state = 2; } break; case 2: if (!digitalRead(btnPin)) { delay(100); state = 3; digitalWrite(ledPin, LOW); } break; case 3: if (digitalRead(btnPin)) { delay(100); state = 0; } break; } }