MichDragstar
Published © GPL3+

Ultrasonic Sensor with Alarm, LCD and Temperature

Water level with LED alarms and buzzer with level distance and temp on LCD.

BeginnerFull instructions provided40,360
Ultrasonic Sensor with Alarm, LCD and Temperature

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Standard LCD - 16x2 White on Blue
Adafruit Standard LCD - 16x2 White on Blue
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
DS18B20 Programmable Resolution 1-Wire Digital Thermometer
Maxim Integrated DS18B20 Programmable Resolution 1-Wire Digital Thermometer
×1
Resistor 4.75k ohm
Resistor 4.75k ohm
×1
Pushbutton switch 12mm
SparkFun Pushbutton switch 12mm
×1
Single Turn Potentiometer- 10k ohms
Single Turn Potentiometer- 10k ohms
×1
Buzzer
Buzzer
1 LED and 1 Buzzer on same output, take care of mAmp!! The buzzer I use is 8mAmp.
×1
LEDs
1 Green, 1 Yellow and 1 Red LED.
×3
Resistor 221 ohm
Resistor 221 ohm
×3
Breadboard (generic)
Breadboard (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

Code

Untitled file

C/C++
#include <LiquidCrystal.h>//Load Liquid Crystal Library
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 6 // Data wire is plugged into pin 6 on the Arduino 

OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire);   // Pass our oneWire reference to Dallas Temperature.

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);  //Create Liquid Crystal Object called LCD

int trigPin = 9; //Sensor Trip pin connected to Arduino pin 9
int echoPin = 7; //Sensor Echo pin connected to Arduino pin 7
int myCounter = 0; //declare your variable myCounter and set to 0

float pingTime;  //time for ping to travel from the sensor to the target and return
float targetDistance; //Distance to Target in Centimeters
float speedOfSound = 776.5; //Speed of sound in miles per hour



void setup() {

  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  LCD.begin(16, 2); //Tell Arduino to start your 16x2 LCD
  LCD.setCursor(0, 0); //Set LCD cursor to upper left corner, column 0, row 0
  LCD.print("Distance:");  //Print Message on First Row

  sensors.begin();   // Start up the library

  pinMode(8, OUTPUT);  //pin  8, 10, 13 output pins
  pinMode(10, OUTPUT);
  pinMode(13, OUTPUT);
}
void loop() {


  digitalWrite(trigPin, LOW); //Set trigger pin low
  delayMicroseconds(2000); //Let signal settle
  digitalWrite(trigPin, HIGH); //Set trigPin high
  delayMicroseconds(15); //Delay in high state
  digitalWrite(trigPin, LOW); //ping has now been sent
  delayMicroseconds(10); //Delay in high state

  pingTime = pulseIn(echoPin, HIGH);  //pingTime in microceconds
  pingTime = pingTime / 1000000; //convert pingTime to seconds by dividing by 1000000 (microseconds in a second)
  pingTime = pingTime / 3600; //convert pingtime to hours by dividing by 3600 (seconds in an hour)
  targetDistance = speedOfSound * pingTime; //This will be in miles, since we declared the speed of sound as kilometers per hour; although we're going to convert it back to centimeters
  targetDistance = targetDistance / 2; //Remember ping travels to the target and back from the target, so you must divide by 2 for actual target distance.
  targetDistance = targetDistance * 160934.4; //Convert miles to centimeters by multipling by 160934,4
  sensors.requestTemperatures(); // Send the command to get temperature readings


  LCD.setCursor(10, 0); //Set the cursor to the tenth column of the first row
  LCD.print("                "); //Print blanks to clear the row
  LCD.setCursor(10, 0);  //Set Cursor again to the tenth column of the first row
  LCD.print((int) (targetDistance + 0.5)); //Print measured distance
  LCD.print("cm ");  //Print your units
  LCD.setCursor(0, 1); //Set the cursor to the first column of the second row
  LCD.print("                "); //Print blanks to clear the row
  LCD.setCursor(0, 1);  //Set Cursor again to the first column of the second row


  if (targetDistance > 40) {
    LCD.print("LEV LOW  ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print ("C");
  }
  else if (targetDistance < 40 && targetDistance > 20) {
    LCD.print("LEV MED  ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print ("C");
    
  }
  else (targetDistance < 20); {
    LCD.print ("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print ("C");
  }

  delay(2000);


  if (targetDistance > 40) {
    digitalWrite (13, HIGH);  //Green LED ON
  }
  else {
    digitalWrite(13, LOW);   //Green LED OFF
  }

  if (targetDistance < 40 && targetDistance > 20) {
    digitalWrite (8, HIGH);   //Yellow LED ON
  }
  else {
    digitalWrite(8, LOW);    //Yellow LED OFF
  }

  if (targetDistance < 20) {
    digitalWrite(10, HIGH);   //Red LED ON
    delay(2000);
    digitalWrite(10, LOW);   //Red LED OFF
  }

  else {
    digitalWrite(10, LOW);   //Red LED OFF
  }


 }

Credits

MichDragstar
7 projects • 17 followers
Contact

Comments

Please log in or sign up to comment.