ภาพปกสอนมือใหม่ ESP32 Digital Input Output แสดงบอร์ด ESP32 Dev Module พร้อมปุ่มกดและ LED มีลูกศรอธิบายการทำงาน อ่านปุ่มกดด้วย digitalRead() และควบคุม LED ด้วย digitalWrite() พื้นหลังโทนเขียว-ฟ้าแนวเทคโนโลยี

ESP32 การอ่านอินพุตดิจิทัล และควบคุมเอาต์พุตด้วย Arduino IDE

การอ่านอินพุตดิจิทัล และควบคุมเอาต์พุต

การควบคุมอุปกรณ์ไฟฟ้าหรืออ่านค่าจากสวิตช์บนบอร์ด 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
digitalWrite(25, LOW); // ปิด LED

วงจรตัวอย่าง

ในตัวอย่างนี้เราจะใช้ปุ่มกดเป็น Digital Input และ LED เป็น Digital Output

การต่อสาย

  • ปุ่มกด: ต่อขาหนึ่งไป GPIO35 อีกขาหนึ่งต่อ GND

  • LED: ขา Anode (+) ต่อ GPIO25 ผ่าน R220Ω, ขา Cathode (-) ต่อ GND

แผนผังการต่อวงจร ESP32 กับปุ่มกดและ LED ปุ่มกดต่อ GPIO35 และ GND ส่วน LED ต่อ GPIO25 ผ่านตัวต้านทาน 220 โอห์มไปยัง GND แสดงการเชื่อมต่อสาย VCC, GND, และสัญญาณอย่างชัดเจน

ตัวอย่างโค้ด ESP32 Digital Input & Output

/*
  ESP32 Digital Inputs & Outputs
  Deva DIY – https://www.devadiy.com
*/

 

const int btnPin = 35; // ปุ่มกด
const int ledPin = 25; // LED

 

int buttonState = 0;

 

void setup() {
  Serial.begin(115200);

 

  pinMode(btnPin, INPUT);   // ตั้งปุ่มเป็น Input
  pinMode(ledPin, OUTPUT);  // ตั้ง LED เป็น Output
}

 

void loop() {
  // อ่านค่าจากปุ่ม
  buttonState = digitalRead(btnPin);

 

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH); // เปิด LED
    Serial.println(“LED ON”);
  } else {
    digitalWrite(ledPin, LOW); // ปิด LED
    Serial.println(“LED OFF”);
  }

 

  delay(100);
}

การทำงานของโค้ด

 

  1. ตั้งค่า GPIO ของปุ่มกดเป็น Input และ LED เป็น Output
  2. อ่านค่าจากปุ่มทุก 100ms
  3. ถ้ากดปุ่ม (HIGH) → LED ติด
  4. ถ้าไม่กดปุ่ม (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 ผ่านหน้าเว็บ ไม่ต้องแก้โค้ดใหม่ทุกครั้ง

Shopping Cart
Scroll to Top