Em có Broad mở rộng chân IO PCF8574 dùng cho ESP8266 em loay hoay test hoài mà vẫn chưa thành công mong mọi người chỉ bảo giúp em
sơ đồ chân e nối :
VCC - 3.3v
GND -GND
SDA - GPIO 4
SCL - GPIO 5
SDA, SCL nối qua điện trở 10 Oom kéo lên VCC
em test qua 2 con LEd nối vào chân P0, P1
https://drive.google.com/file/d/1sfxPvJAv4sJr1Ob2ThL-NdSLe3qUzV-t/view?usp=sharing
Hỏi về Broad mở rộng chân IO PCF8574 dùng cho ESP8266
- Tại sao lại nối SDA và SCL vào GPIO4 và GPIO5?
- Dùng trở 10 Ohm là sai, phải dùng trở 10k
- Code của bạn là một chân đọc button, 1 chân output ra LED, tại sao bạn lại nối vào 2 con LED?
- Bạn có hiểu mình rõ đang làm gì không? Hay là làm theo hướng dẫn ở đâu đó và thử nghiệm?
đầu tiên cảm ơn bạn đã quan tâm câu hỏi của em.
Tiếp là 10k ôm em viết thiếu , và code e tham khảo trên trang web tiếng anh có demo băng hình ảnh nên làm theo. em Muốn mở rộng thêm chân GPIO cho Esp8266 a có cách nào tốt hơn gợi ý cho em để e thực hành .
Mình upload lại source code của bạn lên đây cho mọi người dễ tham khảo:
#include "Arduino.h"
#include "PCF8574.h"
// Set i2c HEX address
PCF8574 pcf8574(0x20);//Cấu hình địa chỉ I2C
unsigned long timeElapsed;
void setup(){
Serial.begin(115200);
pcf8574.pinMode(P0, INPUT);
pcf8574.pinMode(P1, OUTPUT);
pcf8574.begin();
}
void loop(){
uint8_t val = pcf8574.digitalRead(P1); // Read the value of pin P0
if (val == HIGH) pcf8574.digitalWrite(P0, HIGH); // If Button is Pressed
else pcf8574.digitalWrite(P0, LOW); // When Button is Released
delay(50);
}
- Bạn chưa trả lời câu hỏi này:
-
Bạn có thể chụp hình thực tế và schematic mạch của bạn hay không?
Hình bạn upload lên không thể hiện đúng và đầy đủ mô tả ban đầu của bạn. -
Bạn có chắc rằng bạn có thể điều khiển được con ESP8266 không? Ví dụ như bạn có thể bật tắt LED thông qua GPIO của nó? Việc này để chắc rằng bạn không chọn sai config cho compiler của bạn (mình đoán là Arduino IDE).
-
P0
vàP1
của bạn define là gì?
Bạn vui lòng đọc kỹ và trả lời từng câu rõ ràng.
Cảm thấy chững hững khi người ta chạy mất.
pcf8574.pinMode(P0, INPUT) => pcf8574.digitalWrite(P0, HIGH); ???
tại sao cấu hình là input mà lại write vậy ạ
bạn giải thích giúp mình với
Có vẻ 2 chân P0 và P1 của bạn đang bị đảo nhau.
Theo mình nhìn thì HIGH ở đây đc define là 1 hả?? Thử kiểm tra if (pcf8574.digitalRead(P1)== HIGH) xem sao.
Do người ta code sai đó bạn.
Trong thực tế thì có một trường hợp mà bạn phải write HIGH vào chân INPUT, để cho nó giữ mức cao lúc init là không bị Floating. Nhưng việc này tùy thuộc vào loại chip đang sử dụng.
Trong trường hợp cụ thể này thì code đó bị sai, và code đó của bạn kia chứ không phải của mình. Mình chỉ cố hướng dẫn bạn ấy debug nhưng bạn ấy chỉ hỏi và chạy mất.