Arduino è una piattaforma hardware open-source basata su Microcontrollori Atmel AVR (es. ATmega328 per Arduino Uno). La scheda include regolatore di tensione, oscillatore (16MHz) e interfaccia USB .

Struttura del codice (Sketch):

  • void setup(): Eseguita una sola volta all’avvio/reset. Serve per inizializzare pin e librerie .
  • void loop(): Eseguita continuamente in ciclo infinito. Contiene la logica principale.

Gestione Tempo:

  • delay(ms): Blocca l’esecuzione del processore (da evitare per multitasking).
  • millis(): Restituisce i millisecondi trascorsi dall’avvio. Utile per gestire eventi senza bloccare il loop.
  • Timer Hardware: Arduino (ATmega328) ha 3 timer (Timer0, Timer1, Timer2) che contano colpi di clock indipendentemente dal software.

PWM (Pulse Width Modulation): Poiché Arduino non ha uscite analogiche vere, usa il PWM (tramite analogWrite()) per simulare tensioni intermedie variando il Duty cycle di un’onda quadra. Utile per dimmerare LED o controllare motori.


Interrupt

Un Interrupt, in informatica, è un segnale asincrono che indica il “bisogno di attenzione” da parte di una periferica finalizzata ad una particolare richiesta di servizio, un evento sincrono che consente l’interruzione di un processo qualora si verifichino determinate condizioni (gestione dei processi) oppure più in generale una particolare richiesta al sistema operativo da parte di un processo in esecuzione.

Wikipedia

Gli Interrupt sono eventi che sospendono il programma principale per eseguire immediatamente una funzione specifica detta ISR (Interrupt Service Handler), per poi riprendere da dove si era interrotto.

Link to original

  • In Arduino si usa attachInterrupt(pin, ISR, mode) dove mode può essere LOW, CHANGE, RISING, FALLING.
  • Regole per le ISR: Devono essere velocissime, non accettano parametri, non restituiscono valori, e le variabili usate devono essere volatile. Mai usare delay() in una ISR.