Group Members: Batool Al Tameemi, Arshiya Khattak
Concept: For this project, we knew we wanted to implement something piano-esque, i.e. pressing buttons and implementing different sounds. Essentially, it is a simple Arduino circuit that uses three buttons and a buzzer, playing a note every time a button is pressed. However, we wanted to make the concept a little more fun, so we decided to add a photocell (it was also a cool way to add more notes than just 3). When the photocell is uncovered, the buttons play higher frequency notes (A flat, G, and F) and when it’s covered, it plays lower frequency sounds (D, C, and B). The idea is in daylight the keys play more upbeat-sounding tones, while at night they make more sombre-sounding noises.
Video & Implementation
The code for this project was relatively straightforward. The frequency equivalent in Arduino for the notes were taken from this article.
int buzzPin = 8; int keyOne = A1; int keyTwo = A2; int keyThree = A5; int lightPin = A0; int brightness = 0; int keyOneState, keyTwoState, keyThreeState; int flexOneValue; void setup() { Serial.begin(9600); } void loop() { brightness = analogRead(lightPin); keyOneState = digitalRead(keyOne); keyTwoState = digitalRead(keyTwo); keyThreeState = digitalRead(keyThree); Serial.println(brightness); if (brightness < 45) { if (keyOneState == HIGH) { // tone(buzzPin, 262); playTone(587); //D flat } else if (keyTwoState == HIGH) { playTone(523); //C } else if (keyThreeState == HIGH) { playTone(494); } } else { if (keyOneState == HIGH) { // tone(buzzPin, 1000, 400); playTone(831); //A } else if (keyTwoState == HIGH) { playTone(784); //G } else if (keyThreeState == HIGH) { playTone(698); } } } void playTone(int frequency) { int duration = 200; tone(buzzPin, frequency, duration); delay(duration); noTone(buzzPin); }
Future Highlights and Improvements
One thing that we both thought would be cool to implement on a longer form of this project would be to have different levels of brightness play different notes, rather than just having two states. It would also be cool to incorporate different forms of input, such as the flex sensor (we tried to use it but it was a bit buggy so we scrapped the idea).