สวิตช์ปุ่มกดมักใช้ในอุปกรณ์อิเล็กทรอนิกส์เพื่อควบคุมอุปกรณ์หรือทริกเกอร์การกระทำที่เฉพาะเจาะจง ด้วย Arduino คุณสามารถอ่านสถานะของปุ่มกดและใช้ในโครงการของคุณได้อย่างง่ายดาย บทช่วยสอนนี้จะแนะนำคุณผ่านการตั้งค่าและใช้สวิตช์ปุ่มกดกับ Arduino พร้อมกับตัวอย่างของวิธีการรวมไว้ในรหัสของคุณ
สิ่งที่คุณต้องการ
- คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
- สวิตช์ปุ่มกด
- ตัวต้านทาน 10K-OHM (สำหรับการกำหนดค่าแบบดึงลง)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง 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;
}
แอปพลิเคชันของปุ่มกด
- เริ่ม/หยุดสวิตช์
- ผู้ใช้อินพุตสำหรับการเลือกโหมด
- รีเซ็ตปุ่มในวงจร
- ควบคุมแสงหรือเครื่องใช้ไฟฟ้า
การแก้ไขปัญหา
- ปุ่มไม่ตอบสนอง: ตรวจสอบสายไฟและตรวจสอบให้แน่ใจว่าใช้ pinmode ที่ถูกต้อง
- การอ่านที่ไม่แน่นอน: เพิ่มตรรกะ debounce หรือใช้ตัวต้านทานแบบดึง/ดึงลง
- LED ไม่ให้แสงสว่าง: ยืนยันการวางแนว LED และใช้ตัวต้านทานเพื่อ จำกัด กระแสไฟฟ้า
บทสรุป
คุณได้เรียนรู้วิธีใช้สวิตช์ปุ่มกดกับ Arduino รวมถึงการอ่านสถานะการ debouncing และอุปกรณ์ควบคุมเช่น LEDs ปุ่มกดเป็นองค์ประกอบพื้นฐานในอุปกรณ์อิเล็กทรอนิกส์และการควบคุมการใช้งานของพวกเขาจะเปิดขึ้น PO ที่ไม่มีที่สิ้นสุด