การใช้งาน 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 ดับ
}
ทำความเข้าใจได้ไม่ยากนะครับ ทั้งมือใหม่มือเก๋า
การใช้งาน Digital IO ของ NodeMCU ESP8266 Arduino รับค่าจากสวิทช์ออก LED
Reviewed by amaloma
on
ตุลาคม 16, 2564
Rating:
ไม่มีความคิดเห็น