Come si è ben capito Arduino offre la possibilità di creare una moltitudine di progetti ideati per qualsiasi scopo, anche per il compleanno di una persona a te cara.
In questo articolo si vedrà in che modo realizzare degli auguri di buon compleanno a tema Arduino, un gesto che potrebbe piacere al tuo amico maker.
Tramite un buzzer passivo sarà possibile eseguire la famigerata canzoncina “Happy birthday to you”, il tutto accompagnato dall’accessione e spegnimento casuale di tre LED. In aggiunta vi sarà un display sul quale sarà possibile scrivere una piccola dedica al proprio caro che compie gli anni.
Per realizzare tale progetto basta utilizzare i seguenti componenti:
- 1x Board di Arduino Uno
- 1x Display LCD
- 1x buzzer passivo
- 1x led rosso
- 1x led bianco
- 1x led verde
- 1x potenziometro da 10k
- Vari jumper
- 1x Breadboard
Il diagramma di collegamento è il seguente:
Il codice è il seguente:
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 |
#include <LiquidCrystal.h> //libreria per utilizzare a pieno le potenzialità del display LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //i digital pin utilizzati dal display LCD #include "pitches.h" //libreria per utilizzare le note //spartito della canzone happy birthday to you int melody[] = { NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4, NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4 }; //durata note int noteDurations[] = { 8, 8, 4, 4, 4, 2, 8, 8, 4, 4, 4, 2, 8, 8, 4, 4, 4, 4, 4, 8, 8, 4, 4, 4, 2, }; void setup() { lcd.begin(16,2); // colonne e righe che compongono il display lcd.setCursor(0,0); //posiziono il cursore alla prima riga lcd.print("Tanti Auguri"); //sul display compare la scritta Tanti Auguri lcd.setCursor(0,1); //posiziono il cursore nella seconda riga lcd.print("Amico MIO"); //sul display compare la scritta Amico Mio pinMode (4, OUTPUT); //imposto il led rosso posizionato al pin digitale 4 come output pinMode (5, OUTPUT); //imposto il led bianco posizionato al pin digitale 5 come output pinMode (6, OUTPUT); //imposto il led verde posizionato al pin digitale 6 come output } void loop() { for (int thisNote = 0 ; thisNote < 25 ; thisNote++) { int randomLight1 = random(4, 7); //tale istruzione genera un numero casuale tra 4 e 6 int randomLight2 = random(4, 7); //tale istruzione genera un numero casuale tra 4 e 6 int randomLight3 = random(4, 7); //tale istruzione genera un numero casuale tra 4 e 6 digitalWrite (randomLight1, HIGH); //accensione di un LED Casuale digitalWrite (randomLight2, HIGH); //accensione di un LED Casuale digitalWrite (randomLight3, LOW); //spegnimento di un led casuale //digitalWrite (random(4, 7), LOW); int noteDuration = 1130/noteDurations[thisNote]; //durata note tone (2, melody[thisNote], noteDuration); //il buzzer produce un nota int pause = noteDuration * 1.275; delay (pause); //intervallo di tempo tra due note noTone(2); //il buzzer non produce alcun suono } delay(3000); digitalWrite(4, LOW); //spengo il led rosso digitalWrite(5, LOW); //spengo il led bianco digitalWrite(6, LOW);//spengo il led verde } |
La funzione tone() permette di generare il suono tramite il cicalino passivo. Vi sono tre parametri formali, il primo parametro costituisce il pin in cui è collegato il cicalino, il secondo parametro è costituito dal vettore note (lo spartito) e dalle relative frequenze, il terzo parametro è costituito dal periodo durante il quale verrà prodotto ciascun suono. Inoltre è stato utilizzata una funzione random per l’accensione e spegnimento dei LED per rendere il progetto più coinvolgente per il festeggiato.
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
Seguici per non perdere le prossime novità!