//Red LED = Hot water
//Blue LED = Cold water
//LED bar graph = Washing machine stages 1-5
int speaker = 7;
const int led1 = 2;
const int led2 = 3;
const int led3 = 4;
const int led4 = 5;
const int led5 = 6;
bool now = digitalRead(8);
bool before = 0;
bool state = 0;
bool noww = digitalRead(10);
bool beforee = 0;
bool statee = 0;
void setup() {
pinMode(8, INPUT);
pinMode(9, OUTPUT);
pinMode(10, INPUT);
pinMode(11, OUTPUT);
pinMode(speaker, OUTPUT);
Serial.begin(9600);
Serial.println("");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
//I even used your youtube channel to help me out with making variables
//These are my variables i used to reduce the amount of code
void toby(int ledpin, int on_off, int mydelay) {
digitalWrite(ledpin, on_off);
delay(mydelay);
}
void loop() {
//Allow the red button to be pressed for red LED to turn on
//Activates hot water
before = now;
now = digitalRead(8);
if (before == 0 && now == 1) {
state = !state;
digitalWrite(9, state);
}
//Allow blue button to be pressed for blue LED to turn on
//Activates cold water
beforee = noww;
noww = digitalRead(10);
if (beforee == 0 && noww == 1) {
statee = !statee;
digitalWrite(11, statee);
}
//allows the serial port to activate
if (Serial.available() > 0) {
String command = Serial.readString();
command.trim();
//type in the Serial Monitor "start washing" to begin the cycle
if (command == "start washing") {
delay(200);
Serial.println("Beginnning washing cycle...");
//Beeps indicate the washing cycle has begun
tone (speaker, 500, 1000);
delay(400);
tone (speaker, 300, 1000);
delay(400);
tone (speaker, 400, 1000);
delay (1500);
Serial.println("Loading washing powder...");
//toby(output pin, state 1/0, delay time)
toby(2, 1, 700);
toby(2, 0, 700);
toby(2, 1, 700);
toby(2, 0, 700);
toby(2, 1, 700);
toby(2, 0, 700);
toby(2, 1, 50);
Serial.println("Stage one complete");
delay(2300);
//Tells LED 2 to flash on and off
Serial.println("Filling up with water...");
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 400);
toby(3, 0, 400);
toby(3, 1, 50);
Serial.println("Stage two complete");
delay(2300);
//Tells led 3 to start flashing on and off
Serial.println("Agitating process starting...");
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 600);
toby(4, 0, 200);
toby(4, 1, 50);
Serial.println("Stage three complete");
delay(2300);
//Tells LED 4 to start flashing on and off
Serial.println("Slowly spinning...");
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
toby(5, 0, 300);
toby(5, 1, 300);
Serial.println("Stage four complete");
delay(2300);
//Tells LED 5 to start flashing on and off
Serial.println("Spin drying beginning..");
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
Serial.println("Speeding up spinning speed...");
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
toby(6, 0, 200);
toby(6, 1, 200);
//Tells LED 5 to start flashing on and off but get slower as it goes on
Serial.println("Slowing down...");
toby(6, 1, 100);
toby(6, 0, 100);
toby(6, 1, 100);
toby(6, 0, 100);
toby(6, 1, 300);
toby(6, 0, 300);
toby(6, 1, 300);
toby(6, 0, 300);
toby(6, 1, 500);
toby(6, 0, 500);
toby(6, 1, 500);
toby(6, 0, 500);
toby(6, 1, 600);
toby(6, 0, 600);
toby(6, 1, 600);
Serial.println("Finished washing load!");
//turns all LED's off
toby(6, 0, 0);
toby(5, 0, 0);
toby(4, 0, 0);
toby(3, 0, 0);
toby(2, 0, 0);
//speaker will play frequencies to let you know that the load is finished
tone (speaker, 200, 1000);
//a cool ending affect to show the load is finished
toby(2, 1, 200);
toby(3, 1, 200);
toby(4, 1, 200);
toby(5, 1, 200);
toby(6, 1, 200);
tone (speaker, 200, 1000);
toby(6, 0, 200);
toby(5, 0, 200);
toby(4, 0, 200);
toby(3, 0, 200);
toby(2, 0, 200);
tone (speaker, 600, 1000);
toby(2, 1, 0);
toby(3, 1, 0);
toby(4, 1, 0);
toby(5, 1, 0);
toby(6, 1, 0);
delay(300);
tone (speaker, 300, 1000);
toby(2, 0, 0);
toby(3, 0, 0);
toby(4, 0, 0);
toby(5, 0, 0);
toby(6, 0, 0);
delay(300);
tone (speaker, 600, 1000);
toby(2, 1, 0);
toby(3, 1, 0);
toby(4, 1, 0);
toby(5, 1, 0);
toby(6, 1, 0);
delay(300);
tone (speaker, 300, 1000);
toby(2, 0, 0);
toby(3, 0, 0);
toby(4, 0, 0);
toby(5, 0, 0);
toby(6, 0, 0);
delay(300);
tone (speaker, 600, 1000);
toby(2, 1, 0);
toby(3, 1, 0);
toby(4, 1, 0);
toby(5, 1, 0);
toby(6, 1, 0);
delay(300);
tone (speaker, 300, 1000);
toby(2, 0, 0);
toby(3, 0, 0);
toby(4, 0, 0);
toby(5, 0, 0);
toby(6, 0, 0);
delay(300);
tone (speaker, 600, 1000);
toby(2, 1, 0);
toby(3, 1, 0);
toby(4, 1, 0);
toby(5, 1, 0);
toby(6, 1, 0);
delay(500);
toby(2, 0, 0);
toby(3, 0, 0);
toby(4, 0, 0);
toby(5, 0, 0);
toby(6, 0, 0);
}
}
}