ค้นหาโค้ด

บทเรียน ESP32 9/55 - การใช้ปุ่มกดเพื่อสลับเปิด-ปิด LED, กดเปิด, กดปิด - ชุด IoT ESP32 ของ SunFounder

บทเรียน ESP32 9/55 - การใช้ปุ่มกดเพื่อสลับเปิด-ปิด LED, กดเปิด, กดปิด - ชุด IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ปุ่มกดเพื่อสลับเปิดและปิด LED กับไมโครคอนโทรลเลอร์ ESP32 โปรเจกต์นี้จะสาธิตวิธีการอ่านสถานะของปุ่มกดและควบคุม LED ตามนั้น เมื่อกดปุ่ม LED จะติด และเมื่อปล่อยปุ่ม LED จะดับ แนวคิดนี้เป็นพื้นฐานสำหรับโปรเจกต์แบบอินเทอร์แอกทีฟต่างๆ มากมายที่ใช้ ESP32

ESP32 เป็นไมโครคอนโทรลเลอร์ที่มีประสิทธิภาพพร้อมความสามารถ Wi-Fi และ Bluetooth ในตัว ทำให้เหมาะสำหรับการใช้งาน IoT ต่างๆ ในบทเรียนนี้ เราจะใช้ ESP32 จากชุดเริ่มต้น SunFounder ESP32 Starter Kit ซึ่งมีส่วนประกอบสำคัญ เช่น ตัวต้านทานและ LED เพื่อสร้างวงจรอย่างง่าย สำหรับคำอธิบายโดยละเอียดเกี่ยวกับการเดินสายไฟและโค้ด โปรดดูวิดีโอ (ในวิดีโอที่ 00:00)

อธิบายฮาร์ดแวร์

ส่วนประกอบสำคัญสำหรับโปรเจกต์นี้ ได้แก่ ไมโครคอนโทรลเลอร์ ESP32 ปุ่มกด LED และตัวต้านทาน ESP32 ทำหน้าที่เป็นสมองของโปรเจกต์ ควบคุม LED ตามสถานะของปุ่มกด ปุ่มกดช่วยให้ผู้ใช้โต้ตอบกับวงจรได้ ในขณะที่ LED ให้การตอบสนองทางภาพเมื่อกดปุ่ม

ปุ่มกดทำงานโดยการปิดวงจรเมื่อกด ทำให้กระแสไฟฟ้าไหลได้ การกระทำนี้ส่งสัญญาณ HIGH ไปยังพินอินพุตที่กำหนดของ ESP32 ซึ่งสามารถอ่านได้ในโค้ด ตัวต้านทานที่เชื่อมต่อกับปุ่มช่วยให้พินมีสถานะที่ชัดเจนเมื่อไม่ได้กดปุ่ม ป้องกันพฤติกรรมที่ผิดปกติ

ปุ่มกดพร้อมตัวต้านทาน

คำแนะนำการเดินสายไฟ

ในการเดินสายวงจร ให้เริ่มต้นโดยเชื่อมต่อขาที่ยาวกว่าของ LED (ขั้วแอโนด) เข้ากับตัวต้านทาน 220 โอห์ม เชื่อมต่อปลายอีกด้านของตัวต้านทานเข้ากับพิน GPIO 26 บน ESP32 ขาที่สั้นกว่าของ LED (ขั้วแคโทด) ควรเชื่อมต่อกับกราวด์ จากนั้นนำปุ่มกดมาเชื่อมต่อด้านหนึ่งเข้ากับแหล่งจ่ายไฟ 3.3V บนบอร์ด อีกด้านหนึ่งของปุ่มกดเชื่อมต่อกับพิน GPIO 14

ปุ่มกดโดยไม่มีตัวต้านทาน
ปุ่มกดโดยไม่มีตัวต้านทาน
ปุ่มกดพร้อมตัวต้านทาน
ปุ่มกดพร้อมตัวต้านทาน

นอกจากนี้ ให้วางตัวต้านทาน 10k โอห์มจากพิน GPIO 14 ไปยังกราวด์เพื่อให้แน่ใจว่าพินอ่านค่า LOW เมื่อไม่ได้กดปุ่ม สุดท้าย เชื่อมต่อสายกราวด์จาก ESP32 เข้ากับกราวด์ร่วมบนเบรดบอร์ด การตั้งค่านี้จะช่วยให้ ESP32 อ่านสถานะของปุ่มและควบคุม LED ได้ตามนั้น

ตัวอย่างโค้ดและคำอธิบาย

แกนหลักของโปรแกรมเริ่มต้นด้วยการกำหนดหมายเลขพินสำหรับปุ่มและ LED โดยใช้ค่าคงที่ เพื่อให้แน่ใจว่าการกำหนดพินยังคงไม่เปลี่ยนแปลงตลอดการทำงานของโปรแกรม

// กำหนดหมายเลขพิน
const int buttonPin = 14;  // พินปุ่ม
const int ledPin = 26;     // พิน LED

ในฟังก์ชัน setup() เราจะเริ่มต้นซีเรียลมอนิเตอร์และตั้งค่าพินปุ่มเป็นอินพุต ในขณะที่กำหนดค่าพิน LED เป็นเอาต์พุต ซึ่งเป็นการเตรียม ESP32 ให้อ่านค่าจากปุ่มและควบคุม LED

void setup() {
  Serial.begin(115200);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

ภายในฟังก์ชัน loop() โปรแกรมจะอ่านสถานะของปุ่มอย่างต่อเนื่องและพิมพ์ไปยังซีเรียลมอนิเตอร์ หากกดปุ่ม LED จะติด มิฉะนั้น LED จะดับ ตรรกะนี้จำเป็นสำหรับการสลับ LED ตามสถานะของปุ่ม

void loop() {
  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  delay(100);
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

ฟังก์ชันพื้นฐานนี้ช่วยให้ LED ตอบสนองต่อปุ่มกดได้โดยตรง สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโปรเจกต์และโค้ดที่สมบูรณ์ โปรดดูวิดีโอที่ให้ไว้ (ในวิดีโอที่ 14:00)

การสาธิต / สิ่งที่คาดหวัง

เมื่อเดินสายไฟเสร็จสมบูรณ์และอัปโหลดโค้ดแล้ว การกดปุ่มควรทำให้ LED ติด และการปล่อยปุ่มจะทำให้ LED ดับ พฤติกรรมนี้ยืนยันว่าสถานะของปุ่มถูกอ่านอย่างถูกต้อง หาก LED ไม่ตอบสนองตามที่คาดหวัง ให้ตรวจสอบการเดินสายไฟและตรวจสอบให้แน่ใจว่าปุ่มทำงานอย่างถูกต้อง

ระหว่างการทดสอบ ควรสังเกตซีเรียลมอนิเตอร์สำหรับการอ่านสถานะของปุ่ม คุณควรเห็น '1' เมื่อกดปุ่มและ '0' เมื่อปล่อยปุ่ม หากการอ่านค่าผันผวนอย่างไม่คาดคิด อาจบ่งบอกถึงปัญหาการเดินสายไฟหรือความจำเป็นต้องเพิ่มตรรกะดีบาวซ์ในโค้ด

ไทม์สแตมป์ของวิดีโอ

  • 00:00 เริ่มต้น
  • 1:48 แนะนำโปรเจกต์
  • 3:10 อธิบายสวิตช์และปุ่มกด
  • 7:19 อธิบายการเดินสายไฟ
  • 12:25 อธิบายโค้ด Arduino สำหรับปุ่มกด
  • 15:56 การเลือกบอร์ด ESP32 และพอร์ต COM
  • 17:38 การสาธิตโปรเจกต์
  • 18:33 โปรเจกต์ที่ 2 การสลับสถานะและ LED
  • 19:09 โค้ด Arduino สำหรับการสลับสถานะ LED
  • 21:16 การสาธิตการสลับสถานะ LED

ภาพ

Push button with resistor
Push button with resistor
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button with resistor
Push button with resistor
808-ESP32 Tutorial 9/55 - Arduino code push button
ภาษา: C++
// set pin numbers
const int buttonPin = 14;  // Button pin
const int ledPin = 26;     // LED pin

// variable for storing the button status
int buttonState = 0;

void setup() {
  Serial.begin(115200);
  // initialize the button pin as an input
  pinMode(buttonPin, INPUT);
  // initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the state of the button value
  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  delay(100);
  // if the button is pressed
  if (buttonState == HIGH) {
    // turn LED on
    digitalWrite(ledPin, HIGH);

  } else {
    // turn LED off
    digitalWrite(ledPin, LOW);
  }
}

แหล่งข้อมูลและเอกสารอ้างอิง

ยังไม่มีทรัพยากรเลย

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน