Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Unisciti agli altri appassionati per approfondire insieme Raspberry Pi, Arduino ed ESP32.

Perché unirti?

  • Supporto esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e omaggi festivi: Partecipa a promozioni e omaggi durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

5.13 Interrupt

Se utilizzi alcune funzioni delay() in un progetto che impiega sensori, potresti notare che quando attivi questi sensori, il programma potrebbe non rispondere. Questo perché l’istruzione delay provoca una sospensione del programma, impedendogli di ricevere i segnali inviati dal sensore alla scheda di controllo.

In questi casi, è possibile utilizzare gli interrupt. Gli interrupt consentono al programma di non perdere nessun impulso.

In questo capitolo, utilizziamo un buzzer attivo e dei pulsanti per sperimentare il processo di utilizzo degli interrupt.

Nella funzione loop(), utilizziamo delay(1000) per contare i secondi. Inserisci il pulsante per controllare il buzzer all’interno dell’ISR, in modo che non venga disturbato dal delay e completi il compito senza problemi.

Nota

Le ISR sono un tipo particolare di funzioni che hanno alcune limitazioni uniche che la maggior parte delle altre funzioni non ha. Un’ISR non può avere parametri e non deve restituire nulla. Generalmente, un’ISR dovrebbe essere il più breve e veloce possibile. Se il tuo sketch utilizza più ISR, solo una può essere eseguita alla volta; gli altri interrupt verranno eseguiti dopo che quello attuale è terminato, seguendo un ordine che dipende dalla priorità di ciascuno.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda SunFounder R3

ACQUISTA

Breadboard

ACQUISTA

Cavi di Collegamento

ACQUISTA

Resistore

ACQUISTA

Pulsante

ACQUISTA

Cicalino

-

Schema Elettrico

../_images/circuit_8.6_interval.png

Collegamenti

../_images/interrupt_bb.jpg

Codice

Nota

  • Apri il file 5.13.interrupt.ino nel percorso 3in1-kit\basic_project\5.13.interrupt.

  • Oppure copia questo codice nell”Arduino IDE.

  • Oppure carica il codice tramite l”Arduino Web Editor.

Dopo aver caricato correttamente il codice, accendi il Serial Monitor e vedrai stampato un numero incrementale automaticamente ogni secondo. Se premi il pulsante, il buzzer emetterà un suono. La funzione del buzzer controllata dal pulsante e la funzione di conteggio temporale non entreranno in conflitto tra loro.

Come funziona?

  • attachInterrupt(digitalPinToInterrupt(pin), ISR, mode): Aggiungi un interrupt.

    Sintassi

    attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

    Parametri
    • pin: il numero di pin di Arduino. Dovresti usare digitalPinToInterrupt(pin) per convertire il pin digitale effettivo in un numero di interrupt specifico. Ad esempio, se connetti al pin 3, usa il suo digitalPinToInterrupt(3) come primo parametro.

    • ISR: l’ISR da chiamare quando si verifica l’interrupt; questa funzione non deve prendere parametri e non deve restituire nulla. Questa funzione è talvolta chiamata routine di servizio di interrupt.

    • mode: definisce quando l’interrupt dovrebbe essere attivato. Quattro costanti sono predefinite come valori validi:

      • LOW per attivare l’interrupt ogni volta che il pin è basso,

      • CHANGE per attivare l’interrupt ogni volta che il pin cambia valore.

      • RISING per attivare quando il pin passa da basso ad alto.

      • FALLING per quando il pin passa da alto a basso.

Nota

Diversi modelli di schede possono utilizzare i pin di interrupt in modo diverso. Sulla scheda R3, solo il pin 2 e il pin 3 possono utilizzare gli interrupt.