Bài đăng nổi bật

Những phím tắt trên Windows

Các tổ hợp phím windows Ngày nay việc sử dụng phím tắt giúp ích rất nhiều đối với người sử dụng. Cùng lưu trữ những phím tắt này ...

Thứ Bảy, 27 tháng 12, 2025

Vọc Vạch với Uno R3

 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;

  }

}



TIẾP ĐẾN LÀ 

Không có nhận xét nào:

Đăng nhận xét