Bài 4. Chức năng Input hoặc Output trên ESP8266

Input hoặc output trên esp8266

Kít nodemcu esp826617 chân GPIO và 1 chân A0 dùng để đọc giá trị tương tự từ 0 đến 3.3V, các chân còn lại dùng để đọc giá trị logic hoặc giao tiếp với các giao thức khác như UART, SPI, I2C,…

Lưu ý khi chọn chân làm Input hoặc Output trên esp8266

Trong 17 chân GPIO đó có 11 chân có thể sử dụng làm digital I/O pins. Tuy nhiên, không phải tất cả các chân đều phù hợp để sử dụng làm input hoặc output trên esp8266, vì một số chân có chức năng đặc biệt hoặc thay đổi trạng thái khi khởi động. Bạn nên tránh sử dụng các chân sau làm input hoặc output:

  • Chân D0 (GPIO16): không có interrupt, không hỗ trợ PWM hoặc I2C, ở mức HIGH khi khởi động, dùng để đánh thức từ chế độ ngủ sâu.
  • Chân D3 (GPIO0): ở mức LOW khi khởi động để vào chế độ nạp code, nếu ở mức HIGH sẽ vào chế độ chạy bình thường.
  • Chân D4 (GPIO2): ở mức HIGH khi khởi động và có LED tích hợp trên board.
  • Chân D8 (GPIO15): ở mức LOW khi khởi động để vào chế độ chạy bình thường, nếu ở mức HIGH sẽ gây lỗi khởi động.

Xem thêm: Chân GPIO đặc biệt trên ESP8266

Vậy nên, bạn chỉ nên sử dụng các chân sau làm input hoặc output trên esp8266: D1, D2, D5, D6, D7. Ngoài ra, bạn cũng có thể sử dụng các chân TX (GPIO1) và RX (GPIO3) làm input hoặc output trên esp8266, nhưng bạn cần tắt cổng nối tiếp trước khi sử dụng.

Sơ đồ kết nối LED và nút ấn Flash trên Nodemcu esp8266

Led và button Flash trên kít nodemcu esp8266

Chúng ta có thể sử dụng trực tiếp nút ấn FLASHLED có sẳn trên kít nodemcu esp8266 để test chức năng Input hoặc output trên esp8266.

Chức năng Input

Để sử dụng chức năng input trên kít nodemcu esp8266, bạn cần làm các bước sau:

  • Kết nối kít nodemcu esp8266 với máy tính qua cáp micro-USB.
  • Viết chương trình Arduino để đọc giá trị input từ kít nodemcu esp8266.
  • Bạn có thể sử dụng hàm pinMode() để thiết lập chế độ làm việc cho các chân GPIO, hàm digitalRead() để đọc giá trị logic (0 hoặc 1) của các chân GPIO, và hàm analogRead() để đọc giá trị tương tự (0 đến 1023) của chân A0.
  • Bạn cũng có thể sử dụng hàm Serial.begin()Serial.println() để gửi và nhận dữ liệu qua cổng nối tiếp.

Dưới đây là một ví dụ về chương trình Arduino để đọc giá trị của một nút nhấn được kết nối với chân D3 của kít nodemcu esp8266:

// Khai báo chân D3 là INPUT
#define BUTTON_PIN D3

void setup() {
  // Khởi tạo cổng nối tiếp với tốc độ 115200 baud
  Serial.begin(115200);
  // Thiết lập chế độ làm việc cho chân D3 là INPUT
  // có trạng thái thường trực mức HIGH
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // Đọc giá trị logic của chân D3
  int buttonState = digitalRead(BUTTON_PIN);
  // In giá trị ra cổng nối tiếp
  Serial.println(buttonState);
  // Đợi 100 ms
  delay(100);
}

Dưới đây là một ví dụ về chương trình Arduino để đọc giá trị chân A0 của kít nodemcu esp8266:

// Khai báo chân A0 là INPUT
#define ANALOG_PIN A0

void setup() {
  // Khởi tạo cổng nối tiếp với tốc độ 115200 baud
  Serial.begin(115200);
}

void loop() {
  // Đọc giá trị tương tự của chân A0
  int analogValue = analogRead(ANALOG_PIN);
  // In giá trị ra cổng nối tiếp
  Serial.println(analogValue);
  // Đợi 100 ms
  delay(100);
}

Chức năng Output

Chức năng output trên kít nodemcu esp8266 cho phép bạn điều khiển các thiết bị ngoại vi như LED, buzzer, relay, servo, motor, … bằng cách gửi tín hiệu logic (0 hoặc 1) hoặc tín hiệu PWM (Pulse Width Modulation) từ các chân GPIO của kít.

Để sử dụng chức năng output trên kít nodemcu esp8266, bạn cần làm các bước sau:

  • Kết nối kít nodemcu esp8266 với máy tính qua cáp micro-USB.
  • Viết chương trình Arduino để gửi tín hiệu output từ kít nodemcu esp8266
  • Bạn có thể sử dụng hàm pinMode() để thiết lập chế độ làm việc cho các chân GPIO, hàm digitalWrite() để gửi tín hiệu logic (0 hoặc 1) đến các chân GPIO, và hàm analogWrite() để gửi tín hiệu PWM (0 đến 1023) đến các chân GPIO có hỗ trợ PWM
  • Tương tự bạn cũng có thể sử dụng hàm Serial.begin()Serial.println() để gửi và nhận dữ liệu qua cổng nối tiếp.

Dưới đây là một ví dụ về chương trình Arduino để gửi tín hiệu PWM đến một LED được kết nối với chân D4 của kít nodemcu esp8266:

// Khai báo chân D4 là OUTPUT
#define LED_PIN D4

void setup() {
  // Khởi tạo cổng nối tiếp với tốc độ 115200 baud
  Serial.begin(115200);
  // Thiết lập chế độ làm việc cho chân D4 là OUTPUT
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // Tăng độ sáng của LED từ 0 đến 255
  for (int i = 0; i <= 255; i++) {
    // Gửi tín hiệu PWM đến chân D1
    analogWrite(LED_PIN, i);
    // In giá trị ra cổng nối tiếp
    Serial.println(i);
    // Đợi 10 ms
    delay(10);
  }
  
  // Giảm độ sáng của LED từ 1023 về 0
  for (int i = 255; i >= 0; i--) {
    // Gửi tín hiệu PWM đến chân D1
    analogWrite(LED_PIN, i);
    // In giá trị ra cổng nối tiếp
    Serial.println(i);
    // Đợi 10 ms
    delay(10);
  }
}
5/5 - (8 bình chọn)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Chiêu sinh khóa Lập trình ESP32 căn bản, lớp (20h-21h30) 3-5-7 ngày 19/11/2024. Học phí 1tr/khóa (20 buổi). Đăng ký qua zalo: 0919.890.938

X
Contact Me on Zalo