Come mi avevate chiesto in uno dei tutorial precedenti, questa volta vediamo come collegare un Buzzer o un piccolo altoparlante da 8ohm ad Arduino e fargli riprodurre un suono.
Per evitare che Arduino suoni non appena viene programmato ho aggiunto un pulsante allo schema: in questo modo possiamo decidere se riprodurre il suono o no.
Arduino prevede già di suo una funzione che possiamo sfruttare per fargli riprodurre un suono, ovvero "tone":
tone(pin, frequenza, durata);
Esiste anche un'altro comando che a sua volta permette di fermare la riproduzione del suono:
noTone(pin);
Nel circuito che realizzeremo in questo tutorial vogliamo che arduino emetta un suono quando il pulsante viene premuto, quindi i nostro programma sarà:
Per comodità ho creato una variabile con la frequenza del tono: in questo modo basta cambiare il valore per cambiare il suono.
Come potete notare, nella funzione tone non ho specificato la durata, questo perchè il suono deve venire riprodotto solo quando il pulsante viene premuto, e non appena viene rilasciato la funzione noTone fa smettere la riproduzione.
Ora invece creiamo una vera e propria melodia: ricercando in internet ho trovato una lista dove definisce le note con le relative frequenze. Integrando questo file nel nostro programma diventerà più semplice indicare ad Arduino che suono deve riprodurre ed in che sequenza.
Chiamiamo la "libreria delle note" pitches.h, questo file deve essere messo nella stessa cartella dove andremo a salvare il programma che abbiamo realizzato per Arduino.
Ora sarà sufficiente scrivere il nostro programma:
#include "pitches.h"
int pinbuzz = 8;
int pintasto = 2;
int melodia[] = {NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3, NOTE_B3, NOTE_C4};
int tempo[] = {4, 8, 8, 4, 4, 4, 4, 4 }
int nr = 8;
void setup() {
pinMode(pintasto, INPUT);
}
void loop() {
if(digitalRead(pintasto)) {
for (int numero = 0; numero < nr; numero++) {
int duratanota = 1000 / tempo[numero];
tone(pinbuzz, melodia[numero], duratanota);
delay(duratanota * 1.30)
noTone(pinbuzz);
}
delay(50);
}
}
Come potete vedere ho creato due array, uno dove vado a scrivere la melodia mentre l'altro con la durata delle note... e poi ho aggiunto il numero corrispondente alle note da eseguire.
Ora il nostro programma non fa altro che aspettare la pressione del pulsante per eseguire la melodia.
Nell'array ho fatto in modo da dover iserire il valore reali 1 = 4/4, 2 = 1/2, 4 = 1/4, ecc, in seguito ho reato un'altra variabile dove viene calcolato il tempo in millisecondi.
Buon divertimento nel modificare questo semplice programma!
Creare toni con Arduino
Come mi avevate chiesto in uno dei tutorial precedenti, questa volta vediamo come collegare un Buzzer o un piccolo altoparlante da 8ohm ad Arduino e fargli riprodurre un suono.
Per evitare che Arduino suoni non appena viene programmato ho aggiunto un pulsante allo schema: in questo modo possiamo decidere se riprodurre il suono o no.
Materiale necessario:
Schema elettrico:
Arduino prevede già di suo una funzione che possiamo sfruttare per fargli riprodurre un suono, ovvero "tone":
Esiste anche un'altro comando che a sua volta permette di fermare la riproduzione del suono:
Nel circuito che realizzeremo in questo tutorial vogliamo che arduino emetta un suono quando il pulsante viene premuto, quindi i nostro programma sarà:
Per comodità ho creato una variabile con la frequenza del tono: in questo modo basta cambiare il valore per cambiare il suono.
Come potete notare, nella funzione tone non ho specificato la durata, questo perchè il suono deve venire riprodotto solo quando il pulsante viene premuto, e non appena viene rilasciato la funzione noTone fa smettere la riproduzione.
Ora invece creiamo una vera e propria melodia: ricercando in internet ho trovato una lista dove definisce le note con le relative frequenze. Integrando questo file nel nostro programma diventerà più semplice indicare ad Arduino che suono deve riprodurre ed in che sequenza.
Chiamiamo la "libreria delle note" pitches.h, questo file deve essere messo nella stessa cartella dove andremo a salvare il programma che abbiamo realizzato per Arduino.
All'interno del file pitches.h scriviamo:
Ora sarà sufficiente scrivere il nostro programma:
Come potete vedere ho creato due array, uno dove vado a scrivere la melodia mentre l'altro con la durata delle note... e poi ho aggiunto il numero corrispondente alle note da eseguire.
Ora il nostro programma non fa altro che aspettare la pressione del pulsante per eseguire la melodia.
Nell'array ho fatto in modo da dover iserire il valore reali 1 = 4/4, 2 = 1/2, 4 = 1/4, ecc, in seguito ho reato un'altra variabile dove viene calcolato il tempo in millisecondi.
Buon divertimento nel modificare questo semplice programma!
Modificato da RyujiAndy