Interrupt

void setup()
{
	...
	attachInterrupt(digitalPintoInterrupt(RX), receive, RISING);
/*
	dove 
		- digitalPinToInterrupt(RX) : dove stare in osservazione
		- receive : il puntatore alla funzione che deve agire
		- RISING : condizione che deve accadere perchè venga invocata la funzione
*/
	...
}

Le interrupt di Arduino permettono di definire un'azione che deve essere eseguita quando uno specifico piedino (pin) della board riceve un segnale elettrico (ad esempio un impulso). In questo modo, è possibile far eseguire alla board una determinata operazione in modo asincrono rispetto al normale flusso di esecuzione del codice. Per definire una interrupt in Arduino, si utilizza la funzione attachInterrupt() durante la fase di setup dello sketch. Questa funzione prende come argomenti il piedino in osservazione, il puntatore alla funzione da eseguire e la condizione che deve verificarsi (ad esempio, il fronte di salita o discesa). Nel codice di esempio, viene definita un'interrupt sul piedino RX, che quando riceve un segnale in salita, invoca la funzione receive(). Questa funzione, definita altrove nel codice, deve eseguire l'operazione desiderata in risposta all'interrupt. Le interrupt possono essere utilizzate per una vasta gamma di scopi, come ad esempio la gestione di sensori o l'interazione con altri dispositivi. È importante prestare attenzione alla gestione delle interrupt, in modo da evitare conflitti e garantire il corretto funzionamento del codice.

Funzione Interrupt

void IRAM_ATTR receive(){ // void e senza parametri
	...
}

AttachInterrupt

PulseIN

pulseIn() è una funzione di Arduino che permette di misurare la durata di un impulso elettrico in un determinato piedino. Questa funzione può essere utilizzata per misurare la durata di impulsi di diversi tipi, come ad esempio impulsi generati da sensori di movimento o da telecomandi a infrarossi. La funzione pulseIn() prende in input due parametri: il primo è il piedino su cui si vuole misurare l'impulso, mentre il secondo è il valore che rappresenta lo stato dell'impulso (HIGH o LOW). La funzione restituisce la durata dell'impulso in microsecondi. Per esempio, se si vuole misurare la durata di un impulso generato dal piedino 13 in risposta a un segnale HIGH, si può utilizzare il seguente codice:

int durata_impulso = pulseIn(13, HIGH);

La variabile durata_impulso conterrà quindi la durata dell'impulso in microsecondi. Questa informazione può essere utilizzata per attivare determinate azioni o per analizzare il comportamento di un sistema.

Analogico

Potenziometro

Un potenziometro è un componente elettronico che permette di variare la resistenza elettrica in un circuito. Questo componente è costituito da un resistore variabile e da un cursore che si muove lungo il resistore. In questo modo è possibile variare la resistenza del potenziometro e quindi la quantità di corrente che fluisce in un circuito. I potenziometri sono spesso utilizzati per controllare la luminosità di un LED o il volume di un altoparlante in un sistema audio.

Ci sono due tipi di potenziometri: