Arduino Uno ให้ความสามารถในการโต้ตอบกับโลกแห่งความเป็นจริงโดยใช้หมุดดิจิตอล คุณสามารถใช้พินเหล่านี้เพื่อควบคุมอุปกรณ์เช่นไฟ LED มอเตอร์และรีเลย์หรืออ่านอินพุตจากเซ็นเซอร์ปุ่มและสวิตช์ บทช่วยสอนนี้จะอธิบายวิธีการตั้งค่าพินดิจิตอลดำเนินการอ่านและเขียนและใช้ประโยชน์ if
งบสำหรับการตัดสินใจตามตรรกะในโครงการของคุณ
สิ่งที่คุณต้องการ
- Arduino Uno พร้อมสาย USB
- LED และตัวต้านทาน 220 โอห์ม (สำหรับตัวอย่างเอาต์พุต)
- ปุ่มกดและตัวต้านทาน 10K-OHM (สำหรับตัวอย่างอินพุต)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: การตั้งค่าหมุดดิจิตอล
โหมดพินดิจิตอล
Arduino Uno มี 14 หมุดดิจิตอล (D0-D13) พินเหล่านี้สามารถกำหนดค่าเป็น:
- ป้อนข้อมูล: ในการอ่านสัญญาณจากเซ็นเซอร์หรือสวิตช์
- เอาท์พุท: เพื่อควบคุมไฟ LED มอเตอร์หรือแอคทูเอเตอร์อื่น ๆ
ใช้ pinMode()
ฟังก์ชั่นในการตั้งค่าโหมดของพินใน setup()
การทำงาน:
pinMode(pinNumber, mode);
-
pinNumber
: พินที่คุณต้องการกำหนดค่า (เช่น 2, 3 ฯลฯ ) -
mode
: ทั้งINPUT
,INPUT_PULLUP
, หรือOUTPUT
.
ขั้นตอนที่ 2: เขียนลงในพินดิจิตอล
คุณสามารถควบคุมอุปกรณ์โดยการเขียน HIGH
หรือ LOW
ไปยังพินเอาต์พุตโดยใช้ไฟล์ digitalWrite()
การทำงาน:
digitalWrite(pinNumber, value);
-
value
: ทั้งHIGH
(5V) หรือLOW
(0V)
ตัวอย่าง: กระพริบ LED
นี่คือวิธีการกะพริบ LED ที่เชื่อมต่อกับ PIN 13:
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(ledPin, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
ขั้นตอนที่ 3: การอ่านจากพินดิจิตอล
หากต้องการอ่านสถานะของพินให้ใช้ไฟล์ digitalRead()
การทำงาน:
int state = digitalRead(pinNumber);
-
state
: จะเป็นอย่างใดอย่างหนึ่งHIGH
หรือLOW
ขึ้นอยู่กับสัญญาณอินพุต
ตัวอย่าง: การอ่านปุ่มกด
เชื่อมต่อปุ่มกดกับ PIN 2 ด้วยตัวต้านทานแบบดึงลง (10K-OHM) เมื่อกดปุ่มจะส่งไฟล์ HIGH
สัญญาณ.
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(buttonPin, INPUT); // Set pin 2 as an input
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read the button state
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
} else {
digitalWrite(ledPin, LOW); // Turn off the LED otherwise
}
}
ขั้นตอนที่ 4: ใช้ if
ข้อความด้วยหมุดดิจิตอล
if
คำสั่งอนุญาตให้คุณสร้างตรรกะตามเงื่อนไขในโปรแกรมของคุณ รวมการอ่านดิจิตอลและเขียนเพื่อดำเนินการตามอินพุต
ตัวอย่าง: สลับปุ่ม LED บนปุ่มกด
ภาพร่างนี้สลับสถานะ LED ทุกครั้งที่กดปุ่ม:
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool currentButtonState = digitalRead(buttonPin);
if (currentButtonState == HIGH && lastButtonState == LOW) {
ledState = !ledState; // Toggle the LED state
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
lastButtonState = currentButtonState; // Update the button state
delay(50); // Debounce delay
}
ขั้นตอนที่ 5: การใช้งานขั้นสูงพร้อมการดำเนินการลอจิก
คุณสามารถใช้หลาย if
งบ else if
และตัวดำเนินการเชิงตรรกะ (&&
, ||
ฯลฯ ) เพื่อสร้างพฤติกรรมที่ซับซ้อนมากขึ้น
ตัวอย่าง: การควบคุมหลายอินพุต
ควบคุม LED ตามสถานะของสองปุ่ม:
#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool button1State = digitalRead(button1);
bool button2State = digitalRead(button2);
if (button1State == HIGH && button2State == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
} else {
digitalWrite(ledPin, LOW); // Turn off LED otherwise
}
}
การแก้ไขปัญหา
-
LED ไม่สว่างขึ้น:
- ตรวจสอบให้แน่ใจว่า LED เชื่อมต่ออย่างถูกต้อง (ขายาวถึงพินบวก)
- ใช้ตัวต้านทาน 220 โอห์มเพื่อหลีกเลี่ยงความเสียหาย
-
ปุ่มไม่ตอบสนอง:
- ตรวจสอบการเดินสายที่เหมาะสมด้วยตัวต้านทานแบบดึงลงหรือดึงขึ้น
- ตรวจสอบว่า pinmode ถูกตั้งค่าเป็น
INPUT
หรือINPUT_PULLUP
.
-
ปัญหา debounce:
- ใช้ความล่าช้าเล็กน้อยหรือใช้กลไกการ debounce ซอฟต์แวร์เพื่อจัดการกับสัญญาณรบกวนสัญญาณจากปุ่มกล
บทสรุป
คุณได้เรียนรู้วิธีดำเนินการอ่านและเขียนดิจิตอลด้วย Arduino UNO กำหนดค่าโหมด PIN และการใช้งาน if
คำสั่งสำหรับตรรกะตามเงื่อนไข ทักษะพื้นฐานเหล่านี้ช่วยให้คุณสามารถควบคุมส่วนประกอบฮาร์ดแวร์ที่หลากหลายและสร้างโครงการที่ตอบสนองต่อการโต้ตอบ ทดลองเพิ่มเติมโดยการรวมอินพุตและเอาต์พุตหลายรายการเพื่อพฤติกรรมที่ซับซ้อนมากขึ้น!