Programma di simulazione per Arduino Un interessante simulatore di circuiti elettronici che possono impiegare Arduino (ma non solo) si può usare online all indirizzo circuits.io Per utilizzare questo servizio occorre registrarsi. Vediamo come realizzare un semplice esempio: cliccare su Create e Open Electronics Lab Hub, poi cliccare Compare una breadboard nuova. Possiamo aggiungere nuovi componenti premendo il pulsante Compare un elenco con i componenti che possiamo aggiungere al nostro progetto. Possiamo trascinarli sulla breadboard, ruotarli, collegarli Proviamo a realizzare un semplice circuito con una batteria da 9V, un led, una resistenza ed un pulsante. Un componente posizionato sulla breadboard è automaticamente inserito nei fori. Ricordo che i fori della parte centrale sono collegati tra di loro verticalmente 5 a 5 (guardando i numeri e le lettere di riferimento il foro 50 A e 50 E sono collegati tra loro, e separati dal foro 50 H). I fori delle due file orizzontali superiori e inferiori sono collegati in orizzontale (di solito si connette l alimentazione, e per questo sono riportati i simboli + e -) In ogni caso, se ci dimentichiamo, spostando il puntatore del mouse su un foro vengono evidenziati i collegamenti interni con una linea verde ed il foro selezionato con un quadratino rosso. Cliccando prima un foro vuoto e poi un altro (o un componente) compare un filo di collegamento (di cui possiamo eventualmente cambiare colore) Per cancellare un filo lo possiamo selezionare e premere CANC. Per spostare un estremità di un filo prima lo selezioniamo e poi clicchiamo e trasciniamo l estremità che vogliamo spostare (contraddistinta da un pallino bianco) Per far i collegamenti curvi possiamo cliccare in regioni intermedie che seguono la curvatura (non nei fori)
Dopo aver posizionato e collegato i componenti il risultato è questo: Nota: il terminale positivo (anodo)del led (quello più lungo) è quello piegato. La parte smussata è il terminale negativo (catodo) posizionando il mouse sui terminali il programma ce lo ricorda. La corrente fluisce dall anodo al catodo, nella direzione della freccia. Possiamo anche vedere lo schema elettrico corrispondente cliccando il secondo pulsante in alto a destra (Schematics view) in genere per avere dei risultati accettabili occorre spostare qualche componente (o ruotarlo) Passiamo adesso alla simulazione. Premiamo: start simulation. Adesso cliccando sul pulsante il led si accenderà. Se vogliamo che sia più luminoso possiamo diminuire il valore della resistenza (di default è 1kohm) ; possiamo effettuare quest operazione anche durante l esecuzione. Cosa succede se diminuiamo troppo, per esempio mettiamo 100ohm? Il led si brucia. Per fortuna questa è una simulazione!
ARDUINO E LED Passiamo ad Arduino.lo troviamo nell elenco dei componenti. In questo esempio ci sono due linee digitali, la 2 e la 4, che comandano ciascuna un led. I led però sono connessi in modi diversi, per mostrare la logica di funzionamento. Lo schema elettrico corrispondente è mostrato di seguito: notiamo che in un caso la serie led-resistore è collegata tra massa e il pin digitale, nell altro caso tra 5V e il pin digitale. (Nota: non importa se scambio il led e il resistore perché sono in serie, quindi attraversati dalla stessa corrente) Con riferimento alla figura a lato il led si accende se la tensione in alto è maggiore di quella in basso ( i nostri livelli di tensione sono pari a 5V e 0V, trattandosi di un segnale digitale) Quindi ci sono due possibili soluzioni: Pin digitale in alto e 0V (GND) in basso: il led si accende se il pin è HIGH Tensione di 5V fissa in alto e pin digitale in basso :il led si accende se il pin è LOW
La logica risulta quindi opposta tra le due configurazioni. Quando il led è acceso la tensione ai sui capi è relativamente indipendente dal valore della corrente e in prima approssimazione si può considerare un valore di 2V. Se vogliamo sapere il valore della corrente che circola nel led scriviamo: i LED = 5V 2V R = 3V R Con una resistenza da 330 ohm ci aspettiamo quindi una corrente di circa 10mA. Attenzione: se la corrente supera i 20mA rischiamo di bruciare il LED. Anche se lo colleghiamo al contrario il LED si può danneggiare (questi parametri dipendo dal tipo di LED, ma spesso la massima tensione inversa è 5V quindi siamo al limite) Tra l altro comunque 20mA è la massima corrente raccomandata che si può prelevare da un pin digitale di Arduino (la massima assoluta 40mA). Per i pin di alimentazione (5V e GND) la corrente massima è di 200mA. A questo punto cliccando su Code Editor compare una finestra dove possiamo scrivere il codice, caricarlo sull Arduino e lanciare la simulazione! decisamente comodo! Si può anche far copia incolla di programmi che già abbiamo. In questo caso ho modificato l esempio BLINK (che viene proposto inizialmente) Cliccando Upload&Run si vedrà il tempo di simulazione scorrere e i due led che si accendono alternativamente per 1 secondo.
PULSANTI E LED I pulsanti usati normalmente con Arduino sono del tipo mostrato in figura: Anche se vi sono quattro terminali, questi sono internamente collegati due a due, come evidenziato sotto: Premendo il pulsante la parte sinistra e destra viene collegata (i terminali risultano quindi collegati tutti insieme). Rilasciando il pulsante si torna alla situazione di partenza. In questo quindi si differenzia da un interruttore (anche se spesso il simbolo usato negli schemi elettrici nel mondo Arduino è quello di un interruttore) Vogliamo usare il pulsante per dare un segnale digitale all Arduino: per esempio se il pulsante è premuto l ingresso digitale dell Arduino legge 5V, se il pulsante non è premuto avrà 0V. Oppure potremmo usare la logica inversa. In questo caso notiamo che non è più l Arduino che fornisce una tensione, ma la diamo noi ad uno degli ingressi digitali dell Arduino. La soluzione più semplice è una delle due configurazioni: Se il pulsante non è premuto la corrente che circola è nulla, quindi è nulla la caduta di tensione sulla resistenza, e il punto indicato come Vout risulta essere allo stesso potenziale dell altro estremo della resistenza (per questo si parla di resistenza di pull up o pull down).
Se il pulsante è premuto, Vout risulta connessa a massa o a Vcc dal pulsante stesso, e la corrente circolante è data da Vcc/R (per questo R in genere non deve essere bassa possiamo scegliere 10 kohm) Quindi, collegando Vout ad un pin digitale d ingresso dell Arduino ( 1 ) : nel caso di sinistra (con resistenza di pull up) quando premiamo il pulsante il valore letto è LOW. Se il pulsante non è premuto, la resistenza di pull up farà fede al suo nome e il valore letto sarà HIGH. Nel caso di destra la logica è opposta (premendo il pulsante viene letto HIGH) Esempio semplice Con il seguente codice l accensione del led dipende dal fatto che il pulsante sia premuto o meno. La logica può essere più complicata: possiamo notare che abbiamo 2 circuiti indipendenti, uno per il led e uno per il pulsante ed è l Arduino, con il programma che sviluppiamo a gestire questi circuiti esterni. 1 Dobbiamo specificare se il pin digitale è un ingresso oppure un uscita con il comando pinmode()