Examples - Electronic Bricks - Electronic Brick Sound

How to generate sound with the Electronik Brick Piezzo Speaker.

That program gives you a basic understanding how to deal with sound using the Rotary and Speaker Electronic Brick.



/*
Interactiv tones - Squarewave
Example: Analog input and analog output
Use the rotary to change tone height

Math formula: timeHigh = period / 2 = 1 / (2 * toneFrequency)

* note 	frequency 	period 	timeHigh(tone)
* c 	        261 Hz 	        3830 	1915
* d 	        294 Hz 	        3400 	1700
* e 	        329 Hz 	        3038 	1519
* f 	        349 Hz 	        2864 	1432
* g 	        392 Hz 	        2550 	1275
* a 	        440 Hz 	        2272 	1136
* b 	        493 Hz 	        2028	1014
* C	        523 Hz	        1912 	956

*/

int val;                      // Input value from rotary
int rotaryPin = 1;            // Analog input rotary
int speakerPin = 9;           // Analog output to speaker
int toneDuration = 1000;      // Tone duration in ms


/*
Function  makeTone
Generates a squarewave tone with an duration
*/
void makeTone(int tone, int duration)
{
        for (long i = 0; i < duration * 1000L; i += tone * 2)
        {
                digitalWrite(speakerPin, HIGH);
                delayMicroseconds(tone);
                digitalWrite(speakerPin, LOW);
                delayMicroseconds(tone);
        }
}


void setup() {
        pinMode(speakerPin, OUTPUT);
}

void loop() {
        val = analogRead(rotaryPin);     // Read the rotary analog value
        makeTone(val, toneDuration);     // Play sound
}