Przełączanie przy każdym naciśnięciu
Część sekcji Wejścia ścieżki Arduino w Coddy. Lekcja 4 z 22.
Do tej pory dioda LED naśladowała przycisk: świeciła, gdy był wciśnięty, i gasła po jego zwolnieniu. Włącznik lampy działa inaczej: naciśnij raz, aby ją włączyć, i naciśnij ponownie, aby ją wyłączyć. To jest przełączanie.
Aby przełączać stan, szkic musi wykryć moment wciśnięcia przycisku: teraz jest wciśnięty, ale nie był wciśnięty, gdy ostatnio uruchomiono loop(). Ten moment nazywa się zboczem. Zachowaj poprzedni odczyt w zmiennej przed setup(), tak jak licznik:
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// przycisk został naciśnięty
}
lastReading = reading;
}Przytrzymanie przycisku utrzymuje odczyt LOW, więc zbocze występuje raz na każde naciśnięcie, niezależnie od tego, jak długo przytrzymujesz przycisk.
Aby odwrócić wartość bool, użyj !, co oznacza „nie”: ledOn = !ledOn; zmienia true na false i odwrotnie.
Wyzwanie
ŚredniPrzycisk jest podłączony do pinu 2 (INPUT_PULLUP), a dioda LED do pinu 13. Każde naciśnięcie ma przełączać stan diody LED:
- gdy przycisk zostanie naciśnięty (
LOWteraz,HIGHpoprzednio), przełączledOn - zapisz odczyt w
lastReadingna końculoop() - włącz lub wyłącz diodę LED, aby jej stan odpowiadał
ledOn
Naciśnij Run, kilka razy naciśnij przycisk, a następnie Check.
Spróbuj swoich sił
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// zmień wartość ledOn na przeciwną, gdy przycisk zostanie naciśnięty
// zapamiętaj ten odczyt na następny raz
// włącz lub wyłącz diodę LED zgodnie z wartością ledOn
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wejścia
Poćwicz samodzielnie: Edytor online Arduino