ESP8266 NodeMCU การใช้งานขา GPIO แบบ Digital
ขา GPIO ของ ESP8266 สามารถสั่งงาน ควบคุมเอาต์พุต และอ่านค่าอินพุตแบบดิจิตอลได้ โดยขาที่เป็น Digital จะขึ้นต้นด้วยตัว D หรือเรียกเป็นตัวเลขได้
การจัดขาของ NodeMCU เป็นดังรูปด้านล่าง โดยขา D0-D10 เรียกใช้งานได้ตามชื่อที่เขียนบนบอร์ด หรืออ้างอิงเป็นตัวเลขก็ได้ เช่น D4 = 2 (GPIO2 เรียกแทนเลขสอง)
NodeMCU GPIO มีการ map ขาดังนี้
static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3; บอร์ดเขียนว่า RX
static const uint8_t D10 = 1; บอร์ดเขียนว่า TX
ESP8266 NodeMCU Digital Write
ตัวอย่างการใช้งานควบคุมเอาต์พุตที่ขาดิจิตอล digitalWrite() เราจะสั่งงานเปิดปิดไฟที่ขา D2 หรือก็คือ ขาที่ 4
เมื่ออัพโหลดแล้ว จะเห็นไฟกระพริบทุก 1 วินาที
int led1 = 4; // เลข 4 หรือชื่อเรียกคือ D2
void setup() {
pinMode(led1, OUTPUT);
}
void loop() {
digitalWrite(led1, 1);
delay(1000);
digitalWrite(D2, 0);
delay(1000);
}
ESP8266 NodeMCU Digital Read
ตัวอย่างการใช้งานควบคุมอินพุตที่ขาดิจิตอล digitalRead() เราจะอ่านค่าจากขา D1 ว่ามีสถานะ 0 หรือ 1 โดยการกดสวิตช์
เมื่ออัพโหลดและเปิดดูที่ Serial Monitor กดปุ่มสวิตช์ จะเห็นเลข 0 หรือเลข 1 ออกมา คือค่าที่อ่านได้จากสถานะของสวิตช์
int sw = D1;
void setup() {
Serial.begin(9600);
pinMode(sw, INPUT_PULLUP);
// ขา GPIO16 หรือ D0 ไม่มีความสามารถ INPUT_PULLUP
}
void loop() {
int val = digitalRead(sw);
Serial.println(val);
delay(100);
}
linkhttps://medium.com/educate/esp8266-nodemcu-gpio-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B8%A7%E0%B8%9A%E0%B8%84%E0%B8%B8%E0%B8%A1-input-output-%E0%B9%81%E0%B8%9A%E0%B8%9A-digital-5772faa584cd