Hi
Im making myself a arduino watering system, and i ran into some small problems. the code works just fine and doing what i want. Except one thing, if i want to interupt/stop the current state. How can i do this?
Here is my code
#include <SoftwareSerial.h>// import the serial library
SoftwareSerial bluetooth(3, 4); // RX, TX
const int relayPin = 13;
unsigned long time = millis();
char bluetoothData; // the data given from mobile app
boolean newData = false;
void setup() {
bluetooth.begin(9600);
pinMode(relayPin, OUTPUT);
Serial.begin (9600); //uncomment for debugging
}
void loop() {
recvOneChar();
controlWater();
}
void recvOneChar() {
if (bluetooth.available() > 0) {
bluetoothData = bluetooth.read();
newData = true;
}
}
void controlWater() {
if (newData == true) {
switch (bluetoothData) {
case '1': { // Start watering
digitalWrite(13, HIGH); // turn the water on
Serial.println("Start watering");
}
break;
case '2': { //Stop watering
Serial.println("Stop watering");
digitalWrite(13, LOW); // turn the water off
}
break;
case '3': { //Water for 1 hours
Serial.println("Water for 1 hours");
digitalWrite(13, HIGH); // turn the water on
delay(3600000); // wait for x second
digitalWrite(13, LOW); // turn the water off
}
break;
case '4': { //Water for 2hours
Serial.println("Water for 2 hours");
digitalWrite(13, HIGH); // turn the water on
delay(7200000); // wait for x second
digitalWrite(13, LOW); // turn the water off
}
break;
case '5': { //Water for 3hours
Serial.println("Water for 3 hours");
digitalWrite(13, HIGH); // turn the water on
delay(10800000); // wait for x second
digitalWrite(13, LOW); // turn the water off
}
break;
}
newData = false;
}
}