L’idea
Pur non essendo un ingegnere ho iniziato a dilettarmi con Arduino, ed è stato subito amore.
Il mese scorso ho festeggiato un anno di lavoro in Università di Pavia per conto della cooperativa Biblos. Il lavoro del tecnico informatico non ti lascia sempre in ufficio… occupandoci della manutenzione informatica di diverse aule, siamo soliti spostarci all’interno dell’edificio. Per farci trovare lasciamo dei post-it attaccati alla porta che specificano l’aula in cui ci siamo spostati.
Un giorno abbiamo sbagliato ad appendere il post-it, prendendone uno con indicata l’aula sbagliata. Scherzando ho detto ad una collega “Basta post-it, lo faccio con Arduino”. Per scherzo e per gioco ho realizzato questo progetto che, in questo primo prototipo, non elimina il rischio di sbagliare… ma potrebbe eliminare i post-it! 🙂
Il progetto
Il progetto è molto semplice: Uno schermo LCD collegato ad Arduino UNO che cambia testo in base al bottone cliccato.
Quindi il bottone uno, farà apparire una scritta. Il bottone due un’altra. Il bottone tre un’altra ancora.
Nel momento in cui si clicca uno dei bottoni suona il buzzer, viene modificato il testo (specificato nello sketch) e si accende un led corrispondente. In coda al tutorial il video del risultato.
I componenti necessari
- Arduino UNO
- 3 bottoni/pulsanti
- 1 LCD 16×2 (il mio è retroilluminato blu)
- 3 led (per uniformità li ho scelti anch’essi blu)
- 6 resistenze da 10 K Ohm
- un potenziometro (per il controllo del contrasto dell’LCD)
- un buzzer
- cavetti
- 1 breadboard capiente o, se più piccole, 2
Lo schema di collegamento
Armatevi di cavetti e pazienza! Questo è lo schema che ho realizzato. Lo potete scaricare cliccando sull’immagine 😉
Lo sketch
Carica questo sketch sul tuo Arduino!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
// include la libreria per lo schermo LCD #include <LiquidCrystal.h> // Inizializza la libreria dell'LCD con i pin LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //Definizione dei pin per i bottoni const int buttonPin = A3; const int buttonPin2 = A4; const int buttonPin3 = A5; //Definizione dei pin per i led const int ledPin = 4; const int ledPin2 = 5; const int ledPin3 = 6; // Creazione delle variabili per i bottoni int buttonState = 0; int buttonState2 = 0; int buttonState3 = 0; // Definizione del pin utilizzato dal buzzer int buzzer = 3; //buzzer connesso al pin 3 void setup() { // I pin dei led e del buzzer vengono impostati come output pinMode(ledPin, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(buzzer,OUTPUT); // I pin dei bottoni vengono impostati come input pinMode(buttonPin, INPUT); pinMode(buttonPin2, INPUT); pinMode(buttonPin3, INPUT); // Definisco il formato dell'LCD (16x2) lcd.begin(16, 2); // All'avvio, scrivo nella prima riga "Riga 0" e nella seconda "Riga sotto 0" lcd.print("Riga 0"); lcd.setCursor(0, 1); lcd.print("Riga sotto 0"); // All'avvio, accendo il led corrispondente alla scritta digitalWrite(ledPin, HIGH); } void loop() { // Leggi il valore dei bottoni buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); // Se il primo bottone viene schiacciato if (buttonState == HIGH) { // Ripulisci lo schermo da altre eventuali scritte lcd.clear(); // Scrivo nella prima riga "Riga 0" e nella seconda "Riga sotto 0" lcd.print("Riga 0"); lcd.setCursor(0, 1); lcd.print("Riga sotto 0"); // Accendo il led corrispondente e spengo gli altri digitalWrite(ledPin, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); // suona la nota sul buzzer tone(buzzer,3000,200); delay(500); //durata del suono //Altrimenti, se viene premuto il bottone 2 } else { if (buttonState2 == HIGH) { lcd.clear(); lcd.print("Riga 1"); lcd.setCursor(0, 1); lcd.print("Riga sotto 1"); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin, LOW); digitalWrite(ledPin3, LOW); tone(buzzer,3000,200); delay(500); //Altrimenti, se viene premuto il bottone 3 } else { if (buttonState3 == HIGH) { lcd.clear(); lcd.print("Riga 2"); lcd.setCursor(0, 1); lcd.print("Riga sotto 2"); digitalWrite(ledPin3, HIGH); digitalWrite(ledPin, LOW); digitalWrite(ledPin2, LOW); tone(buzzer,3000,200); delay(500); } } } } |
Il risultato
Eccovi un video di quello che dovreste ottenere: