Je hebt nodig: een breadbord, male to male jumper wires, een Buzzer en een Arduino Uno
In deze les gaan we geluiden maken met een Buzzer (zoemer). Er zijn twee soorten zoemers: Actief en Passief. Een Actieve Buzzer maakt meteen geluid als je er spanning op zet. Je kunt een platte ronde batterij van 3V gebruiken om het te testen. Een Passieve Buzzer maakt geen geluid als je de batterij gebruikt! Een Passieve Buzzer maakt pas geluid als de spanning wisselt waardoor er een frequentie ontstaat. Dit kun je handig doen met een Arduino natuurlijk! In dezel les leer je met de functie tone()
de verschillende toonhoogte te maken. Tussen de haakjes () kun je het pinnummer, de frequentie in Herz en de tijdsduur in milliseconden meegeven. Bijvoorbeeld: tone(8, 440, 500);
.
We sluiten het plus + pootje van de Buzzer aan op Pin 8, en het andere pootje sluiten we aan op GND (Ground).
In deze Sketch gaan we 5 verschillende toonhoogte programmeren. Neem het programma over en test het uit. Zie je iets speciaals aan de frequenties die hier zijn gebruikt: 220, 440, 880, etc ? Experimenteer maar met de frequentie (toonhoogte), de toonduur in milliseconden en de delay tijd.
int buzzerPin = 8; void setup() { } void loop() { tone(buzzerPin, 220, 500); delay(1000); tone(buzzerPin, 440, 500); delay(1000); tone(buzzerPin, 880, 500); delay(1000); tone(buzzerPin, 1760, 500); delay(1000); tone(buzzerPin, 3520, 500); delay(1000); }
Om een soort brandalarm geluidseffect te maken moeten we de frequentie heel snel in stapjes omhoog laten gaan. Dit gaan we doen met een for()
functie.
int buzzerPin = 8; void setup() { pinMode (buzzerPin,OUTPUT); } void loop() { for(int i=220;i<=880;i++) { tone(buzzerPin, i); delay(5); } }
Kijk eens goed naar de for()
functie.
We maken één variabele i
en gebruiken deze in een for()
loop. for(i=220;i<880;i++)
i begint bij 220, hij moet kleiner blijven dan 880, en i wordt steeds eentje meer want i++ betekent eigenlijk i=i+1. Dan
tussen de {} staat: tone(buzzerPin, i);
, hier zie je dat de variabele i wordt gebruikt voor de frequentie.
Bij elke herhaling van de loop wordt i dus een ander getal, ofwel een andere frequentie. Deze loop of lus heraald zich met een delay ertussen van 5 milliseconden.
Experimenteer in deze Sketch eens met de delay tijd, of experimenteer eens met de getallen in de for()
functie.
Als je een liedje wilt schrijven moet je weten hoeveel Herz een bepaalde noot is. Op deze wiki pagina: Toonhoogtetabel kun je de noten vinden met de frequentie in Herz. Ook moet je weten hoelang een noot duurt. In het liedje hieronder zie je dat er hele, halve, kwart en achtste worden gebruikt. Kopieer het programma en test het uit. Bedenk daarna je eigen liedjes.
int buzzerPin = 8; int c = 261; int d = 293; int e = 329; int f = 349; int g = 391; int a = 440; int Bb = 466; int b = 493; int hogeC = 523; int achtste = 500/2; int kwart = 1000/2; int half = 2000/2; void setup(){ pinMode(buzzerPin,OUTPUT); } void loop(){ tone(buzzerPin,c,150*2); delay(200*2); tone(buzzerPin,c,50*2); delay(buzzerPin*2); tone(buzzerPin,d,kwart); delay(kwart); tone(buzzerPin,c,kwart); delay(kwart); tone(buzzerPin,f,kwart); delay(kwart); tone(buzzerPin,e,half); delay(half); tone(buzzerPin,c,150*2); delay(200*2); tone(buzzerPin,c,50*2); delay(50*2); tone(buzzerPin,d,kwart); delay(kwart); tone(buzzerPin,c,kwart); delay(kwart); tone(buzzerPin,g,kwart); delay(kwart); tone(buzzerPin,f,half); delay(half); tone(buzzerPin,c,150*2); delay(200*2); tone(buzzerPin,c,50*2); delay(50*2); tone(buzzerPin,hogeC,kwart); delay(kwart); tone(buzzerPin,a,kwart); delay(kwart); tone(buzzerPin,f,kwart); delay(kwart); tone(buzzerPin,e,kwart); delay(kwart); tone(buzzerPin,d,half); delay(half); tone(buzzerPin,Bb,150*2); delay(200*2); tone(buzzerPin,Bb,50*2); delay(50*2); tone(buzzerPin,a,kwart); delay(kwart); tone(buzzerPin,f,kwart); delay(kwart); tone(buzzerPin,g,kwart); delay(kwart); tone(buzzerPin,f,half); delay(half); }
Veel plezier met het maken van je eigen liedjes!