project 06 board

 

 

 

 

 project 06 componenten

 

 

 

 

 

 project 06 circuit

 

 

 

 

 

blokvorminge tonen aangeboden aan de buzzer

de blokvormige tonen aangeboden
aan de buzzer
 

Project 6 Light Theremin blz 79.          terug naar de inleiding

In dit project worden door handbewewegingen boven een LDR, dmv een piezo (buzzer) element,  tonen geproduceert.

De tonen worden via de tone()  functie naar de buzzer gestuurd

Aanpassingen harware

Pin 13 via 220 ohm en een led met gnd verbinden.

 

//In "ldrWaarde" komt de 10 bit waarde van de spanning over de 10K weerstand 
 
int ldrWaarde; 
 
// In "ldrLaag" en "ldrHoog" komen de min en max waarden die "ldrWaarde" kan aannemen. 
// De weerstand is laag bij licht  dan is de spanning op A0 hoog. 
// De weerstand is hoog bij donker dan is de spanning op A0 laag. 
 
//" ldrWaarde" kan maximaal tussen 0 en 1023 varrieren. 
// Door het calibreren in setup pas je deze range aan.  
 
int ldrLaag = 1023; 
int ldrHoog = 0; 
 
void setup() { 
// Op pin 13 staat de in arduino ingebouwde LED aangesloten. 
// Dit ledje blijft 5 seconde branden om aan te geven dat  
// arduino bezig is met calibreren. 
   
  pinMode(13, OUTPUT); 
  digitalWrite(13, HIGH); 
 
// De while lus gedurende 5 seconden doorlopen 
// Het is de bedoeling dat je tijdens het calibreren wat met je hand boven de LDR wapper 
 
  while (millis() < 5000) { 
    // eerst de spannig over de 10k weerstand uitlezen 
    // en omzetten naar een 10 bit getal wat je in "ldrWaarde" stop 
     
    ldrWaarde = analogRead(A0); 
    // De minimale ldrWaarde calibreren 
     
    if (ldrWaarde > ldrHoog) { 
      ldrHoog = ldrWaarde; 
    } 
    // De maximale ldrWaarde calibreren 
     
    if (ldrWaarde < ldrLaag) { 
      ldrLaag = ldrWaarde; 
    } 
  } 
  // Klaar !! dus het ledje mag uit 
  digitalWrite(13, LOW); 
   
// Het handenwapper resultaat in de seriele monitor bekijken. 
   
  Serial.begin(9600); 
  Serial.print("  ldrLaag:\t");  
  Serial.print(ldrLaag);  
  Serial.print("  ldrHoog\t");  
  Serial.print(ldrHoog);  
} 
 
void loop() { 
  ldrWaarde = analogRead(A0); 
 
  //De ldr waarden naar minimale en maximale toonhoogte mappen 
  int toon = map(ldrWaarde, ldrLaag, ldrHoog, 50, 4000); 
 
// De toon, aangeboden aan pin 8, wordt 20 miliseconde gespeeld 
// Pin 8 is een digitale outputpin die pulsjes met een bepaalde toonfrequentie krijgt aangeboden. 

// Pin 8 hoef je niet als outputpin in setup te initieren
 
  tone(8, toon, 20); 
 
  // 10 miliseconde wachten 
  delay(10); 
}