Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

6
voti

Buzzer Piezoelettrico e Led a ritmo

Oggi vorrei mostrarvi il mio ultimo lavoretto che ho realizzato con la scheda Arduino UNO (chip ATMega 328). Si tratta di un simpatico circuito che unisce un buzzer piezoelettrico e due led che si illuminano al suonare di quest'ultimo. Il circuito è il seguente:


Ecco anche una foto:


circuito%201%20buzzer-led%20a%20diverse%20frequenz

circuito%201%20buzzer-led%20a%20diverse%20frequenz

Il circuito è molto semplice, non ha quasi niente, semplicemente un buzzer piezoelettrico che emetterà i vari suoni e due led, uno rosso e uno verde.

I collegamenti che ho effettuato alla scheda sono i seguenti:

-buzzer, pin13;

-led rosso, pin12;

-led verde, pin11;


Il sorgente utilizzato è il seguente:

void setup()
{  
  pinMode(13, OUTPUT); // buzzer
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop()
{    
  digitalWrite(12, HIGH);
  digitalWrite(11, LOW);
  buzz(13, 100, 500); // suono a 100Hz
  
  digitalWrite(12, LOW);
  digitalWrite(11, HIGH);
  buzz(13, 200, 500); // suono a 200Hz   

  digitalWrite(12, HIGH); 
  digitalWrite(11, LOW);  
  buzz(13, 300, 500); // suono a 300Hz

  digitalWrite(12, LOW);
  digitalWrite(11, HIGH);
  buzz(13, 400, 500); // suono a 400Hz  

  digitalWrite(12, HIGH);
  digitalWrite(11, LOW);
  buzz(13, 500, 500); // suono a 500Hz   
 
 digitalWrite(12, LOW);
 digitalWrite(11, HIGH);
 buzz(13, 1000, 500); // suono a 1 KHz  

 digitalWrite(12, HIGH); 
 digitalWrite(11, LOW);  
 buzz(13, 2000, 500); // suono a 2 KHz  

 digitalWrite(12, HIGH);
 digitalWrite(11, HIGH);
 buzz(13, 4000, 500); // suono a 4 KHz
}

void buzz(int targetPin, long frequency, long length) 
{  
  long delayValue = 1000000/frequency/2; 
  long numCycles = frequency * length/1000; 

  for (long i=0; i < numCycles; i++)
  {    
    digitalWrite(targetPin,HIGH);
    delayMicroseconds(delayValue);
    digitalWrite(targetPin,LOW); 
    delayMicroseconds(delayValue);
  }
}

Questa è l'unica cosa che non mi piace, ma per ora tant'è. Sto parlando del codice in C che le librerie Arduino mettono a disposizione, troppo semplice per i miei gusti, e nascondono troppe cose. Passerò a breve all'assembly, ma occorre ancora un po' per studiarmi quello dell'AVR.

Nello specifico il buzzer piezoelettrico utilizzato è il seguente: http://datasheet.octopart.com/PT-2726PQ-Mallory-datasheet-78353.pdf

Per adesso vi lascio sperando che ciò che ho scritto vi sia utile, un saluto. Biagio.

2

Commenti e note

Inserisci un commento

di ,

Hai ragione, provvedo subito :)

Rispondi

di ,

per rendere lo schemino più completo una tabellina con le caratteristiche dei componenti non sarebbe male,nonchè renderlo conforme a quanto hai indicato, ovvero un pin dedicato per ogni lato positivo di ogni rispettivo componente, sempre ammesso di aver capito bene. :D

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.