Facebook  -  Twitter      

Questo forum fa uso dei cookie
Questo forum utilizza i cookie per memorizzare i dettagli del tuo login o della tua ultima visita. I cookie sono piccoli files di testo salvati nel computer; i cookie da noi utilizzati sono relativi unicamente ai servizi da noi forniti direttamente o dai banner pubblicitari. I cookie su questo forum salvano inoltre i dettagli relativi alle discussioni lette e alle tue preferenze personali. Sei pregato di selezionare il tasto OKAY se sei consapevole della presenza di questi files e ci autorizzi ad utilizarli per le informazioni specificate.

Indipendentemente dalla tua scelta un cookie verrà salvato per memorizzare nel tuo pc la risposta a questo form. Puoi modificare le impostazioni relative ai cookie nelle preferenze del tuo browser.

  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Guida: Gestione degli Interrupts su Arduino

#1
In questa lezione puramente teorica vi spiegherò come gestire gli interrupts, questi sono una funzione fondamentale in tutte le logiche di controllo, grazie alla loro caratteristica di ingressi asincroni, vengono infatti gestiti indipendentemente dallo svolgimento del programma, possono essere utili per gestire determinati controlli che richiedono situazioni che vanno gestite immediatamente, interrompendo (per il tempo necessario) il programma principale
[hide]

Gli interrupt vanno dichiariati direttamente nel Setup con la seguente sintassi:

Codice:
attachInterrupt([Pin], [NomeFunzione], [Condizione]);

in cui andremo a sostituire:
Pin: Numero del pin a cui è collegato l’interrupt (vedi tabella sotto)
Nome Funzione: Nome della subroutine che verrà chiamata quando si invoca l’interrupt
Condizione: Variazione del valore logico del pin che chiamerà l’interrupt (vedi tabella sotto)

Pin di interrupt:

Scheda Int. 0 Int. 1 Int. 2 Int. 3 Int. 4 Int. 5
Uno, Ethernet 2 3
Mega 2560 2 3 21 20 19 18
Leonardo 3 2 1 7

Condizioni di Interrupt:
LOW fa scattare l’evento di interrupt ogni volta che il pin ( 2 o 3 ) ha valore logico basso
CHANGE fa scattare l’evento di interrupt quando il pin cambia stato
RISING fa scattare l’evento di interrupt quando il pin passa da LOW a HIGH
FALLING fa scattare l’evento di interrupt quando il pin passa da HIGH a LOW

Note:
Quando si scrive la funzione che dovrà gestire l’interrupt è meglio tener conto che il comando delay() non funziona, così come il valore restituito dalla funzione millis() non si incrementa e non puoi usarlo come contatore del tempo.

Esempio: facciamo accendere o spegnere il LED sul piedino 13 quando viene premuto il tasto sull’interrupt 0

Codice:
int pin = 13;
volatile int state = LOW;

void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}

void loop()
{
digitalWrite(pin, state);
}

void blink()
{
state = !state;
}
[/hide]

Articolo originale: Funzionamento degli Interrupts con Arduino - Robots
Cita messaggio


[-]
Condividi/Segnala (Mostra tutti)
Facebook Linkedin Twitter

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Guida: XBMC su RaspBerry hamtarociaoo 14 4'402 03-09-2014, 22:24
Ultimo messaggio: hamtarociaoo
  LCD con Arduino hamtarociaoo 0 1'366 25-06-2014, 13:45
Ultimo messaggio: hamtarociaoo
  Funzionamento degli Interrupts con Arduino hamtarociaoo 0 2'172 18-12-2013, 06:35
Ultimo messaggio: hamtarociaoo
  Guida: Installare RaspBian hamtarociaoo 3 2'146 16-12-2013, 22:03
Ultimo messaggio: nicozan72
  Guida: Domotica di base con Arduino hamtarociaoo 7 6'510 06-12-2013, 17:54
Ultimo messaggio: mannana93
  Guida: RaspBerry hamtarociaoo 5 2'815 04-12-2013, 19:44
Ultimo messaggio: Luca23

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Utenti che stanno guardando questa discussione:
1 Ospite(i)


Powered by MyBB, © 2002-2017 MyBB Group.