ultimo aggiornamento 29 aprile 2011 |
|
In questa pagina è possibile vedere l'utilizzo del modulo Buzzer, nella pagina presentazione, abbiamo visto cosa sono i buzzer, nella pagina costruzione ne abbiamo visto la costruzione, ora vendiamo come interfacciarlo con la scheda Arduino.
Per generare un suono con la
scheda Arduino si può utilizzare il comando
tone(), questo comando genera un'onda quadra di frequenza specificata (e
duty cycle 50%) su un pin di uscita.
La durata può essere specificata, altrimenti l'onda continua fino a quando viene
inserito il comando noTone ().
Può essere generato un solo tono per volta. Se un tono è già
in emissione su un determinato pin, la chiamata a tone () non avrà alcun
effetto. Se il tono è in emissione sullo stesso pin , la chiamata può cambiare
la frequenza.
L'uso della funzione tone() interferisce con uscita PWM sui piedini 3 e
11
Nota: se vuole emettere dei toni su più pin è necessario chiamare noTone () su
un contatto prima di chiamare il tone() sul pin successivo.
Sintassi
tone (pin, frequenza)
tone (pin, frequenza, durata)
Parametri
pin: il pin su cui generare il tono
frequenza: la frequenza del tono in hertz - unsigned int
durata: la durata del segnale in millisecondi (opzionale) - unsigned long
Programma di prova
/* Programma:prova_buzzer.pde Versione: 1.0 Collaudo modulo buzzer di Adriano Gandolfo */ void setup() { pinMode(2, OUTPUT); // Imposta la porta di collegamento per il buzzer } void loop() { buzz(2, 100, 500); // emissione suono a 100Hz delay(1000); // Attesa buzz(2, 200, 500); // emissione suono a 200Hz delay(1000); // Attesa buzz(2, 300, 500); // emissione suono a 300Hz delay(1000); // Attesa buzz(2, 400, 500); // emissione suono a 400Hz delay(1000); // Attesa buzz(2, 500, 500); // emissione suono a 500Hz delay(1000); // Attesa buzz(2, 1000, 500); // emissione suono a 1 KHz delay(1000); // Attesa buzz(2, 2000, 500); // emissione suono a 2 KHz delay(1000); // Attesa buzz(2, 4000, 500); // emissione suono a 4 KHz delay(1000); // Attesa } void buzz(int targetPin, long frequency, long length) { long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i < numCycles; i++){ // for the calculated length of time... digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphram delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphram delayMicroseconds(delayValue); // wait againf or the calculated delay value } } |
Elenco revisioni | |
29/04/2011 | Emissione preliminare |