Nota
Ciao, benvenuto nella comunità di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Immergiti nel mondo affascinante di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e contenuti esclusivi.
Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e concorsi: Partecipa a concorsi e promozioni speciali durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!
1.10 Rilevamento del Cambio di Stato
Panoramica
Quando utilizzi un pulsante, non solo puoi premerlo per accendere il LED e rilasciarlo per spegnerlo, ma puoi anche alternare lo stato di funzionamento del LED ogni volta che viene premuto. Per ottenere questo effetto, è necessario rilevare quando lo stato del pulsante cambia da spento a acceso, un processo noto come «rilevamento del cambio di stato». In questa lezione, mostreremo i risultati del rilevamento del cambio di stato del pulsante nel monitor seriale.
Componenti Necessari
Circuito con Fritzing
In questo esempio, utilizziamo il pin 2 per leggere il segnale del pulsante.
Schema del Circuito
Codice
Nota
Puoi aprire direttamente il file
1.10_stateChangeDetection.inoche si trova nel percorsosunfounder_vincent_kit_for_arduino\code\1.10_stateChangeDetection.Oppure copia questo codice nell’Arduino IDE.
Dopo aver caricato il codice sulla scheda Mega2560, il numero di uscita cambierà tra 0 e 1 ogni volta che premi il pulsante.
Analisi del Codice
Dichiara un pin collegato al pulsante.
const int buttonPin = 2;
Dichiara una variabile chiamata 「detectionState」 per registrare ogni stato rilevato.
int detectionState = 0;
Dichiara due variabili per leggere lo stato del pulsante durante il rilevamento del cambio di stato.
int buttonState = 0;
int lastButtonState = 0;
In setup(), inizializza i pin e avvia il monitor seriale.
pinMode(buttonPin, INPUT);
Serial.begin(9600);
In loop(), leggi il valore di buttonPin e assegnalo alla variabile buttonState.
buttonState = digitalRead(buttonPin);
Confronta buttonState con lastButtonState; se non sono uguali, indica che lo stato è cambiato. È necessario un delay(50) per effettuare il debounce durante il rilevamento. Dopo il confronto, assegna buttonState a lastButtonState per la prossima valutazione.
if (buttonState != lastButtonState) {
...
delay(50);
}
lastButtonState = buttonState;
Dopo aver rilevato un cambio di stato (buttonState != lastButtonState), esegui un ulteriore controllo per determinare la condizione 「Pulsante premuto」.
if (buttonState == HIGH) {
...
}
In stato 「Pulsante premuto」, detectionState viene alternato tra 1 e 0. Contemporaneamente, il valore di detectionState viene stampato.
detectionState=(detectionState+1)%2;
Serial.print("The detection state is:");
Serial.println(detectionState);
Immagine del Fenomeno