สัญญาณอินพุต-แอนะล็อก
และการใช้งานร่วมกับบอร์ด Arduino
และการใช้งานร่วมกับบอร์ด Arduino
วัตถุประสงค์ในการทดลอง
1. ฝึกการต่อวงจรบนเบรดบอร์ด อย่างถูกต้อง
2. ฝึกการป้อนสัญญาณอินพุตเป็นแอนะล็อคให้กับบอร์ด Ardunio
3. ฝึกทักษะในการเขียนโปรแกรม Ardunio เพื่อติด/ดับ ตามปริมาณแสง
อุปกรณ์ที่ใช้ในการทดลอง
1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
2. บอร์ด Ardunio (ใช้แรงดัน +5v.) 1 บอร์ด
3. ตัวต้านทานปรับค่าได้ 10kโอห์ม หรือ 20k โอห์ม 1 ตัว
4. ตัวต้านทานไวแสง LDR 1 ตัว
5. ไดโอดเปล่งแสงขนาด 5 มม. 1 ตัว
6. ตัวต้านทาน 330 หรือ 470 โอห์ม 1 ตัว
7. ตัวต้านทาน 10k โอห์ม 1 ตัว
8. สายไฟสำหรับต่อวงจร 1 ชุด
9. มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนและผลการทดลอง
1. ต่อวงจรตามผังวงจรในรูปที่4.4.1 บนเบรดบอร์ด ร่วมกับบอร์ด Arduino โดยใช้แรงดันไฟเลี้ยง
VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น (ต่อวงจรบนเบรดบอร์ดก่อน จากนั้นจึงเชื่อมต่อ
สัญญาณอินพุตและเอาต์พุตของบอร์ด Arduino เมื่อตรวจสอบความถูกต้อง แล้วจึงป้อนแรงดันไฟ
เลี้ยงและ Gnd ตามลําดับ)
ผังวงจร 4.4.1
ภาพการต่อวงจรตามรูปที่ 4.4.1
ภาพการต่อวงจรบนเบรดบอร์ด
2. เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่
ตัวต้านทานปรับค่าได้หรือปิดบริเวณส่วนรับแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ
Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino
โค้ดตัวอย่างสำหรับ Ardunio
3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ถ้าปิดส่วนรับแสงของตัว
ต้านทานไวแสง LDR หรือมปรี ิมาณแสงนอยลง ้ จะทําให LED1 “ ้ สว่าง” แต่ถ้า LDR ได้รับแสงตาม
สภาวะแสงปรกติหรือได้รับปริมาณแสงมาก จะทําให LED1 “ ้ ไม่ติด”
ภาพวงจร
บันทึกผลการทดลอง
จากการทดลองข้อที่ 2 : ผลคือ LED ไม่ติด เนื่องจากใน code คำสั่งไม่มีการกำหนดค่าให้ไฟให้ติด แต่เมื่อสังเกตจากข้อความที่ถูกส่งออกมาจาก Ardunio แล้วพบว่า ค่าที่ออกมา ยกตัวอย่างเช่น Read802, 954 ค่าตัวเลขข้างหลัง Read คือค่าความต้านทานของ LDR และตัวเลขข้างหลัง (,) คือ ค่าตัวต้านทานที่หมุนปรับค่าได้ (Trimport)
จากการทดลองข้อที่ 3 : เราสามารถปรับแก้ code ตัวอย่างได้โดย สร้างเงื่อนไข ให้ LDR_PIN มีค่ามากกว่า 420 (ค่าที่ได้เกิดจากการสังเกตค่า LDR เมื่อใช้นิ้วปิดไร้แสง) ให้ LED1_PIN มี OUTPUT ที่ออกมามีค่าเป็น LOW และถ้าน้อยกว่าหรือเท่ากับ 420 ให้แสดลงผลเป็น HIGH
ดั่งเช่น Code ต่อไปนี้
const byte LDR_PIN = A1;
const byte VREF_PIN = A2;
const byte LED1_PIN = 5;
void setup() {
pinMode (LED1_PIN, OUTPUT);
digitalWrite (LED1_PIN, LOW);
analogReference (DEFAULT);
Serial.begin (9600);
}
void loop() {
int value1 = analogRead (LDR_PIN);
int value2 = analogRead (VREF_PIN);
if (value1 >= 420) {
digitalWrite (LED1_PIN, LOW);
}
else {
digitalWrite (LED1_PIN, HIGH);
}
Serial.print ("Read");
Serial.print (value1, DEC);
Serial.print (",");
Serial.println (value2, DEC);
delay (200);
}
วีดิโอเมื่อปรับแก้ code ตามที่โจทย์บอกแล้ว
คำถามท้ายการทดลอง
1. ค่าที่ได้ (เลขจํานวนเต็ม) จากบอร์ด Arduino สําหรับสัญญาณอินพุตที่ขา A1 มีค่าอยู่ในช่วงใด (ต่ําสุด-สูงสุด)
ตอบ ต่ำสุด 0 ถึงสูงสุด 1023
2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตามปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสวางน้อย จะทําให้ LED1 สว่างมาก แต่ถ้า LDR ได้แสงสว่างมาก จะทําให้ LED1 สว่างน้อย หรือไม่ติดเลย
ตอบ สังเกตค่าที่ Ardunio ส่งออกมา โดยสร้างเงื่อนไข ให้ LDR_PIN มีค่ามากกว่า 420 ให้ LED1_PIN มี OUTPUT ที่ออกมามีค่าเป็น LOW และถ้าน้อยกว่าหรือเท่ากับ 420 (ค่าที่ได้เกิดจากการสังเกตค่า LDR เมื่อใช้นิ้วปิดไร้แสง) ให้แสดลงผลเป็น HIGH
ดั่งเช่น Code ต่อไปนี้
if (value1 >= 420) {
digitalWrite (LED1_PIN, LOW);
}
else {
digitalWrite (LED1_PIN, HIGH);
}
if (value1 >= 420) {
digitalWrite (LED1_PIN, LOW);
}
else {
digitalWrite (LED1_PIN, HIGH);
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น