Arduino Duemilanove: espandere Hello, Blink! con una breadboard
29 gennaio 2009 , di Boliboop
L’espansione di cui ci occuperemo oggi è esclusivamente di tipo hardware, dal momento che il software da utilizzare (salvo una piccola modifica) è quello del primo Hello, Blink!. Ma per espandere l’hardware faremo uso di una breadboard, già presente nel KIT Workshop di cui abbiamo parlato nell’articolo introduttivo.
In poche parole, la breadboard (letteralmente tavola di pane) è una basetta provvista di numerosi fori connessi fra loro secondo uno schema a righe o colonne, ovvero:
In particolare la nostra breadboard è quella nella figura qui in basso e possiede una parte centrale (divisa in due) costituita da 63 righe con 10 fori per ogni riga (posizioni da A a E e, separate dalle prime, da F a J), più due fasce laterali con ognuna due colonne costituite da 50 fori e contrassegnate da i segni + e -, per un totale di 830 fori (anziché 840 come indicato nella confezione):
A questo punto possiamo utilizzare la breadboard per costruire un circuito elettrico da collegare al nostro Arduino.
Innanzitutto immaginiamo di voler far lampeggiare un led rosso che sia connesso ad un pin diverso dal numero 13. Potremmo piegare le zampette del led per adattarle alla distanza da coprire ma questo, oltre ad essere antiestico, è certamente una soluzione che rischia di rovinare le zampette stesse e limita fortemente l’espansione futura, non permettendo la possibilità di inserire ulteriori componenti. L’idea è quindi quella di utilizzare la breadboard per realizzare delle connessioni elettriche (con dei cavi o con i ponticelli in dotazione con il KIT Workshop) in modo da scegliere facilmente da quale pin far alimentare il nostro caro led rosso.
Ecco come realizzarlo:
In pratica si due collegamenti verdi sono connessi con le due zampette del led rosso e le connettono con le prime due colonne della breadboard, le quali, a loro volta, sono connesse tramite i ponticelli rossi ai pin GND e 10 di Arduino.
In questo modo il programma Hello, Blink! può essere scritto nella seguente maniera
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int ledPin = 10; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } |
ovvero modificando in riga 1 il numero corrispondente al pin da alimentare. Ovviamente, se non si usa il pin 13, il led L incorporato in Arduino non lampeggerà.
Tre led lampeggianti alternativamente. A questo punto è facilmente implementabile una fila di led (nell’esempio 3, ma al massimo 14) che accendono e si spengono in sequenza. Innanzitutto bisogna collegare tutte e tre le zampe corte al GND e ognuna delle tre zampe lunghe a un differente pin, ad esempio il 2, 3 e 4.
Il codice che ho utilizzato per far illuminare alternativamente i tre led è il seguente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int ledPinStart = 2; int numberOfPin = 3; int interval = 500; int i, j; void setup() { for (j = 0; j < numberOfPin; j++) { pinMode(ledPinStart + j, OUTPUT); } } void loop() { for (i = 0; i < numberOfPin; i++) { for (j = 0; j < numberOfPin; j++) { digitalWrite(ledPinStart + j, LOW); } digitalWrite(ledPinStart + i, HIGH); delay(interval); } } |
Come si interpreta il codice? Il primo il costrutto for dentro la funzione setup() serve per settare tutti i pin come OUTPUT. Nel blocco loop() il primo costrutto for ne include un secondo allo scopo di abbassare il livello di tutti i pin a LOW (zero Volt) per poi, fuori dal for nidificato, alzare a HIGH (5 Volt) il livello di un solo pin, sequenzialmente corrispondente ai tre led rossi. Le variabili ledPinStart e numberOfPin permettono di impostare rispettivamente il numero più basso della fila di pin e il numero di led usati.
Studiare le connessioni realizzabili con una breadboard è il primo importante passo per l’espansione di Arduino Duemilanove verso l’utilizzo di periferiche e sensori esterni, collegati ad esso in varia maniera. Nel prossimo articolo, però, affronteremo il secondo tutorial proposto dal sito ufficiale di Arduino, molti utile perché, pur ottenendo sempre il nostro lampeggìo, è basato su un software dalla concezione molto diversa. Stay tuned!




Pianeta Apple
davide ha detto
Grazie innanzitutto per i tutorial…veramente utili a chi come me è totalmente digiuno di elettronica.
E come tale ti faccio una domanda probabilmente banale:
come mai non hai inserito una resistenza nel circuito quando hai sostituito il pin 13 (dotato di resistenza) con un altro pin?
…mi sfugge qualcosa…
Grazie ancora,
Davide
mar 28 2009 alle 18:16
Giuseppe ha detto
Bel tutorial per uno come me che sta muovendo i primi passi con arduino, ma anche io mi accodo alla richiesta di davide, come mai non è stata inserita una resistenza nei led visto che non essendo collegati al pin 13 gli altri pin non sono dotati di resistenze ?
feb 18 2011 alle 23:26