You are on page 1of 3

#include <LiquidCrystal_I2C.

h>
#include <Wire.h>
#include <UltrasonicSensor.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 6 // Dây dữ liệu được cắm vào chân 6 trên Arduino

OneWire oneWire(ONE_WIRE_BUS); // Thiết lập phiên bản oneWire để giao tiếp với bất
kỳ thiết bị OneWire nào
// (không chỉ IC nhiệt độ Maxim/Dallas)
DallasTemperature sensors(&oneWire); // Truyền tham chiếu oneWire của chúng ta tới
Nhiệt độ Dallas.

//LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Tạo đối tượng tinh thể lỏng gọi là LCDD
LiquidCrystal_I2C lcd(0x27,16,2);
int trigPin = 9; //Chân Trip cảm biến được kết nối với chân Arduino 9
int echoPin = 7; //Chân Echo của cảm biến được kết nối với chân Arduino 7
int ledPin1 = 8;
int ledPin2 = 10;
int ledPin3 =13;
int buzzer= 5;
int ds20b18=6;

float distance; // Khoảng cách đến mục tiêu tính bằng centimet

void setup() {

Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

lcd.init();
lcd.backlight();

sensors.begin(); //Khởi động thư viện

pinMode(8, OUTPUT); //pin 8, 10, 13 output pins


pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(ds20b18, INPUT);

lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
}
void loop() {

unsigned long duration;


int distance;
digitalWrite(trigPin, LOW); // Đặt chân kích hoạt ở mức thấp
delayMicroseconds(2000); // Để tín hiệu ổn định
digitalWrite(trigPin,HIGH); // Đặt trigPin cao
delayMicroseconds(15); // Độ trễ ở trạng thái cao
digitalWrite(trigPin,LOW); //ping đã được gửi
delayMicroseconds(10); // Độ trễ ở trạng thái cao

duration = pulseIn(echoPin, HIGH);


distance = int(duration/2/29.412);
//sensors.requestTemperatures(); // Gửi lệnh lấy giá trị nhiệt độ
Serial.print("Khoangcach");
Serial.print(distance);
Serial.println("cm");
delay(300);
//am thanh
tone(buzzer,50);
delay(1000);
//noTone(buzzer);
//delay(1000);
//cam bien nhiet do
sensors.requestTemperatures();
Serial.print("Nhiet do");
Serial.println(sensors.getTempCByIndex(0));
delay(100);

lcd.setCursor(0, 1); //Đặt con trỏ đến cột thứ mười của hàng đầu tiên
lcd.print(" "); //In khoảng trống để xóa hàng
lcd.setCursor(1, 0); // Đặt lại Con trỏ vào cột thứ mười của hàng đầu tiên
lcd.print((int) (distance + 0.5));//In khoảng cách đo được
lcd.print("cm "); //In các đơn vị của bạn
lcd.setCursor(0, 1); // Đặt con trỏ vào cột đầu tiên của hàng thứ hai
lcd.print(""); //In khoảng trống để xóa hàng
lcd.setCursor(0, 1); // Đặt lại Con trỏ về cột đầu tiên của hàng thứ hai

if (distance >= 9) {
lcd.print("LED RED ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223);
lcd.print ("C");
//digitalWrite (ledPin3, HIGH);
//digitalWrite(buzzer, HIGH);
//tone(buzzer, 500);
}
else if (distance < 6 && distance > 3) {
lcd.print("LED YELLOW ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223);
lcd.print ("C");
//digitalWrite (ledPin2, HIGH);

}
else (distance < 3); {
lcd.print ("LED GREEN ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223);
lcd.print ("C");
//igitalWrite(ledPin1, HIGH);

}
if (distance >= 9) {
digitalWrite (ledPin3, HIGH); //Green LED ON
}
else {
digitalWrite(ledPin3, LOW); //Green LED OFF
}

if (distance < 6 && distance > 3) {


digitalWrite (ledPin2, HIGH); //Yellow LED ON
}
else {
digitalWrite(ledPin2, LOW); //Yellow LED OFF
}

if (distance < 3) {
digitalWrite(ledPin1, HIGH); //Red LED ON
}

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

You might also like