In questa pagina vi illustrerò alcuni esempi pratici per incominciare ad imparare ad utilizzare i pin di arduino come input e output. Commenterò ogni istruzione dello sketch in modo da farvi comprendere meglio il funzionamento. Iniziamo con un led che lampeggia… 🙂
Blink
Questo sketch farà semplicemente lampeggiare un led ad intervalli di 1 secondo. Modificando il ritardo [ delay(valore_in_millisecondi); ], il led lampeggerà più velocemente o più lentamente in base al valore dato.
Breadboard
Materiale:
- Arduino
- 1 Led
- 1 Resistenza da 220 ohm
Sketch
int led = 9; // Creiamo una variabile di tipo intero con valore 9. // Il 9 sarà il pin dove andrà collegato l'anodo del led void setup() { pinMode(led, OUTPUT); // Impostiamo il pin 9 come pin di OUTPUT } void loop() { digitalWrite(led, HIGH); // Scriviamo sul pin 9 lo stato alto (5 Volt) delay(1000); // Ritardo di 1000ms = 1 secondo digitalWrite(led, LOW); // Scriviamo sul pin 9 lo stato basso (0 Volt) delay(1000); // Ritardo di 1000ms = 1 secondo }
Fade
Questo sketch accenderà e spegnerà un led con l’effetto dissolvenza utilizzando un pin PWM (Se non sai cosa sono i pin PWM leggi qui). Lo schema elettrico è lo stesso dell’esempio precedente.
Sketch
int led = 9; // Creiamo una variabile di tipo intero con valore 9. // Il 9 sarà il pin dove andrà collegato l'anodo del led int luminosita = 0; // Variabile in cui andrà memorizzato il valore di // luminosità che avrà il led. int fadeAmount = 5; // Incremento e Decremento di 5 void setup() { pinMode(led, OUTPUT); // Impostiamo il pin 9 come pin di OUTPUT } void loop() { analogWrite(led, luminosita); // Scriviamo sul pin 9 il valore di luminosità. // Dovrà essere un valore compreso tra 0 e 255 luminosita = luminosita + fadeAmount; // Incrementiamo il valore di luminosità di 5 per ogni ciclo // fino ad arrivare a 255. if (luminosita == 0 || luminosita == 255) { // Se luminosità è uguale a 0 o a 255 fadeAmount = -fadeAmount ; // fadeAmount sarà uguale all'opposto del suo valore // Es. Se fadeAmount è uguale a 5 // in questo caso diventerà -5 e viceversa. } delay(30); // Ritardo di 30ms (in modo da vedere l'effetto dissolvenza) }
Button
In questo esempio vedremo come accendere e spegnere un led tramite un pulsante. Il funzionamento è abbastanza semplice, finché il pulsante è premuto il led rimarrà acceso, se lasciamo il pulsante il led si spegnerà.
Breadboard
Materiale:
- Arduino
- 1 LED
- 1 Pulsante da CS
- 1 Resistenza da 10 kohm
- 1 Resistenza da 220 ohm
Sketch
const int Pulsante = 2; // 2 sarà il pin dove andrà collegato il pulsante const int ledPin = 9; // 9 sarà il pin dove andrà collegato l'anodo del led int Stato_Pulsante = 0; // Variabile su cui andrà memorizzato il valore del pulsante void setup() { pinMode(ledPin, OUTPUT); // Impostiamo il pin 9 come pin di OUTPUT (LED) pinMode(Pulsante, INPUT); // Impostiamo il pin 2 come pin di INPUT (PULSANTE) } void loop(){ Stato_Pulsante = digitalRead(Pulsante); // Con questa istruzione leggiamo il valore del pulsante // e lo salviamo nella variabile stato_pulsante if (Stato_Pulsante == HIGH) { // Se Stato_Pulsante è uguale a 1 o HIGH (5 volt) digitalWrite(ledPin, HIGH); // Scriviamo sul pin 9 lo stato alto (5 Volt) } else { // Altrimenti digitalWrite(ledPin, LOW); // Scriviamo sul pin 9 lo stato basso (0 Volt) } }
Debounce
In questo esempio vedremo come lasciare acceso o spento un led con un pulsante. Da non confondersi con l’esempio precedente. In questo caso premendo il pulsante una sola volta il led rimarrà acceso, ripremendolo il led si spegnerà. Lo schema elettrico è lo stesso dell’esempio Button. Nello sketch noterete anche la funzione millis() non è altro che una funzione del core di Arduino che restituisce il numero di millisecondi trascorsi dall’istante in cui si fornisce l’alimentazione ad arduino.
Sketch
const int Pulsante = 2; // 2 sarà il pin dove andrà collegato il pulsante const int ledPin = 9; // 9 sarà il pin dove andrà collegato l'anodo del led // Variabili int ledState = HIGH; // Variabile su cui andrà memorizzato lo stato del led (HIGH o LOW) int buttonState; // Variabile su cui andrà memorizzato il valore del pulsante int lastButtonState = LOW; // Variabile su cui andrà memorizzato l'ultimo valore del pulsante long lastDebounceTime = 0; // Variavile su cui andrà memorizzato il tempo dell'ultima volta che il pulsante è stato premuto long debounceDelay = 50; // Tempo di antirimbalzo (Aumentare se si vede uno sfarfallio nel led) void setup() { pinMode(Pulsante, INPUT); // Impostiamo il pin 2 come pin di INPUT (PULSANTE) pinMode(ledPin, OUTPUT); // Impostiamo il pin 9 come pin di OUTPUT (LED) digitalWrite(ledPin, ledState); // Impostiamo lo stato iniziale del led, in questo caso è HIGH. } void loop() { int reading = digitalRead(Pulsante); // Con questa istruzione leggiamo il valore del pulsante // e lo salviamo nella variabile reading if (reading != lastButtonState) { // Se reading è diverso di lastButtonState lastDebounceTime = millis(); // lastDebounceTime sarà uguale a mills() } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == HIGH) { ledState = !ledState; } } } digitalWrite(ledPin, ledState); lastButtonState = reading; }
BuzzerButton
Ora vedremo come far suonare un Buzzer con un Pulsante. Il tutto si basa sulla funzione tone(pin, frequency, duration) , che genera un onda quadra di una frequenza specifica su un pin dove andrà il buzzer.
Questa funzione è abbastanza semplice da utilizzare. Su pin va inserito il valore del pin utilizzato per il buzzer, suduration la durata del suono in millesecondi e su frequency la frequenza della nota musicale (ogni nota ha una sua frequenza).
Ecco un elenco con le frequenze di tutte le note musicali:
/************************************************* * Public Constants *************************************************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
BreadBoard
Materiale:
- Arduino
- 1 Buzzer
- 1 Resistenza da 100 ohm
- 1 Resistenza da 10 kohm
- 1 Pulsante da CS
Sketch
#include "pitches.h" // Libreria con tutte le frequenze delle varie note musicali const int Pulsante = 2; const int Buzzer = 7; int Stato_Pulsante = 0; int note = NOTE_A4; void setup() { pinMode(Pulsante, INPUT); // Impostiamo il pin 2 come pin di INPUT (PULSANTE) } void loop() { Stato_Pulsante = digitalRead(Pulsante); // Con questa istruzione leggiamo il valore del pulsante // e lo salviamo nella variabile stato_pulsante if (Stato_Pulsante == HIGH) { // Se Stato_Pulsante è uguale a 1 o HIGH (5 volt) tone(Buzzer, note, 20); // Riproduci la nota NOTE_A4 (LA) da buzzer sul pin 7 } }
Ora potete costruirvi una tastiera musicale 🙂 . Ecco a voi il tutorial !!!