การอ่านอินพุตดิจิทัล และควบคุมเอาต์พุต
การควบคุมอุปกรณ์ไฟฟ้าหรืออ่านค่าจากสวิตช์บนบอร์ด ESP32 คือพื้นฐานที่ต้องรู้ก่อนทำโครงงาน IoT หรือ Smart Farm
บทความนี้จะพาคุณเข้าใจตั้งแต่การใช้ digitalRead() และ digitalWrite() จนถึงการต่อวงจรจริงและรันโค้ดได้ใน Arduino IDE
เรียนรู้ว่า ESP32 คืออะไรและทำไม พร้อมคำอธิบายคุณสมบัติหลักและการใช้งานที่ง่ายดาย
สอนใช้งาน Arduino IDE ตั้งแต่พื้นฐานจนถึงขั้นสูง ทั้งการติดตั้ง การเขียนโค้ด C/C++ สำหรับ ESP32 และบอร์ดตระกูล Arduino
รวมข้อมูล ESP32 Pinout และ GPIO แบบละเอียด ทั้งตารางพินที่ควรใช้และควรหลีกเลี่ยง
ทำความเข้าใจกับ Digital Input และ Digital Output
| ประเภท | ความหมาย | ตัวอย่างอุปกรณ์ |
|---|---|---|
| Digital Input | การรับค่าที่มี 2 สถานะ (HIGH/LOW) | ปุ่มกด, Limit Switch, เซนเซอร์แบบดิจิทัล |
| Digital Output | การส่งสัญญาณออก 2 สถานะ (HIGH/LOW) | LED, Relay, Buzzer |
ESP32 มีขา GPIO หลายขาที่สามารถตั้งให้เป็น Input หรือ Output ได้ ทำให้ยืดหยุ่นต่อการใช้งาน
ฟังก์ชันสำคัญใน Arduino IDE
digitalRead(pin)
ใช้สำหรับอ่านค่าจากขา GPIO ว่าเป็น HIGH (1) หรือ LOW (0)
int value = digitalRead(35); // อ่านค่าจากขา GPIO35 |
digitalWrite(pin, value)
ใช้สำหรับสั่งขา GPIO ให้เป็น HIGH หรือ LOW
digitalWrite(25, HIGH); // เปิด LED |
วงจรตัวอย่าง
ในตัวอย่างนี้เราจะใช้ปุ่มกดเป็น Digital Input และ LED เป็น Digital Output
การต่อสาย
ปุ่มกด: ต่อขาหนึ่งไป GPIO35 อีกขาหนึ่งต่อ GND
LED: ขา Anode (+) ต่อ GPIO25 ผ่าน R220Ω, ขา Cathode (-) ต่อ GND

ตัวอย่างโค้ด ESP32 Digital Input & Output
การทำงานของโค้ด
- ตั้งค่า GPIO ของปุ่มกดเป็น Input และ LED เป็น Output
- อ่านค่าจากปุ่มทุก 100ms
- ถ้ากดปุ่ม (HIGH) → LED ติด
- ถ้าไม่กดปุ่ม (LOW) → LED ดับ
เคล็ดลับสำหรับมือใหม่
ถ้าปุ่มมีการสั่น (Bounce) ให้ใช้ debounce หรือหน่วงเวลาเล็กน้อย
ตรวจสอบว่า GPIO ที่ใช้รองรับการทำงานแบบ Input หรือ Output (บางขามีข้อจำกัด)
ใช้ INPUT_PULLUP แทน INPUT เพื่อไม่ต้องต่อ R Pull-up ภายนอก
ตัวอย่าง:
pinMode(btnPin, INPUT_PULLUP); |
สรุป
- digitalRead() ใช้สำหรับอ่านค่าจากปุ่มหรืออุปกรณ์ดิจิทัลอื่น
- digitalWrite() ใช้สำหรับสั่งงานอุปกรณ์ Output เช่น LED, Relay
- รู้พื้นฐานนี้แล้ว สามารถต่อยอดทำโครงงานได้ เช่น ไฟเปิดเมื่อกดปุ่ม, ควบคุมปั๊มน้ำ, หรือระบบแจ้งเตือน
เรื่องที่เกี่ยวข้อง
ESP32 Web Server – ควบคุมรีเลย์
สร้างหน้าเว็บควบคุมอุปกรณ์ไฟฟ้าผ่าน Wi-Fi เปิด/ปิดรีเลย์ได้แบบเรียลไทม์ESP32 WiFi Library Functions
รวมคำสั่ง Wi-Fi บน ESP32 ที่ใช้บ่อย พร้อมตัวอย่างใช้งานจริงESP32 สร้างไฟวิ่ง LED
ทำไฟวิ่งแบบง่าย ๆ ด้วยโค้ด Arduino IDE และขยายต่อเป็นเอฟเฟกต์สวย ๆESPAsyncWebServer – Wi-Fi Manager
ตั้งค่า Wi-Fi ให้ ESP32 ผ่านหน้าเว็บ ไม่ต้องแก้โค้ดใหม่ทุกครั้ง




