[Photocell + Button]
// test button
int ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9};
int upSound[] = {100, 200, 300, 400, 500, 600, 700, 800};
int downSound[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
int speaker = 10;
int button1 = 12;
int button2 = 11;
int lightPin = 0;
void setup(){
Serial.begin(9600);
pinMode(speaker, OUTPUT);
for(int i =0; i<=7; i++){
pinMode(ledPin[i], OUTPUT);
}
pinMode(speaker, OUTPUT);
pinMode(button1, INPUT);
}
void loop(){
int lightLevel = analogRead(lightPin);
lightLevel = map(lightLevel, 0, 1023, 0, 10);
Serial.println(lightLevel);
int buttonState1 = digitalRead(button1);
int buttonState2 = digitalRead(button2);
if(buttonState1 == LOW){
for(int i = 0; i<= 7; i++){
analogWrite(ledPin[i], lightLevel);
if(lightLevel>= 1 && lightLevel < 3){
digitalWrite(ledPin[i], HIGH);
tone(speaker, upSound[i]);
delay(20);
digitalWrite(ledPin[i], LOW);
}else if(lightLevel >= 3 && lightLevel < 4){
digitalWrite(ledPin[i], HIGH);
tone(speaker, upSound[i]);
delay(200);
digitalWrite(ledPin[i], LOW);
}else if(lightLevel >= 4 && lightLevel <= 5){
digitalWrite(ledPin[i], HIGH);
tone(speaker, upSound[i]);
delay(800);
digitalWrite(ledPin[i], LOW);
}
}
}else if(buttonState1 == HIGH){
noTone(speaker);
}
if(buttonState2 == LOW){
if(lightLevel>= 0 && lightLevel < 2){
for(int i = 7; i>= 0; i–){
analogWrite(ledPin[i], lightLevel);
digitalWrite(ledPin[i], HIGH);
tone(speaker, downSound[i]);
delay(20);
digitalWrite(ledPin[i], LOW);
}
}else if(lightLevel >=2 && lightLevel<4){
for(int i = 7; i>= 0; i–){
analogWrite(ledPin[i], lightLevel);
digitalWrite(ledPin[i], HIGH);
tone(speaker, downSound[i]);
delay(300);
digitalWrite(ledPin[i], LOW);
}
}else if(lightLevel >=4 && lightLevel <=5){
for(int i = 7; i>= 0; i–){
analogWrite(ledPin[i], lightLevel);
digitalWrite(ledPin[i], HIGH);
tone(speaker, downSound[i]);
delay(1000);
digitalWrite(ledPin[i], LOW);
}
}
}else if(buttonState2 == HIGH){
noTone(speaker);
}
}
//void up(){
// for(int i = 0; i<= 7; i++){
// digitalWrite(ledPin[i], HIGH);
// tone(speaker, upSound[i]);
// delay(200);
// digitalWrite(ledPin[i], LOW);
// delay(200);
// }
//
//}
//
//void down(){
// for(int i = 7; i>= 0; i–){
// digitalWrite(ledPin[i], HIGH);
// tone(speaker, downSound[i]);
// delay(200);
// }
// for(int i =0; i <= 7; i++){
// digitalWrite(ledPin[i], LOW);
// }
// }
[Serail Input]
I definitely gave Soohyun a credit! Her code is more flexible. You can create your own melody by typing letters.
I had a little problem about “empty character constant” so I goologed the answer: ” means empty.
Here is my reference:http://www.codeproject.com/Questions/154469/Help-me-with-empty-character-constant-error
int ledPin[] = {6, 7, 8, 9};
int buzzerPin = 10;
int incomingByte = 0;
void setup(){
Serial.begin(9600);
for(int i = 0; i < 4; i++){
pinMode(ledPin[i], OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
}
void loop(){
if (Serial.available() > 0) {
incomingByte = Serial.read();
if(incomingByte == ”){ //” means empty
delay(500);
}else if(incomingByte == ‘c’){
digitalWrite(ledPin[0], HIGH);
tone(buzzerPin, 262);
delay(300);
noTone(buzzerPin);
digitalWrite(ledPin[0], LOW);
}else if(incomingByte == ‘d’){
digitalWrite(ledPin[1], HIGH);
tone(buzzerPin, 294);
delay(300);
noTone(buzzerPin);
digitalWrite(ledPin[1], LOW);
}else if(incomingByte == ‘e’){
digitalWrite(ledPin[2], HIGH);
tone(buzzerPin, 330);
delay(300);
noTone(buzzerPin);
digitalWrite(ledPin[2], LOW);
}else if(incomingByte == ‘f’){
digitalWrite(ledPin[3], HIGH);
tone(buzzerPin, 349);
delay(300);
noTone(buzzerPin);
digitalWrite(ledPin[3], LOW);
}
}
}