Uncategorized

การใช้งานขา GPIO ESP8266 NodeMCU แบบ Digital

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