// | |
// SPACEAPPS 2019 | |
// A.N.E.M.O.I. | |
// | |
//Variables to buzzer_song | |
#define c3 7634 | |
#define d3 6803 | |
#define e3 6061 | |
#define f3 5714 | |
#define g3 5102 | |
#define a3 4545 | |
#define b3 4049 | |
#define c4 3816 // 261 Hz | |
#define d4 3401 // 294 Hz | |
#define e4 3030 // 329 Hz | |
#define f4 2865 // 349 Hz | |
#define g4 2551 // 392 Hz | |
#define a4 2272 // 440 Hz | |
#define a4s 2146 | |
#define b4 2028 // 493 Hz | |
#define c5 1912 // 523 Hz | |
#define d5 1706 | |
#define d5s 1608 | |
#define e5 1517 // 659 Hz | |
#define f5 1433 // 698 Hz | |
#define g5 1276 | |
#define a5 1136 | |
#define a5s 1073 | |
#define b5 1012 | |
#define c6 955 | |
#define R 0 // Define a special note, ‘R’, to represent a rest | |
// Melody 1: Star Wars Imperial March | |
int melody1[] = {a4, R, a4, R, a4, R, f4, R, c5, R, a4, R, f4, R, c5, R, a4, R, e5, R, e5, R, e5, R, f5, R, c5, R, g5, R, f5, R, c5, R, a4, R}; | |
int beats1[] = {50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 40}; | |
// Melody 2: Star Wars Theme | |
int melody2[] = {f4, f4, f4, a4s, f5, d5s, d5, c5, a5s, f5, d5s, d5, c5, a5s, f5, d5s, d5, d5s, c5}; | |
int beats2[] = {21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128}; | |
int MAX_COUNT = sizeof(melody1) / 2; | |
long tempo = 10000; | |
int pause = 1000; | |
int rest_count = 50; | |
int toneM = 0; | |
int beat = 0; | |
long duration = 0; | |
int potVal = 0; | |
int speakerOut = 12; | |
// Variables to buzzer_song | |
int dataSensor; //datosdel pin analogico | |
const int MQ135 = A0; //analoge Input | |
//int digital=4; | |
int T = 2000; //Time | |
int rojo = 0; | |
int amarillo = 3; | |
int verde = 5; | |
int buzzer = 12; | |
void setup() | |
{ | |
Serial.begin(9600); | |
pinMode(8, OUTPUT); //azul | |
pinMode(9, OUTPUT); //Rojo | |
pinMode(11, OUTPUT); //verde | |
pinMode(buzzer, OUTPUT); | |
} | |
void loop() | |
{ | |
dataSensor = (analogRead(MQ135)); //Sensor input | |
if (dataSensor <= 70) | |
{ | |
Serial.print("Good: "); | |
Serial.println(verde); | |
RGB(0, 255, 0); | |
} | |
if (dataSensor > 70 && dataSensor <= 100) | |
{ | |
Serial.print("Less: "); | |
Serial.println(amarillo); | |
RGB(255, 120, 0); | |
} | |
if (dataSensor > 100) | |
{ | |
Serial.print("Bad air: "); | |
Serial.println(rojo); | |
RGB(255, 0, 0); | |
while (dataSensor > 17) | |
{ | |
dataSensor = (analogRead(MQ135)); //Entrada sensor | |
buzzer_song(); | |
} | |
} | |
} | |
void RGB(int rojo, int verde, int azul) | |
{ | |
analogWrite(9, rojo); //R | |
analogWrite(10, verde); //G | |
analogWrite(8, azul); //B | |
} | |
void buzzer_song() | |
{ | |
//Melody1 | |
for (int i = 0; i < MAX_COUNT; i++) | |
{ | |
toneM = melody1[i]; | |
beat = beats1[i]; | |
duration = beat * tempo; | |
playTone(); | |
delayMicroseconds(pause); | |
} | |
} | |
void playTone() | |
{ | |
long elapsed_time = 0; | |
if (toneM > 0) | |
{ | |
while (elapsed_time < duration && dataSensor > 17) | |
{ | |
digitalWrite(buzzer, HIGH); | |
delayMicroseconds(toneM / 2); | |
digitalWrite(buzzer, LOW); | |
delayMicroseconds(toneM / 2); | |
elapsed_time += (toneM); | |
dataSensor = (analogRead(MQ135)); //Entrada sensor | |
} | |
} | |
else | |
{ | |
for (int j = 0; j < rest_count; j++) | |
{ | |
delayMicroseconds(duration); | |
} | |
} | |
} |
We're working hard!! :D