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.

buzzer_arduino.JPG

homotix

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.

buzzer_nuovo_modello-montato_1.JPG

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
Private Policy Cookie Policy