hdh_arduino (1) (1)
hdh_arduino (1) (1)
h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <queue.h> // thêm để dùng Queue
// LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// DS18B20
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Relay
#define RELAY_FAN 3
#define RELAY_LIGHT 4
volatile RelayState relayState = {false, false}; // giá trị logic mong muốn
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(RELAY_FAN, OUTPUT);
pinMode(RELAY_LIGHT, OUTPUT);
digitalWrite(RELAY_FAN, LOW);
digitalWrite(RELAY_LIGHT, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("System Boot...");
void loop() {
// FreeRTOS không dùng loop
}
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp, 1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("F:");
lcd.print(relayState.fan ? "ON " : "OFF");
lcd.print(" L:");
lcd.print(relayState.light ? "ON" : "OFF");
xTaskNotifyGive(uartTaskHandle);
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
}
}
xTaskNotifyGive(relayTaskHandle);
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
}
}