const int LedR = 5;
const int LedG = 4;
const int LedB = 3;
const int buzz = 2;
const int sensor = A0;
void setup() {
pinMode(LedR, OUTPUT);
pinMode(LedG, OUTPUT);
pinMode(LedB, OUTPUT);
pinMode(buzz, OUTPUT);
pinMode(sensor, INPUT);
}
void loop() {
int value = analogRead(sensor);
int lux = map(value, 0, 1023, 0, 100);
if (lux < 40) {
int melody[] = {262, 294, 330, 349, 392, 440, 494, 523};
int noteDurations[] = {500, 500, 500, 500, 500, 500, 500, 500};
int numNotes = sizeof(melody) / sizeof(melody[0]);
unsigned long currentMillis = millis();
unsigned long previousMillis = 0;
int thisNote = 0;
while (thisNote < numNotes) {
currentMillis = millis();
if (currentMillis - previousMillis >= noteDurations[thisNote]) {
previousMillis = currentMillis;
tone(buzz, melody[thisNote]);
thisNote++;
}
for (int i = 0; i < 256; i++) {
analogWrite(LedR, i);
analogWrite(LedG, 255 - i);
analogWrite(LedB, 0);
delay(5);
}
for (int i = 0; i < 256; i++) {
analogWrite(LedR, 255 - i);
analogWrite(LedG, 0);
analogWrite(LedB, i);
delay(5);
}
for (int i = 0; i < 256; i++) {
analogWrite(LedR, 0);
analogWrite(LedG, i);
analogWrite(LedB, 255 - i);
delay(5);
}
}
noTone(buzz);
} else if (lux >= 40 && lux < 80) {
int melody[] = {262, 294, 330, 349, 392, 440, 494, 523};
int noteDurations[] = {500, 500, 500, 500, 500, 500, 500, 500};
int numNotes = sizeof(melody) / sizeof(melody[0]);
for (int thisNote = 0; thisNote < numNotes; thisNote++) {
tone(buzz, melody[thisNote]);
delay(noteDurations[thisNote]);
noTone(buzz);
delay(20);
}
} else {
noTone(buzz);
analogWrite(LedR, 0);
analogWrite(LedG, 0);
analogWrite(LedB, 0);
}
}