สัญญาณอินพุต-แอนะล็อกและการใช้งานร่วมกับบอร์ดArduino
วัตถุประสงค์
- ฝึกต่อวงจรเพื่อสร้างสัญญาณแอนะล็อก และป้อนให้บอร์ด Arduino เพื่อใช้เป็นสัญญาณอินพุต
- เขียนโปรแกรมสําหรับ Arduino เพื่อเปิด/ปิด LED ตามสภาวะแสง
รายการอุปกรณ์
| แผงต่อวงจร (เบรดบอร์ด) | 1 อัน |
| บอร์ด Arduino (ใช้แรงดัน+5V) | 1 บอร์ด |
| ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ | 1 ตัว |
| ตัวต้านทานไวแสง LDR | 1 ตัว |
| ไดโอดเปล่งแสงขนาด 5 มม. | 1 ตัว |
| ตัวต้านทาน 330Ω หรือ 470Ω | 1 ตัว |
| ตัวต้านทาน 10kΩ | 1 ตัว |
| สายไฟสําหรับต่อวงจร | 1 ชุด |
| มัลติมิเตอร์ | 1 เครื่อง |
ขั้นตอนการทดลอง
1. ต่อวงจรตามผังวงจรในรูปที่ 4.4.1 บนเบรดบอร์ดร่วมกับบอร์ด Arduino โดยใช้แรงดันไฟเลี้ยง VCC = +5V และ Gnd จากบอร์ด Arduino เท่านั้น (ต่อวงจรบนเบรดบอร์ดก่อนจากนั้นจึงเชื่อมต่อ สัญญาณอินพุตและเอาต์พุตของบอร์ด Arduino เมื่อตรวจสอบความถูกต้องแล้วจึงป้อนแรงดันไฟ เลี้ยง และ Gnd ตามลําดับ)
2. เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้ และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่ ตัวต้านทานปรับค่าได้ หรือปิดบริเวณส่วนรับแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino
3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมี ปริมาณแสงน้อยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตาม สภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”
4. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจริงพร้อมคําอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามท้ายการทดลอง
1. ต่อวงจรตามผังวงจรในรูปที่ 4.4.1 บนเบรดบอร์ดร่วมกับบอร์ด Arduino โดยใช้แรงดันไฟเลี้ยง VCC = +5V และ Gnd จากบอร์ด Arduino เท่านั้น (ต่อวงจรบนเบรดบอร์ดก่อนจากนั้นจึงเชื่อมต่อ สัญญาณอินพุตและเอาต์พุตของบอร์ด Arduino เมื่อตรวจสอบความถูกต้องแล้วจึงป้อนแรงดันไฟ เลี้ยง และ Gnd ตามลําดับ)
2. เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้ และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่ ตัวต้านทานปรับค่าได้ หรือปิดบริเวณส่วนรับแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino
3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมี ปริมาณแสงน้อยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตาม สภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”
4. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจริงพร้อมคําอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามท้ายการทดลอง
![]() |
| รูปที่ 4.4.1: ผังวงจรสําหรับต่อวงจรบนเบรดบอร์ดร่วมกับบอร์ด Arduino |
![]() |
| โค้ดที่4.4.1: โค้ดตัวอย่างสําหรับ Arduino |
ผลการทดลอง
คำถามท้ายการทดลอง
1. ค่าที่ได้ (เลขจํานวนเต็ม) จากบอร์ด Arduino สําหรับสัญญาณอินพุตที่ขา A1 มีค่าอยู่ในช่วงใด
(ต่ําสุด-สูงสุด)
ans ตั้งแต่ 0 ถึงประมาณ 880
2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตาม ปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสว่างน้อย จะทําให้ LED1 สว่างมาก แต่ถ้าLDR ได้แสง สว่างมาก จะทําให้ LED1 สว่างน้อยหรือไม่ติดเลย
ans
const byte LDR_PIN = A1; // from LDR
const byte VREF_PIN = A2; // from Trimpot
const byte LED1_PIN = 5; // to LED1
void setup() {
pinMode( LED1_PIN, OUTPUT );
digitalWrite( LED1_PIN, LOW );
analogReference( DEFAULT );
Serial.begin( 9600 ); // open serial port
}
void loop() {
// read analog values
int value1 = analogRead( LDR_PIN );
int value2 = analogRead( VREF_PIN );
if(value1 < value2)
digitalWrite( LED1_PIN, HIGH );
else
digitalWrite( LED1_PIN, LOW );
// send message to serial port
Serial.print( "Read " );
Serial.print( value1, DEC );
Serial.print( ", " );
Serial.println( value2, DEC );
delay( 200 );
}
ans ตั้งแต่ 0 ถึงประมาณ 880
2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตาม ปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสว่างน้อย จะทําให้ LED1 สว่างมาก แต่ถ้าLDR ได้แสง สว่างมาก จะทําให้ LED1 สว่างน้อยหรือไม่ติดเลย
ans
const byte LDR_PIN = A1; // from LDR
const byte VREF_PIN = A2; // from Trimpot
const byte LED1_PIN = 5; // to LED1
void setup() {
pinMode( LED1_PIN, OUTPUT );
digitalWrite( LED1_PIN, LOW );
analogReference( DEFAULT );
Serial.begin( 9600 ); // open serial port
}
void loop() {
// read analog values
int value1 = analogRead( LDR_PIN );
int value2 = analogRead( VREF_PIN );
if(value1 < value2)
digitalWrite( LED1_PIN, HIGH );
else
digitalWrite( LED1_PIN, LOW );
// send message to serial port
Serial.print( "Read " );
Serial.print( value1, DEC );
Serial.print( ", " );
Serial.println( value2, DEC );
delay( 200 );
}




No comments:
Post a Comment