Here is the code of the Piano Program
// By Roee Bloch
//All right Reserved
// Copyright (c) 2015 All Right Reserved, http://www.electronics-freak.com
//
// This source is subject to the Roee Bloch License.
// Please see the License.txt file for more information.
// All other rights reserved.
//
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
//
// Roee Bloch
// roeebloch@walla.co.il
// June 2015
#define octave 2 // Octav to hear Lower tones leave value 1
#define Buz1 5 // buzzer pin 1
#define Buz2 7 // buzzer pin 2
#define DO 2500/octave //cycle time of DO in Micro seconds of musical notes
#define RE 2028/octave
#define MI 1805/octave
#define FA 1702/octave
#define SOL 1516/octave
#define LA 1351/octave
#define SI 1204/octave
#define analog_in 0
int my_analog;
int remap;
void setup() {
// put your setup code here, to run once:
pinMode(Buz1, OUTPUT);
pinMode(Buz2, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
my_analog = analogRead(analog_in);
Serial.println (my_analog); //for debug only
remap = map (my_analog, 0, 1024, 0, 8); // remapping to switch case
// Serial.println (remap); // also for debug
switch (remap)
{
case 1: Serial.println ("DO");
sound(DO);
break;
case 2: Serial.println ("RE");
sound(RE);
break;
case 3: Serial.println ("MI");
sound(MI);
break;
case 4: Serial.println ("FA");
sound(FA);
break;
case 5: Serial.println ("SOL");
sound(SOL);
break;
case 6: Serial.println ("LA");
sound(LA);
break;
case 7: Serial.println ("SI");
sound(SI);
break;
}
delay(5);
}
void sound(int mydelay) //mydelay is the actual frequency according to musical note
{
for (int q = 1; q < 100; q++)
{
digitalWrite(Buz1, 1);
digitalWrite(Buz2, 0);
delayMicroseconds(mydelay / 2);
digitalWrite(Buz1, 0);
digitalWrite(Buz2, 1);
delayMicroseconds(mydelay / 2);
}
}
Lessons 8,9 – Code Example
[adsenseyu1]