#include <LiquidCrystal.h>
const int trig = 12; // chân trig của HC-SR04
const int echo = 11; // chân echo của HC-SR04
const int out = 13; // chân Relay out
const int bz = 3;
//LCD pin to Arduino
const int pin_RS = 8;
const int pin_EN = 9;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
//const int pin_Backlight = 10;
LiquidCrystal lcd(pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
byte ledPin[] = { A5,A4,A3,A2,A1,A0 };
byte pinCount;
byte muc_nuoc = 2;
int moc_tren = 780;
int moc_duoi = 330;
bool out_status = 0; // Trạng thái out: 0 là tắt, 1 là bật
void setup()
{
Serial.begin(9600);
pinMode(trig, OUTPUT); // chân trig sẽ phát tín hiệu
pinMode(echo, INPUT); // chân echo sẽ nhận tín hiệu
pinMode(out, OUTPUT);
pinMode(bz, OUTPUT);
lcd.begin(16, 2);
pinCount = sizeof(ledPin); // Lấy số lượng LED
for (byte i = 0; i < pinCount; i++) {
pinMode(ledPin[i], OUTPUT); //Các chân LED là OUTPUT
digitalWrite(ledPin[i], LOW); //Mặc định các chân LED sẽ tắt
}
pinMode(2, INPUT_PULLUP);
}
void loop()
{
unsigned long duration; // biến đo thời gian
int distance; // biến lưu khoảng cách
/* Phát xung từ chân trig */
digitalWrite(trig, 0); // tắt chân trig
delayMicroseconds(2);
digitalWrite(trig, 1); // phát xung từ chân trig
delayMicroseconds(5); // xung có độ dài5 microSeconds
digitalWrite(trig, 0); // tắt chân trig
/* Tính toán thời gian */
// Đo độ rộng xung HIGH ở chân echo.
duration = pulseIn(echo, HIGH);
// Tính khoảng cách đến vật.
distance = int(duration / 2 / 29.412);
/* In kết quả ra Serial Monitor */
Serial.print(distance);
Serial.println("cm");
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance+1);
lcd.print("cm ");
delay(200);
if (distance < 10)
{
Danger();
}
else if (distance < 20)
{
Warning();
}
else {
lcd.setCursor(0, 1);
lcd.print(" TCL_47.BLOG ");
}
lcd.setCursor(0, 0);
lcd.print(" TCL_47.BLOG ");
}
void Warning()
{
for (int a = 0; a < 3; a++)
{
lcd.setCursor(0, 1);
lcd.print(" WARNING! ");
digitalWrite(out, 1);
digitalWrite(bz, 1);
delay(300);
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(out, 0);
digitalWrite(bz, 0);
delay(150);
}
}
void Danger()
{
for (int a = 0; a < 3; a++)
{
lcd.setCursor(0, 1);
lcd.print(" DANGER! ");
digitalWrite(out, 1);
digitalWrite(bz, 1);
delay(150);
digitalWrite(out, 0);
digitalWrite(bz, 0);
lcd.setCursor(0, 1);
lcd.print(" ");
delay(75);
}
}
void Danger1()
{
for (int a = 0; a < 3; a++)
{
lcd.setCursor(0, 1);
lcd.print(" CO TROM! ");
digitalWrite(out, 1);
digitalWrite(bz, 1);
}
}