งานที่ 5

 

สอนใช้งาน NodeMCU ESP8266 สัญญาณ Digital InPut รับค่าการกดปุ่มสวิตช์ ควบคุมเปิดปิดหลอดไฟ LED

2 ปีที่ผ่านมา
 
โดย เจ้าของร้าน

สอนใช้งาน NodeMCU ESP8266 สัญญาณ Digital InPut รับค่าการกดปุ่มสวิตช์ ควบคุมเปิดปิดหลอดไฟ LED



 บทความนี้จะสอนใช้งาน NodeMCU ESP8266 อ่านค่าการกดปุ่ม โดยใช่คำสั่ง digitalRead()
การต่อสวิตช์มี 2 แบบ คือ pull up โดยจ่ายสัญญาณ 1 ให้กับสวิตช์ อีกแบบคือ pull down โดยจ่ายสัญญาณ 0 ให้กับสวิตช์ โดยผ่านตัวต้านทานเพื่อใช้คงค่าสถานะ ป้องกันไฟ 5V และ 0V ชนกันลัดวงจร



การต่อสวิตช์มี 2 แบบคือ

1. Pull UP คือการคงค่าสัญญาณ 1 ให้กับขา Digital Arduino ที่มาต่อกับสวิตช์ เมื่อสวิตช์ถูกกดจะให้สัญญาณ 0

2. Pull Down คือ การคงค่าสัญญาณ 0 ให้กับขา Digital Arduino ที่มาต่อกับสวิตช์  เมื่อสวิตช์ถูกกดจะให้สัญญาณ 1

คำสั่ง Digital Read
เป็นคำสั่งที่ใช้อ่าค่าสถานะขาดิจิตอลของ Arduino ว่าเป็น 5V หรือ 0V
HIGH คือลอจิก 1 ปล่อยไฟออกแรงดัน 5V
LOW คือลอจิก 0 กำหนดขานั้นให้เป็นกราว์ด 0V
digitalRead(PiN)

PiN หมายถึง  ขา Digital ของ Arduino ที่ต้องการอ่าน

ตัวอย่างคำสั่ง Digital Read
ต้องการอ่านค่า สถานะขา 13 ว่าเป็น 1 หรือ 0 เก็บในตัวแปล Val

Val = digitalRead(13)

อุปกรณ์ที่ต้องใช้ สอนใช้งาน NodeMCU ESP8266 สัญญาณ Digital InPut รับค่าการกดปุ่มสวิตช์ ควบคุมเปิดปิดหลอดไฟ LED

วิธีการต่ออุปกรณ์ สอนใช้งาน NodeMCU ESP8266 สัญญาณ Digital InPut รับค่าการกดปุ่มสวิตช์ ควบคุมเปิดปิดหลอดไฟ LED

NodeMCU ESP8266 -> หลอดไฟ LED
  • ขาD0 -> LED1
NodeMCU ESP8266 -> สวิตช์
  • ขาD1 -> สวิตช์


ให้ต่ออุปกรณ์ตามรูปข้างบน แล้ว อัพโหลด โค๊ดตัวอย่างด้านล่างลง NodeMCU ESP8266

int led1 = D0; // กำหนดขาใช้งาน
int buttonPin = D1;
int buttonState = 0;
void setup()
{
pinMode(led1, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา D0 เป็น OUTPUT
pinMode(buttonPin, INPUT);// กำหนดขาทำหน้าที่ให้ขา D1 เป็น INPUT รับค่าจากสวิตช์
digitalWrite(led1, LOW);
Serial.begin(9600);
}
void loop()
{
buttonState = digitalRead(buttonPin); // อ่านค่าสถานะขาD0
if (buttonState == HIGH) { //กำหนดเงื่อนไขถ้าตัวแปล buttonState เก็บ ค่า 1(HIGH) ให้ทำในปีกกา
digitalWrite(led1, HIGH); // ไฟ LED 1ติด
Serial.print("LED : ");
Serial.println(buttonState);
}
else { //ถ้าตัวแปล buttonState ไม่ได้เก็บ ค่า 1(HIGH) คือ ตัวแปล buttonState เก็บค่า 0(LOW) อยู่ ให้ทำปีกกาข้างล่าง
digitalWrite(led1, LOW); // ไฟ LED 1ดับ
Serial.print("LED : ");
Serial.println(buttonState);
}
}
view rawgistfile1.txt hosted with ❤ by GitHub



เลือกรุ่นบอร์ด NodeMCU ESP8266 ที่จะอัพโหลด




เลือก Port ที่บอร์ด NodeMCU ESP8266 เชื่อมต่อ แล้วกดอัพโหลดโค้ด




ถ้าอัพโหลดสำเร็จ จะขึ้นตามรูปด้างล่าง




ให้เปิด Serial Monitor ขึ้นมาแล้วกำหนดอัตราการส่งข้อมูลให้ตรงกับโปรแกรมที่อัพโหลดลง NodeMCU ESP8266




ในคอมพิวเตอร์กำหนดอัตราการส่งข้อมูลเป็น 9600



ถ้ายังไม่กดสวิตช์ ไฟ LED จะไม่สว่าง สถานะขา 3 ที่ต่อกับสวิตช์ จะเป็น LOW หรือ ลอจิก 0 ไฟ LED จะไม่ติด




ถ้ากดสวิตช์ สถานะขา D1 ที่ต่อกับสวิตช์ จะเป็น HIGH หรือ ลอจิก 1 ไฟ LED จะติด NodeMCU ESP8266 จะอ่านค่าการกดปุมของเรา ไปสั่งให้ไฟ LED ติด




จากตัวอย่างจะ เห็นว่าเราจะใช้คำสั่ง

buttonState = digitalRead(buttonPin); ในการอ่านค่าสวิตช์ที่ต่ออยู่กับ ขาD1 มาเก็บในสตัวแปล buttonState
เพื่อเอาไปตรวจสอบการกดสวิตช์

แล้วใช้คำสั่ง if (buttonState == HIGH) และ else ในการสั่งงานให้ LED ติดหรือดับ
digitalWrite(led1, HIGH); ถ้ากำหนด HIGH ไฟจะติด

digitalWrite(led1, LOW); ถ้ากำหนด LOW ไฟจะดับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ESP8266 ควบคุมเว็ป(NodeMCU ESP8266 เชื่อมต่อ DHT11 เซ็นเซอร์วัดอุณหภูมิและความชื้น แสดงค่าผ่าน wifi web server)