Arduino - Active Buzzer (met knop)

From SPAD-it Wiki
Jump to: navigation, search

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.

ActiveBuzzer.PNG
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!

Navigatie