Arduino - Active Buzzer (met knop)
In dit projectje introduceren we de active buzzer. Een active buzzer is een elementje dat vanzelf piept als er spanning op wordt gezet. Van binnen wordt die spanning omgezet in een trilling waardoor de buzzer geluid kan produceren. Het heet Active buzzer omdat het ding zelf zo'n trilling maakt uit de bronspanning. Er is ook een pasieve buzzer die alleen geluid maakt als je de invoer spanning snel laat wisselen. Het voordeel daarvan is dat je de toonhoogte kunt aanpassen, maar de Arduino moet dan het werk doen. De pasieve buzzer komt later nog aan de orde. Het type buzzers dat we hier gebruiken werkt overigens op 5 Volt en er is geen weerstand nodig om de stroom te beperken.
De schakeling
Extra benodigdheden:
- 1 buzzer
- 1 weerstand van 10kΩ
- 1 druknopje
Onderstaande schakeling lijkt heel erg op die van het vorige project. Als je die nog op je breadboard hebt zitten hoef je alleen maar de LED en de weerstand eruit te halen en te vervangen door de buzzer en een extra verbindingsdraadje.
| Verbindingen in het breadboard met een bijbehorende schema tekening |
Het programma
Omdat de schakeling precies hetzelfde is, kunnen we ook hetzelfde programma gebruiken! In onderstaande versie wordt de stand van de buzzer, aan of uit, gewisseld als de knop wordt ingedrukt.
int buzzerpin = 7; // aansluitpin van de buzzer
int btnpin = 1; // aansluitpin van de knop
int staat = LOW; // onthoud aan of het lampje aan is of uit
int wait = 200; // minimale wachttijd (ms) tussen twee knop-drukken
void setup()
{
pinMode(buzzerpin, OUTPUT);
pinMode(btnpin, INPUT);
digitalWrite(buzzerpin,LOW); // zet de buzzer uit (da's wel zo prettig)
staat = LOW;
}
void loop()
{
val=digitalRead(btnpin); // lees de stand van de knop: ingedrukt of niet
if (val==HIGH) // HIGH => de knop is ingedrukt
{
if (staat==LOW)
{
staat=HIGH; // verander in HIGH => buzzer aan
}
else
{
staat=LOW; // verander in LOW => buzzer uit
}
digitalWrite(buzzerpin,staat); // zet de buzzer nu echt aan of uit
delay(wait); // wacht zodat het knopje niet meteen weer ingedrukt kan worden
}
}
Uitleg van het programma
Dit is hetzelfde programma als in het vorige project en het behoeft dan ook geen verdere uitleg.
Beetje spelen
- Kun je ervoor zorgen dat er naast de buzzer ook een LEDje gebruikt wordt, waarbij het LEDje aan gaat als de buzzer uit is en vice versa?
LET OP: Elke pin van de Arduino mag maar een beperkte hoeveelheid stroom leveren. In principe genoeg voor een LEDje, maar niet voor een LEDje en een buzzer. Je moet de LED dus aan een eigen pin hangen!