#define LIGHT_SENSOR_PIN 36
#define buzz 2
struct Tom {
int frequencia;
int duracao;
};
Tom tomDark[] = {
{100, 100}, {0, 50}, {150, 100}, {0, 50}, {100, 100}, {0, 200}
};
Tom tomDim[] = {
{200, 100}, {0, 50}, {250, 100}, {0, 50}, {200, 100}, {0, 50}, {150, 100}, {0, 200}
};
Tom tomLight[] = {
{400, 100}, {0, 50}, {450, 100}, {0, 50}, {400, 100}, {0, 50}, {350, 100}, {0, 200}
};
Tom tomBright[] = {
{800, 100}, {0, 50}, {850, 100}, {0, 50}, {800, 100}, {0, 50}, {750, 100}, {0, 200}
};
Tom tomVeryBright[] = {
{1600, 100}, {0, 50}, {1650, 100}, {0, 50}, {1600, 100}, {0, 50}, {1550, 100}, {0, 200}
};
char estadoIluminacao[] = "nenhum";
void tocarTons(Tom tons[], int tamanho) {
for (int i = 0; i < tamanho; i++) {
if (tons[i].frequencia == 0) {
noTone(buzz);
} else {
tone(buzz, tons[i].frequencia, tons[i].duracao);
}
delay(tons[i].duracao);
}
}
void setup() {
Serial.begin(9600);
pinMode(buzz,OUTPUT);
}
void loop() {
int analogValue = analogRead(LIGHT_SENSOR_PIN);
Serial.print("Analog Value = ");
Serial.print(analogValue);
if (analogValue < 40) {
Serial.println(" => Dark");
if(strcmp(estadoIluminacao, "Dark") != 0){
tocarTons(tomDark, 6);
}
strcpy(estadoIluminacao, "Dark");
} else if (analogValue < 800) {
Serial.println(" => Dim");
if(strcmp(estadoIluminacao, "Dim") != 0){
tocarTons(tomDim, 8);
}
strcpy(estadoIluminacao,"Dim");
} else if (analogValue < 2000) {
Serial.println(" => Light");
if(strcmp(estadoIluminacao, "Light") != 0){
tocarTons(tomLight, 8);
}
strcpy(estadoIluminacao,"Light");
} else if (analogValue < 3200) {
Serial.println(" => Bright");
if(strcmp(estadoIluminacao, "Bright") != 0){
tocarTons(tomBright, 8);
}
strcpy(estadoIluminacao,"Bright");
} else {
Serial.println(" => Very bright");
if(strcmp(estadoIluminacao, "Very bright") != 0){
tocarTons(tomVeryBright, 8);
}
strcpy(estadoIluminacao, "Very bright");
}
delay(500);
}