วันศุกร์ที่ 19 กันยายน พ.ศ. 2557

การทดลองที่ 4.4

การทดลองที่ 4.4 สัญญาณอินพุต-แอนะล็อกและการใช้งานร่วมกับบอร์ด Arduino


วัตถุประสงค์
1. ฝึกต่อวงจรเพื่อสร้างสัญญาณแอนะล็อก และป้อนให้บอร์ด Arduino เพื่อใช้เป็นสัญญาณอินพุต
2. เขียนโปรแกรมสําหรับ Arduino เพื่อเปิด/ปิด LED ตามสภาวะแสง

รายการอุปกรณ์
1. แผงต่อวงจร (เบรดบอร์ด)    1 อัน
2. บอร์ด Arduino (ใช้แรงดัน +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 ตามลําดับ)

2. เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้ และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่ ตัวต้านทานปรับค่าได้ หรือปิดบริเวณส่วนรบัแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino

3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมปีริมาณแสงนอ้ยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตาม สภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”

4. เขียนรายงานการทดลอง ซงึ่ประกอบด้วยคําอธบิายการทดลองตามขั้นตอน ผงัวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟา้ (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจรงิพร้อมคาํอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามทา้ยการทดลอง
ผลการทดลอง 

โค้ดข้อ 4.4.2

โค้ดข้อ 4.4.3

คำถามท้ายการทดลอง
1. ค่าที่ได้ (เลขจํานวนเต็ม) จากบอร์ด Arduino สําหรับสญัญาณอินพุตที่ขา A1 มีค่าอยู่ในช่วงใด (ต่ําสุด-สูงสุด)
ตอบ 340 - 970

2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตาม ปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสวา่งน้อย จะทําให้ LED1 สว่างมาก แต่ถ้า LDR ได้แสง สว่างมาก จะทําให้ LED1สว่างน้อย หรือไม่ติดเลย
 -
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);
  Serial.print("READ");
  Serial.print(value1, DEC);
  Serial.print(",");
  Serial.println(value2, DEC);
  delay(100);

  if (value1 <= value2) {
    analogWrite(LED1_PIN, 255-analogRead(LDR_PIN));
  }
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น