Vọc Vạch với Uno R3
Dưới đây mình có một số dự án để triển khai DIY tại nhà với các linh kiện cho người mới bắt đầu như mình, mình không học chuyên sâu, chỉ sử dụng với mục đích cá nhân, nhờ AI viết code
mà thấy cũng ổn
đầu tiên là dự án điện bếp thông minh
Chỉ cần bật nguồn Uno, đèn sáng, chạm nút sáng, chạm tiếp tắt đi, sau đó
ĐIỆN BẾP THÔNG MINH
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int relayPin = 9;
const int touchPin = 8;
const int doorPin = 10;
bool lightState = false;
bool lastTouch = HIGH;
bool lastDoor = HIGH;
bool lastLCDState = false;
bool lcdNeedUpdate = true;
unsigned long lastDebounce = 0;
void showLine2(String text) {
lcd.setCursor(0, 1);
lcd.print(" "); // xoa dong 2
lcd.setCursor(0, 1);
lcd.print(text);
}
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(touchPin, INPUT_PULLUP);
pinMode(doorPin, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Em chao anh Tien");
showLine2("Bep thong minh");
}
void loop() {
bool touchRead = digitalRead(touchPin);
bool doorRead = digitalRead(doorPin);
// Toggle tu cam bien cham
if (touchRead == HIGH && lastTouch == LOW && millis() - lastDebounce > 200) {
lightState = !lightState;
lastDebounce = millis();
}
lastTouch = touchRead;
// Toggle tu cong tac co
if (doorRead != lastDoor && millis() - lastDebounce > 200) {
lightState = !lightState;
lastDebounce = millis();
}
lastDoor = doorRead;
// Relay
digitalWrite(relayPin, lightState);
// CHI CAP NHAT LCD KHI CO THAY DOI
if (lightState != lastLCDState) {
lastLCDState = lightState;
lcdNeedUpdate = true;
}
if (lcdNeedUpdate) {
if (lightState) showLine2("Den dang OFF");
else showLine2("Den dang ON....");
lcdNeedUpdate = false;
}
}
Không có nhận xét nào:
Đăng nhận xét