Things used in this project

Hardware components:
Ardgen 101
Arduino 101 & Genuino 101
×1
Normally Closed Solenoid Valve
Make sure it can withstand the temperature of the shower water; if you are using a metal one make sure it contains no lead. ALSO: Measure your own plumbing before buying
×1
Fittings for Solenoid Valve
Make sure it can withstand the temperature of the shower water; if you are using a metal one make sure it contains no lead. ALSO: Measure your own plumbing before buying
×1
12002 04
Breadboard (generic)
×1
398 09
Adafruit RGB Backlight LCD - 16x2
×1
Adafruit industries ada1536 image
Buzzer
×1
11026 02
Jumper wires (generic)
×1
Fairchild semiconductor fqu13n06ltu image 75px
Power MOSFET N-Channel
×1
09939 01
Rotary potentiometer (generic)
×1
Flip Switch
×1
Battery Bank
×1
Mfr 25fbf52 221r sml
Resistor 221 ohm
220 ohm will also work aswell
×2
Fairchild semiconductor 1n4004. image
1N4007 – High Voltage, High Current Rated Diode
×1
Plastic Container
×1
Velcro Wall Strips
×2
Cheap USB Cable
×2
Software apps and online services:
Ide web
Arduino IDE
Hand tools and fabrication machines:
Hy gluegun
Hot glue gun (generic)
09507 01
Soldering iron (generic)

Schematics

Schematics Image
Diagram bb jdxfotwnhx
Schematics
diagram_F3mdu8tMGy.fzz

Code

CodeC/C++
//User settings:-----------------------
const float showerTime = 5; //In minutes
const int warmupTime = 20; //In seconds
//-------------------------------------

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int stat = 0; //This keeps track of the status 

void setup() {
  // put your setup code here, to run once: 
  lcd.begin(16,2); 
  pinMode(13,OUTPUT); //Set pin 13 as output (For solenoid valve)
  pinMode(10,OUTPUT); //Set pin 10 as output (For piezo buzzer)
}

void loop() {
  // put your main code here, to run repeatedly:
  if(stat == 0){ //If the status is 0, begin warmup
    digitalWrite(13,HIGH); //Open solenoid valve
    tone(10,2000,1000); //Gives the warmup buzz
    for(int  i = warmupTime; i > 0; i--){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Water Warmup:"); //Text for line 1
      lcd.setCursor(0,1);
      lcd.print(String(i) + " seconds"); //Text for line 2
      delay(1000);
    }
    stat++; //Update status
  }
  if(stat == 1){ //If the status is 1, begin the shower timer
    tone(10,2000,1000); //Gives the shower buzz; warmup is over
    delay(1500);
    tone(10,2000,1000);
    for(int i = showerTime * 60; i > 0; i--){
      if(i == 120){ //If there are 2 minutes left, give a warning buzz
        tone(10,2000,1000); 
      }else if(i == 60){ //If there is 1 minute left, give a second warning buzz
        tone(10,2000,1000);
      }
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Shower:"); //Text for line 1
      lcd.setCursor(0,1);
      lcd.print(String(i) + " seconds"); //Text for line 2
      delay(1000);
    }
    stat++; //Update status
  }
  if(stat == 2){ //If the status is 2,stop the shower and notify user that it is over
    digitalWrite(13,LOW); //Close solvenoid valve
    tone(10,2000); //Gives buzz until it is shut off
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Shower Over"); //Text for line 1
    lcd.setCursor(0,1);
    lcd.print("Have a Good Day!"); //Text for line 2
    delay(2000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Turn me off"); //Text for line 1
    lcd.setCursor(0,1);
    lcd.print("Turn water off"); //Text for line 2
    delay(5000);  
  }
}

Credits

47d84b8ba1750e4c7f93e7712b90fb4a
Ryan Chan

I like turtles. I also like robots

Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Arduinomated Car Parking with Voice Assistance in Smartphone
Intermediate
  • 25
  • 3

Full instructions

Make an assistant which tells you about how much to drive backwards without any collision through your smartphone by Arduino and 1Sheeld.

Reducing Arduino Power Consumption
Intermediate
  • 39
  • 3

Full instructions

One the most important feature of portable electronics should be long battery life. We can reduce the current drawn by several ways.

Particle Photon Based Security System with Alerting
Intermediate
  • 1,251
  • 20

Full instructions

Be alerted to any door or window opening and closing in your house on your smart phone.

Sigfox Forest Fire Detector
Intermediate
  • 1,824
  • 12

Full instructions

How to prevent forest from burning? A small Sigfox signal can prevent natural disasters. We will use an Arduino MKRFOX + a flame detector.

Analog-XY-Plotter-Output-to-HPGL-Translator
Intermediate
  • 140
  • 2

Translate analog X-Y plotter output to HPGL command stream.

From BT to WiFi: Creating WiFi Controlled Arduino Robot Car
Intermediate
  • 199
  • 3

Protip

NodeMCU ESP8266 in access point mode: the simplest way to make Wi-Fi controlled Robot Car from Bluetooth Arduino Robot Car + Android App.

Sign up / LoginProjectsPlatformsTopicsContestsLiveAppsBetaFree StoreBlog