วิธีใช้สวิตช์ปุ่มกดกับ Arduino

How to Use a Push Button Switch with the Arduino

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


สิ่งที่คุณต้องการ

  1. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  2. สวิตช์ปุ่มกด
  3. ตัวต้านทาน 10K-OHM (สำหรับการกำหนดค่าแบบดึงลง)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: การทำความเข้าใจปุ่มกดสวิตช์

สวิตช์ปุ่มกดเป็นอุปกรณ์ง่าย ๆ ที่เชื่อมต่อหรือตัดการเชื่อมต่อวงจรเมื่อกด โดยทั่วไปแล้วจะมีสี่พินซึ่งสองอันเชื่อมต่อภายในสร้างสวิตช์เดี่ยว

การกำหนดค่าทั่วไป

  • ตัวต้านทานแบบดึงลง: ทำให้มั่นใจได้ว่าพินอินพุตจะอ่านต่ำเมื่อไม่ได้กดปุ่ม
  • ตัวต้านทานแบบดึงขึ้น: มั่นใจได้ว่าพินอินพุตจะอ่านได้สูงเมื่อปุ่มไม่ถูกกด (สามารถใช้ตัวต้านทานแบบดึงขึ้นภายในของ Arduino)

ขั้นตอนที่ 2: เดินสายปุ่มกดไปยัง Arduino

การกำหนดค่าตัวต้านทานแบบดึงลง

พินปุ่ม การเชื่อมต่อ
ด้านหนึ่ง Arduino Pin 2
ด้านอื่น ๆ 5V
ตัวต้านทาน (10k) Arduino Pin 2 ถึง GND

ขั้นตอนที่ 3: อ่านสถานะปุ่ม

ใช้ digitalRead() ฟังก์ชั่นเพื่อตรวจสอบว่าปุ่มถูกกด (สูง) หรือไม่ (ต่ำ)

รหัสตัวอย่าง: ปุ่มพื้นฐานอ่าน

#define buttonPin 2 // Button connected to pin 2

void setup() {
  pinMode(buttonPin, INPUT); // Set pin 2 as input
  Serial.begin(9600);
  Serial.println("Button Test");
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Read the button state

  if (buttonState == HIGH) {
    Serial.println("Button Pressed");
  } else {
    Serial.println("Button Released");
  }

  delay(100); // Small delay for readability
}

ขั้นตอนที่ 4: การใช้ตัวต้านทานแบบดึงขึ้นภายใน

Arduino มีตัวต้านทานแบบดึงขึ้นในตัวซึ่งสามารถทำให้การเดินสายง่ายขึ้นโดยไม่จำเป็นต้องใช้ตัวต้านทานภายนอก

สายไฟสำหรับการดึงภายใน

พินปุ่ม การเชื่อมต่อ
ด้านหนึ่ง Arduino Pin 2
ด้านอื่น ๆ gnd

รหัสตัวอย่าง: การใช้การดึงภายใน

#define buttonPin 2 // Button connected to pin 2

void setup() {
  pinMode(buttonPin, INPUT_PULLUP); // Enable internal pull-up resistor
  Serial.begin(9600);
  Serial.println("Button Test with Pull-Up");
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Read the button state

  if (buttonState == LOW) { // LOW means button is pressed
    Serial.println("Button Pressed");
  } else {
    Serial.println("Button Released");
  }

  delay(100); // Small delay for readability
}

ขั้นตอนที่ 5: debouncing ปุ่ม

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

ตัวอย่างรหัส: debouncing ปุ่ม

#define buttonPin 2 // Button connected to pin 2

unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50; // 50ms debounce time
int lastButtonState = HIGH;
int buttonState;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  int reading = digitalRead(buttonPin);

  // If the button state has changed, reset the debounce timer
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  // Check if the debounce time has passed
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;

      if (buttonState == LOW) {
        Serial.println("Button Pressed");
      }
    }
  }

  lastButtonState = reading;
}

ขั้นตอนที่ 6: การควบคุม LED ด้วยปุ่ม

คุณสามารถใช้ปุ่มเพื่อควบคุม LED ตัวอย่างเช่นสลับสถานะ LED ด้วยการกดปุ่มแต่ละครั้ง

รหัสตัวอย่าง: ปุ่มสลับ LED

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

bool ledState = false;
bool lastButtonState = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
}

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == LOW && lastButtonState == HIGH) {
    ledState = !ledState; // Toggle LED state
    digitalWrite(ledPin, ledState ? HIGH : LOW);
    delay(200); // Debounce delay
  }

  lastButtonState = buttonState;
}

แอปพลิเคชันของปุ่มกด

  1. เริ่ม/หยุดสวิตช์
  2. ผู้ใช้อินพุตสำหรับการเลือกโหมด
  3. รีเซ็ตปุ่มในวงจร
  4. ควบคุมแสงหรือเครื่องใช้ไฟฟ้า

การแก้ไขปัญหา

  • ปุ่มไม่ตอบสนอง: ตรวจสอบสายไฟและตรวจสอบให้แน่ใจว่าใช้ pinmode ที่ถูกต้อง
  • การอ่านที่ไม่แน่นอน: เพิ่มตรรกะ debounce หรือใช้ตัวต้านทานแบบดึง/ดึงลง
  • LED ไม่ให้แสงสว่าง: ยืนยันการวางแนว LED และใช้ตัวต้านทานเพื่อ จำกัด กระแสไฟฟ้า

บทสรุป

คุณได้เรียนรู้วิธีใช้สวิตช์ปุ่มกดกับ Arduino รวมถึงการอ่านสถานะการ debouncing และอุปกรณ์ควบคุมเช่น LEDs ปุ่มกดเป็นองค์ประกอบพื้นฐานในอุปกรณ์อิเล็กทรอนิกส์และการควบคุมการใช้งานของพวกเขาจะเปิดขึ้น PO ที่ไม่มีที่สิ้นสุด

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.