Bài đăng

Đang hiển thị bài đăng từ Tháng 6, 2022

Bài 4 - Điểu chỉnh độ sáng của đèn LED bằng phương pháp PWM

Hình ảnh
  C hương trình của chúng ta sẽ hoạt động như sau: độ sáng đèn LED sẽ tăng dần đến max, sau đó độ sáng từ max sẽ giảm dần về 0, cứ thế lặp lại Sơ đồ mạch như sau:   Để chiều chỉnh độ sáng của đèn LED ta thay đổi điện áp đặt vào nó. Các chân GPIO trên ESP8266 chỉ có thể đặt điện áp ở đầu ra là 0V hoặc 3,3V, không thể cài đặt điện áp ở đầu ra nằm ở giá trị giữa 0V và 3,3V (ví dụ 1V, 1,4V, 2V .. để thay đổi độ sáng). Tuy nhiên, có thể tạo ra điện áp  "giả"  ở giá trị giữa 0V và 3,3V bằng cách sử dụng điều chế độ rộng xung (PWM). Nếu bật(đặt điện áp 3,3V vào LED) và tắt(đặt điện áp 0V vào LED) đèn LED rất nhanh (tần số bật tắt khoảng 42Hz), mắt của chúng ta không thể theo kịp tốc độ bật và tắt của đèn LED, chúng ta sẽ chỉ thấy sự thay về độ sáng (nếu bật tắt chậm dưới 42Hz, chúng ta sẽ chỉ thấy LED đang nhấp nháy). Duty cycle là khoảng thời gian LED được bật, hình minh họa cách hoạt động của PWM               Duty cycle 50% cho kết quả độ sáng của LED là 50%, duty cyc

Bài 3 - Blink LED

Hình ảnh
  Chương trình của chúng ta hoạt động như sau: LED sẽ sáng 500ms sau đó tắt 500ms, cứ thế lặp lại. Sơ đồ mạch như sau, LED sẽ nối với GPIO12:   Để thực hiện việc bật tắt LED 500ms, chúng ta sẽ dùng software timer đếm hết 500ms sẽ gọi hàm thực hiện việc nháy LED. Trình tự cài đặt software timer như sau: - Gọi os_timer_disarm trước để dừng các timer. - Cài đặt hàm được gọi khi timer đếm xong bằng os_timer_setfn. - Enable timer bằng os_timer_arm. Trong chương trình nháy LED 500ms của chúng ta, trình tự như sau: //Stop led_timer os_timer_disarm(&led_timer);              // cài đặt hàm được gọi khi led_timer đếm xong os_timer_setfn(&led_timer, (os_timer_func_t *)led_timer_blink, NULL); // kích hoạt led_timer với 500ms, true có nghĩa là lặp đi lặp lại timer 500ms này        os_timer_arm(&led_timer, 500, true);        Hàm được gọi khi timer đếm hết 500ms như sau: void ICACHE_FLASH_ATTR // hàm có ICACHE_FLASH_ATTR phía trước