#include <LiquidCrystal.h>
#include "pitches.h"
LiquidCrystal lcd(13,12,11, 10, 9, 8);
const int switchPin = 6;
int switchState = 0;
int prevSwitchState = 0;
int reply;
const int sensorPin = A0;
const float baselineTemp = 20.0;
const float BETA = 3950;
int melody[] = {
//1=A
NOTE_STOP,NOTE_F5,NOTE_F5,
NOTE_F5,NOTE_A5,NOTE_F6,NOTE_E6,NOTE_E6,NOTE_D6,NOTE_STOP,
NOTE_C6,NOTE_D6,NOTE_C6,NOTE_C6,NOTE_B5,NOTE_A5,NOTE_B5,
NOTE_F5,NOTE_A5,NOTE_F6,NOTE_E6,NOTE_E6,NOTE_D6,NOTE_STOP,
NOTE_C6,NOTE_D6,NOTE_C6,NOTE_B5,NOTE_B5,NOTE_F5,
NOTE_F5,NOTE_A5,NOTE_F6,NOTE_E6,NOTE_E6,NOTE_D6,NOTE_STOP,NOTE_C6,
NOTE_C6,NOTE_D6,NOTE_C6,NOTE_C6,NOTE_B5,NOTE_A5,NOTE_B5,
NOTE_F5,NOTE_A5,NOTE_F6,NOTE_E6,NOTE_E6,NOTE_D6,NOTE_STOP,
NOTE_C6,NOTE_D6,NOTE_D6,NOTE_F6,NOTE_F6,NOTE_F6,NOTE_F6,NOTE_F6,
NOTE_STOP,NOTE_A5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_B5,NOTE_A5,NOTE_G5,NOTE_G5,NOTE_A5,
NOTE_STOP,NOTE_A5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_C6,NOTE_B5,NOTE_B5,NOTE_B5,NOTE_C6,
NOTE_STOP,NOTE_A5,NOTE_E5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_C6,NOTE_A5,NOTE_A5,NOTE_A5,NOTE_B5,NOTE_G5,
NOTE_G5,
NOTE_GS7,NOTE_E7,NOTE_B6,NOTE_AS6,NOTE_A6,
NOTE_STOP,NOTE_A5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_B5,NOTE_A5,NOTE_G5,NOTE_G5,NOTE_A5,
NOTE_STOP,NOTE_A5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_C6,NOTE_B5,NOTE_B5,NOTE_B5,NOTE_C6,
NOTE_STOP,NOTE_A5,NOTE_E5,NOTE_G5,NOTE_A5,NOTE_STOP,
NOTE_C6,NOTE_A5,NOTE_A5,NOTE_A5,NOTE_B5,NOTE_G5,
NOTE_G5,NOTE_E6,NOTE_B5,NOTE_F6,NOTE_B5,NOTE_C6,
NOTE_C6,NOTE_C6,NOTE_DS4
};
float duration[] = {
//1=A
1,1,2,
1,1,1,1,1,1,2,
2,1,1,1,1,1,1,
1,1,1,1,1,1,2,
1,1,1,1,3,1,
1,1,1,1,1,1,1,1,
2,1,1,1,1,1,1,
1,1,1,1,1,1,2,
1,1,1,1,1,1,0.5,1.5,
2,1,1,1,1,2,
2,1,1,1,3,
2,1,1,1,1,2,
2,1,1,1,3,
2,1,1,1,1,2,
2,1,1,1,2,1,
8,
1,1,1,1,4,
2,1,1,1,1,2,
2,1,1,1,3,
2,1,1,1,1,2,
2,1,1,1,3,
2,1,1,1,1,2,
2,1,1,1,2,1,
2,1,1,1,2,1,
6,1,1
};
int length;
int tonepin = 7;
void setup() {
pinMode(A0, INPUT);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(tonepin, OUTPUT);
length = sizeof(melody) / sizeof(melody[0]);
lcd.begin(20, 4);
pinMode(switchPin, INPUT);
lcd.clear();
}
void loop() {
int sensorVal = analogRead(sensorPin);
float voltage = (sensorVal / 1024.0) * 5.0;
float temperature = 1 / (log(1 / (1023. / sensorVal - 1)) / BETA + 1.0 / 298.15) - 273.15;
if ((digitalRead(2) == 0)) {
digitalWrite(3,LOW);
digitalWrite(4,LOW);
} else {
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
lcd.clear();
lcd.print(" Ready?");
lcd.setCursor(0, 1);
lcd.print(" |(-V-).");
delay(500);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
lcd.clear();
lcd.print(" Ready?");
lcd.setCursor(0, 1);
lcd.print(" .(-V-)|");
delay(500);
lcd.clear();
}
if ((digitalRead(2) == 0)) {
} else {
tone(4,8000,25);
tone(4,4000,10);
tone(4,6000,15);
tone(4,4000,75);
}
if (temperature < baselineTemp + 4) {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 16) {
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
else if (temperature >= baselineTemp + 16) {
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(6,LOW);
delay(500);
}
if (temperature >= baselineTemp + 16) {
tone(4,8000,50);
tone(4,4000,20);
tone(4,6000,30);
tone(4,4000,400);
lcd.clear();
lcd.print(" Warning!");
lcd.setCursor(0, 1);
lcd.print(" Overheated!");
lcd.setCursor(0, 2);
lcd.print(" <(>0<)>");
delay(500);
lcd.clear();
lcd.print(" Warning!");
lcd.setCursor(0, 1);
lcd.print(" Overheated!");
lcd.setCursor(0, 2);
lcd.print(" >(>0<)<");
}
if(temperature >= baselineTemp + 4 && temperature < baselineTemp + 16){
lcd.clear();
lcd.print("Now Playing:");
lcd.setCursor(0, 1);
lcd.print("Miracle reappearance");
lcd.setCursor(0, 2);
lcd.print(" ^");
lcd.setCursor(0, 3);
lcd.print(" .(0=0)|");
for (int thisNote = 0; thisNote < length; thisNote++) {
int noteDuration = 250 * duration[thisNote];
tone(tonepin, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 0.8;
delay(pauseBetweenNotes);}
}
}