int x = 1; int start = 1; // default power on upon mains interruption int kettle = 11; //2n2222 in port 4 uno // digispark pin 1 int temp = 0; //sensor in A0 //digispark pin 2 int water = 0; // water temperature float R1 = 200; float R2 = 271; float buffer = 0; float Vout = 0; int Vin = 5; float done = 108; // set if statement temp to supernova to avoid burnout const int key = 12; // switch on const int key1 = 9; //switch off const unsigned long Period = 288000; //how long to boil for unsigned long timerMillis = 0; unsigned long startTime = 0; // start time for stop watch unsigned long elapsedTime = 0; void setup() { pinMode(key, INPUT_PULLUP); pinMode(key1, INPUT_PULLUP); pinMode(kettle, OUTPUT); pinMode(temp, INPUT); Serial.begin(9600); startTime = millis(); } void loop() { elapsedTime = millis() - startTime; //delay(1000); Serial.print("elapsedTime "); Serial.println(elapsedTime); int switchstate = digitalRead(key); int switchstate1 = digitalRead(key1); if (switchstate == LOW) { //start = 1; } if (switchstate1 == LOW) { done = 300000; digitalWrite(kettle, LOW); //off start = 0; } if (elapsedTime > Period) {// if time elapsed boiling is more than 280secs done = 300000; digitalWrite(kettle, LOW); //off start = 0; } while (0 == start) { // } water = analogRead(temp); buffer = water * Vin; Vout = (buffer) / 1024.0; buffer = (Vin / Vout) - 1; R1 = R2 / buffer; Serial.print("R1: "); Serial.println(R1); Serial.print("done: "); Serial.println(done); if (R1 < done) { digitalWrite(kettle, LOW); //off start = 0; } else { digitalWrite(kettle, HIGH); //on } }