John Val/ Informatica/ Physical computing

Een vierde project: analoge invoer plus speaker sturing: Light Theremin

Light Theremin Sketch Uitdagingen
Light Theremin:

Light Theremin:licht gedreven elektronisch muziekinstrument


Schema Light Theremin. Klik op het schema voor de bekabeling op het breadboard

In dit vierde project "Light Theremin" laat je de arduino lichtmetingen uitvoeren en laat je een zoemer een toon geven op afhankelijk van de gemeten lichtsterkte. Het staat je vrij een ander type sensor te gebruiken.
Dit project is een aanpassing op project 6 uit het Arduino Projects Book. Nederlandstalige uitleg over de gebruikte functies vind je weer in Arduino programmeer manual 1_0 NL.pdf
Na deze les hoor je te weten:

  1. Dat je met de Arduino een analoog signaal stuurt met behulp van analogWrite()
  2. Dat je met de Arduino een toon maakt met behulp van tone()
  3. Wat het piëzo-elektrisch effect is.
  4. Wat de millis() functie doet.

In dit project gebruiken we een lichtsensor en een piëzo speaker.

Sketch

Sketch Light Theremin

De onderstaande sketch kun je in de IDE laden. In deze sketch wordt getracht de speaker te laten reageren op invallend licht.

/*
 Light Theremin: Piezo speaker laten reageren op invallend licht.
 Voor schema zie https://johnval.nl/school/informatica/arduino/index.htm
 Taken from Arduino Projects Book project 6
 modified 1 maart 2014 By John Val
 This example code is in the public domain.
  
 */
const int pinAnalogeInvoer=A0;  // invoer pin voor lichtsensor
const int pinLedCalibratie=13;  // indicatieled voor licht calibratie
int laagsteLichtWaarde=1023;    // startwaarde voor laagste sensor lezing
int hoogsteLichtWaarde=0;				// startwaarde voor hoogste sensor lezing
int lichtwaarde;
const int piezoPin = 8;     		// pinPiezo
int toonhoogte;
/*
  De setup routine van de sketch zorgt voor callibratie van 5 seconden voor de lichtsensor
 */
void setup() {
	pinMode(pinLedCalibratie,OUTPUT);
	digitalWrite(pinLedCalibratie,HIGH);
	while( millis() < 5000)
	{
	 lichtwaarde = analogRead(pinAnalogeInvoer);
	 if( lichtwaarde > hoogsteLichtWaarde)
	 {
	 	hoogsteLichtWaarde=lichtwaarde;
	 }
	 if( lichtwaarde < laagsteLichtWaarde)
	 {
	 	laagsteLichtWaarde=lichtwaarde;
	 } 
	}
	digitalWrite(pinLedCalibratie,LOW);
	
}
/*
  De eindeloze loop procedure
*/
void loop() {
	lichtwaarde = analogRead(pinAnalogeInvoer);
	toonhoogte=map(lichtwaarde,laagsteLichtWaarde,hoogsteLichtWaarde,50,1000);
	tone(piezoPin,toonhoogte,20);
	delay(10);
}
Opdracht
  1. Zoek uit wat een piëzo speaker is.
  2. In de sketch wordt met de tone() functie alleen de toonhoogte geregeld. Het volume wordt niet geregeld. In de sketch is de spanning over het piëzo element 5V. Probeer eens met een potentiometer of een tweede sensor in een seriëele of een transistor(technische details iprototype ) de spanning over het element te manipuleren. Wat is het effect?
  3. Project 7 uit het Arduino Projects Book maakt met behulp van schakelaars een toetsenbord instrument. Als je wilt kun je daar ook mee experimenteren.
Uitdaging

Uitdaging

  1. Pas de morse sketch zo aan dat er wanneer er teveel licht is (meten dus) in plaats van morse signalen met de led de morse signalen met de speaker worden verricht