การใช้งาน Digital IO ของ NodeMCU ESP8266 Arduino รับค่าจากสวิทช์ออก LED

 


การเขียนพื้นฐานของ Microcontroller คือการเขียนการรับค่า Input ละส่งออก Output แบบ Digital วันนี้เรามาเรียนรู้การทำงาน และการเขียนโปรแกรม NodeMCU ESP8266  ด้วย Arduino กัน




Digital IO คืออะไร?

ดิจิตอลอินพุท/เอาท์พุท ทำหน้าที่เชื่อมต่อแบบดิจิตอลของขา Esp กับอุปกรณ์ภายนอก จะมีสถานะอยู่ 2 สถานะ คือ ลอจิก ‘1’ หรือ HIGH และ ลอจิก ‘0’ หรือ LOW โดยจะเทียบกับแรงดันไฟเลี้ยง



ถ้ายังไม่ได้ติดตั้ง Arduino สามารถอ่านจากบนทความ
NodeMCU Pinout

การใช้งานกับ Arduino

ขา Digital ที่ใช้คือขา D1-D8 สามารถกำหนดให้เป็น Input หรือ Output ได้ แต่การเลือกใช้งานต้องคำนึงถึงค่าเริ่มต้นเมื่อบอร์ดทำงานด้วย


จากรูปเป็นการแนะนำการใช้ขาเป็น Input/Output โดย
* เมื่อเริ่มทำงานจะมีสถานะ Hight
* ไม่สามารถทำงานได้ ถ้าตอนเริ่มทำงานต่อ Pull Down (ต่อกราว์ด) เช่่น ขา D3 ถ้าต่อกราว์ดตอน Boot จะเข้าสถานะ Flash
* ไม่สามารถทำงานได้ ถ้าตอนเริ่มทำงานต่อ Pull Up (ต่อบวก)

มาเขียนโปรแกรม Arduino Digital IO 

1. วงจร Led และ Switch เราจะใช้ตัวที่อยู่บนบอร์ด
2. เปิด Arduino IDE ขึ้นมา จากนั้นคลิกเมนู New



3.  ไปที่ Tools > Board > ESP8266 เลือก NodeMCU 1.0


 
4. เขียนโปนแกรมเพิ่มความเข้าใจตามนี้ จากนั้นกดปุ่ม Upload
#define LED D0
#define SW D3
#define LED_ON 0
#define LED_OFF 1

void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
  pinMode(SW, INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  int switchPut;
  switchPut = !digitalRead(SW);
  if(switchPut) digitalWrite(LED, LED_ON);  
  else digitalWrite(LED, LED_OFF); 
}



5. เมื่ออัปโหลดเรียบร้อย ทดสอบกดปุ่ม Flash, Led จะติด และดับเมื่อปล่อย


มาทำความเข้าใจกับโปรแกรม Digital IO

#define LED D0
กำหนดขา D0 ให้ค่าคงที่ LED

#define SW D3
กำหนดขา D3 ให้ค่าคงที่ SW

#define LED_ON 0
กำหนดค่า 0 ให้ค่าคงที่ LED_ON 

#define LED_OFF 1
กำหนดค่า 1 ให้ค่าคงที่ LED_OFF 

void setup() { 
ฟังชั่นการตั้งต่า จะทำงานครั้งดียวตอนเริ่มต้น

  // put your setup code here, to run once:
comment คำอธิบาย Compiler จะไม่ Compile 

  pinMode(LED, OUTPUT);
กำหนดขา LED เป็น OUTPUT

  pinMode(SW, INPUT_PULLUP);
กำหนดขา SW เป็น INPUT และ PULLUP ภายใน

}

void loop() {
ฟังชั่นทำงานวนตลอด

  // put your main code here, to run repeatedly:
comment คำอธิบาย Compiler จะไม่ Compile 

  int switchPut;
กำหนดตัวแปร switchPut เป็นแบบตัวเลข int เพื่อเก็บค่าการกด Switch

  switchPut = !digitalRead(SW);
อ่านค่า switch แบบ digit เก็บในตัวแปร switchPut 

  if(switchPut) digitalWrite(LED, LED_ON);  
ถ้าค่าตัวแปร switchPut มีค่า (1=true) สั่งให้ Led ติด

  else digitalWrite(LED, LED_OFF); 
ถ้าไม่ switchPut = 0 สั่งให้ Led ดับ

}


ทำความเข้าใจได้ไม่ยากนะครับ ทั้งมือใหม่มือเก๋า


ฝากกดติดตาม blog นี้ด้วยนะครับ
สามารถพูดคุยเพิ่มเติมได้ที่ facebook: Bulantech




 
การใช้งาน Digital IO ของ NodeMCU ESP8266 Arduino รับค่าจากสวิทช์ออก LED การใช้งาน Digital IO ของ NodeMCU ESP8266 Arduino รับค่าจากสวิทช์ออก LED Reviewed by amaloma on ตุลาคม 16, 2564 Rating: 5

ไม่มีความคิดเห็น

Advertisement

Main Ad