mọi người giúp em sửa code với ạ .em mò hôm qua đến giờ vẫn không dc
em làm mạch ấp trứng : dùng cảm biến nhiệt độ DS18B20 hiển thị lên lcd thông qua mạch điều khiển arduino uno
em cài nhiệt độ là 37 độ, nếu nhiệt độ lớn hơn hoặc nhỏ hơn nhiệt độ cài thì relay sẽ bật/tắt để cân bằng nhiệt độ ấp trứng là 37 độ
em sử dụng thêm led với còi để cảnh báo nếu vượt quá 39 độ hoặc thấp hơn 36 độ thì cảnh báo đèn với còi sẽ báo cùng lúc.
dưới đây là phần code của em ạ . do code không đọc được cảm biến nên mọi người giúp em sửa lại với ạ . em cảm ơn mọi người nhiều ạ .do em học điện mới năm 3 nên chưa rành về code lắm ạ .
#include // thư viện cảm biến ds18b20
#include
#include
#include // Thư viện i2c cho lcd
LiquidCrystal_I2C lcd(0x27,16,2); //điạ chỉ i2c 0x27
OneWire giaotiep1day(8);
DallasTemperature cb(&giaotiep1day);
unsigned long time1 = 0;
const int analogInPin = A0; // chân tín hiệu của ds18b20 nối với chân A0
const int SensorValueLow = 463;
const int SensorValueDiff = 36;
const int TempValueDiff = 42;
const int TempValueLow = 9;
int sensorValue = 0;
double Temp = 0;
#define minTempC 0 // about 109F
#define maxTempC 150 // about 183F
#define startTempC 37 // giá trị nhiệt độ cài ban đầu
float setTempC;
#define buttonDN 5 // chân nút nhấn 1 nối chân số 5
#define buttonUP 4 // chân nút nhấn 2 nối chân số 4
#define relay 8 // chân relay bật tắt đèn sợi đốt nối chân số 8
#define coi 3
#define den 2
byte degree[8] = { // dòng này để hiển thị kí tự độ C
0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};
void setup()
{
lcd.begin();
cb.begin();
Serial.begin(9600);
pinMode(buttonDN, INPUT_PULLUP);
pinMode(buttonUP, INPUT_PULLUP);
pinMode(relay, OUTPUT);//KICH ROLAY CHAN
pinMode(coi, OUTPUT);//coi bao
pinMode(den, OUTPUT);// ĐÈN BÁO
digitalWrite(coi,HIGH);
digitalWrite(den,HIGH);
setTempC = startTempC;
}
void loop()
{
sensorValue = analogRead(analogInPin);
Temp = sensorValue-SensorValueLow;
Temp = Temp/SensorValueDiff;
Temp = Temp*TempValueDiff;
Temp = Temp+TempValueLow;
Temp = Temp - 37;
setTemperature();
setHeater();
displayLCD();
}
void displayLCD(){
lcd.backlight();// bạt tắt màn hình LCD
lcd.clear();
lcd.home ();
Serial.print("C = ");
Serial.println(Temp);
lcd.setCursor(0,0);
lcd.print("NHIET DO: ");
lcd.setCursor(10,0);
lcd.print(Temp);
lcd.print("");
lcd.write(1);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("CAI : ");
lcd.setCursor(5,1);
lcd.print(round(setTempC));
lcd.print("");
lcd.write(1);
lcd.print("C");
lcd.createChar(1, degree);
}
void setTemperature()
{
if (digitalRead(buttonDN)==HIGH){ // Trường hợp nút nhấn được nhấn
setTempC++; // tăng giá trị cài lên 1 đơn vị
if(setTempC < minTempC) setTempC = minTempC;
}
if (digitalRead(buttonUP)==HIGH){
setTempC--;// giảm giá trị cài xuống 1 đơn vị
if(setTempC > maxTempC) setTempC = maxTempC;
}
}
void setHeater()
{
if ((setTempC) > (Temp + 0.5 ) ) {
digitalWrite(relay, LOW);
lcd.setCursor(11,1);
lcd.print("DONG");
//delay(10000);
}
else if ((setTempC)