Andrea De Gaetano
Published © GPL3+

Drink Water

A device to remember you to drink water

IntermediateFull instructions provided4 hours449
Drink Water

Things used in this project

Hardware components

ELEGOO UNO R3 Project Super Starter Kit
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

The circuit

Code

The code

Arduino
/*
* https://www.hackster.io/crazycoder1999
*/

// defines pins numbers
const int trigPin = 9;
const int echoPin = 8;
const int DRINK_PIN = 6;
const int NO_BOTTLE_PIN = 7;

int myStatus = 1; //1 = OK, 2 = DRINK, 3 = NO BOTTLE

// defines variables
long duration;
int distance;
long secondsPassed = 0;

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  pinMode(DRINK_PIN, OUTPUT);
  pinMode(NO_BOTTLE_PIN, OUTPUT);
  Serial.begin(9600); // Starts the serial communication
}

bool isDrinking(){
  return myStatus == 3;
}

bool mustDrink(){
  return myStatus == 2;
}

bool ok() {
  return myStatus == 1;
}

void loop() {
  delay(1000);
  
  if ( mustDrink() ) { //DRINK
    digitalWrite(DRINK_PIN, HIGH);
    digitalWrite(NO_BOTTLE_PIN, LOW);
  } else if( isDrinking() ) {
    digitalWrite(NO_BOTTLE_PIN, HIGH);
    digitalWrite(DRINK_PIN, LOW);
  } else {
    digitalWrite(NO_BOTTLE_PIN, LOW);
    digitalWrite(DRINK_PIN, LOW);
  }
  
// Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

// Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);

// Calculating the distance
  distance = duration*0.034/2;
  if ( distance < 6 ) { //BOTTLE IS IN PLACE
    //
    if ( isDrinking() ) { //he finished
      myStatus = 1;
      secondsPassed = 0;
    } else {
      secondsPassed++;
      if ( secondsPassed > 3600 ) {
          myStatus = 2;
      }
    }
    
  } else { //BOTTLE IS NOT IN PLACE
    myStatus = 3;
  }
// Prints the distance on the Serial Monitor
  Serial.print("myStatus ");
  Serial.print(myStatus);
  Serial.print(" Distance: ");
  Serial.println(distance);

}

Credits

Andrea De Gaetano
10 projects • 25 followers
Interested in iot, mobile and security Love hackathons This is my blog http://pestohacks.blogspot.com
Contact

Comments

Please log in or sign up to comment.