Arduino UNO รองรับการดำเนินการอินพุตและเอาต์พุตแบบอะนาล็อกช่วยให้คุณสามารถโต้ตอบกับเซ็นเซอร์และแอคทูเอเตอร์ที่ต้องการค่าที่แม่นยำ การทำงานแบบอะนาล็อกเป็นสิ่งจำเป็นสำหรับการควบคุมอุปกรณ์เช่นไฟ LED มอเตอร์และอินพุตการอ่านจากเซ็นเซอร์เช่นโพเทนชิโอมิเตอร์หรือเซ็นเซอร์แสง บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับการตั้งค่าการอ่านและการเขียนแบบอะนาล็อกและการใช้การดำเนินการตรรกะเช่น if
ข้อความที่มีข้อมูลอะนาล็อก
สิ่งที่คุณต้องการ
- Arduino Uno พร้อมสาย USB
- โพเทนชิออมิเตอร์ (หรือตัวต้านทานตัวแปรใด ๆ ) สำหรับอินพุตแบบอะนาล็อก
- LED และตัวต้านทาน 220 โอห์มสำหรับเอาต์พุตแบบอะนาล็อก
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: ทำความเข้าใจกับหมุดอะนาล็อกบน Arduino
Arduino Uno มีหมุดอินพุตแบบอะนาล็อกหกตัว (A0-A5) ที่สามารถอ่านแรงดันไฟฟ้าระหว่าง 0 และ 5V และแปลงเป็นค่าดิจิตอลระหว่าง 0 และ 1023 สำหรับเอาต์พุตอะนาล็อก Arduino ใช้ PWM (การปรับความกว้างพัลส์) ทำเครื่องหมายด้วย ~
(เช่น, 3, 5, 6, 9, 10, 11)
ฟังก์ชั่นที่ใช้
-
อินพุตแบบอะนาล็อก:
analogRead(pin)
- อ่านแรงดันไฟฟ้า (0-5V) และส่งคืนค่าระหว่าง 0 ถึง 1023
-
เอาต์พุตอะนาล็อก:
analogWrite(pin, value)
- ส่งสัญญาณ PWM ที่
value
ช่วงตั้งแต่ 0 (รอบการทำงาน 0%) ถึง 255 (รอบการทำงาน 100%)
- ส่งสัญญาณ PWM ที่
ขั้นตอนที่ 2: อินพุตแบบอะนาล็อกสายไฟ (โพเทนชิออมิเตอร์)
เชื่อมต่อโพเทนชิออมิเตอร์เข้ากับหมุดอะนาล็อก Arduino:
หมุดโพเทนชิออมิเตอร์ | การเชื่อมต่อ Arduino |
---|---|
1 (ปลายขา) | 5V |
2 (กลาง/เอาต์พุต) | A0 |
3 (สิ้นสุดพิน) | gnd |
ขั้นตอนที่ 3: เอาท์พุทการเดินสายแบบอะนาล็อก (LED)
เชื่อมต่อ LED กับตัวต้านทาน 220 โอห์มกับพิน Arduino PWM (เช่นพิน 9):
พิน LED | การเชื่อมต่อ Arduino |
---|---|
ขายาว (+) | พินดิจิตอล 9 |
ขาสั้น (-) | gnd |
ขั้นตอนที่ 4: การอ่านอินพุตแบบอะนาล็อก
ใช้ analogRead()
ฟังก์ชั่นการอ่านข้อมูลจากโพเทนชิออมิเตอร์:
รหัสตัวอย่าง: การอ่านอินพุตแบบอะนาล็อก
#define potPin A0 // Potentiometer connected to A0
void setup() {
Serial.begin(9600);
Serial.println("Analog Input Test");
}
void loop() {
int sensorValue = analogRead(potPin); // Read analog value
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(500); // Wait for half a second
}
เรียกใช้รหัสและสังเกตค่าโพเทนชิออมิเตอร์ (0-1023) ในจอภาพอนุกรม
ขั้นตอนที่ 5: การเขียนเอาต์พุตแบบอะนาล็อก
ใช้ analogWrite()
ฟังก์ชั่นในการควบคุมความสว่างของ LED:
รหัสตัวอย่าง: เอาต์พุตอะนาล็อกไปยัง LED
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT); // Set LED pin as output
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // Increase brightness
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness); // Decrease brightness
delay(10);
}
}
ขั้นตอนที่ 6: การรวมอินพุตและเอาต์พุตแบบอะนาล็อก
คุณสามารถใช้ค่าอินพุตแบบอะนาล็อกเพื่อควบคุมเอาต์พุตเช่นการปรับความสว่างของ LED ตามตำแหน่งโพเทนชิออมิเตอร์
ตัวอย่างรหัส: โพเทนชิออมิเตอร์ควบคุมความสว่างของ LED
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin); // Read potentiometer value
int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
analogWrite(ledPin, brightness); // Set LED brightness
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" -> Brightness: ");
Serial.println(brightness);
delay(100);
}
ขั้นตอนที่ 7: ใช้ if
ข้อความที่มีข้อมูลแบบอะนาล็อก
คุณสามารถสร้างเงื่อนไขโดยใช้อินพุตแบบอะนาล็อกเพื่อดำเนินการเฉพาะ:
ตัวอย่างรหัส: การควบคุมแบบมีเงื่อนไข
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin);
if (sensorValue > 512) {
analogWrite(ledPin, 255); // Full brightness if sensor value > 512
Serial.println("Bright!");
} else {
analogWrite(ledPin, 0); // Turn off LED otherwise
Serial.println("Off");
}
delay(500);
}
แอปพลิเคชันของการอ่าน/เขียนแบบอะนาล็อก
- การอ่านเซ็นเซอร์สิ่งแวดล้อม (เช่นแสง, อุณหภูมิ, ความชื้น)
- การปรับความเร็วมอเตอร์
- การควบคุมความสว่างของ LED
- การประมวลผลสัญญาณเสียง
- การสร้างอินเทอร์เฟซผู้ใช้แบบอะนาล็อก
การแก้ไขปัญหา
- การอ่านที่ไม่ถูกต้องจากเซ็นเซอร์: ตรวจสอบการเดินสายที่เหมาะสมและตรวจสอบการเชื่อมต่อโพเทนชิออมิเตอร์
- LED ไม่สว่างขึ้น: ยืนยันการวางแนว LED และใช้ตัวต้านทานเพื่อ จำกัด กระแสไฟฟ้า
- เอาต์พุตไม่ราบรื่น: เพิ่มความล่าช้าเล็กน้อยหรือค่าเฉลี่ยค่าอินพุตเพื่อความเสถียร
บทสรุป
คุณได้เรียนรู้วิธีดำเนินการอ่านและเขียนแบบอะนาล็อกโดยใช้ Arduino UNO ค่าเซ็นเซอร์แผนที่ไปยังเอาต์พุตและใช้งาน if
คำสั่งสำหรับตรรกะตามเงื่อนไข ทักษะเหล่านี้มีความสำคัญต่อการสร้างโครงการที่ตอบสนองและตอบสนองได้ ทดลองเพิ่มเติมโดยการรวมเซ็นเซอร์อะนาล็อกและแอคทูเอเตอร์อื่น ๆ เพื่อขยายขีดความสามารถของคุณ!