การสร้างสัญญาณเอาต์พุตตามจังหวะสัญญาณอินพุตด้วย Arduino
วัตถุประสงค์
- สร้างสัญญาณจากเครื่องกําเนิดสัญญาณดิจิทัลแบบมีคาบ เพื่อป้อนเป็นอินพุตให้บอร์ด Arduino
- เขียนโค้ดสําหรับ Arduino เพื่อประมวลผลสัญญาณดิจิทัลจากอินพุต และสร้างสัญญาณเอาต์พุต ตามเงื่อนไขที่กําหนดให้
รายการอุปกรณ์
| แผงต่อวงจร (เบรดบอร์ด) | 1 อัน |
| บอร์ดArduino (ใช้แรงดัน +5V) | 1 บอร์ด |
| ตัวต้านทาน 100Ω หรือ 150Ω | 1 ตัว |
| ตัวต้านทาน 330Ω หรือ 470Ω | 1 ตัว |
| ไดโอดเปล่งแสงขนาด 5 มม. | 1 ตัว |
| สายไฟสําหรับต่อวงจร | 1 ชุด |
| เครื่องกําเนิดสัญญาณดิจิทัล | 1 เครื่อง |
| ออสซิลโลสโคป | 1 เครื่อง |
ขั้นตอนการทดลอง
- สร้างสัญญาณดิจิทัลแบบมีคาบ (แรงดันในช่วง 0V และ 5V เท่านั้น ห้ามใช้แรงดันสูงกว่าหรือแรงดันเป็นลบ) มีรูปคลื่นสี่เหลี่ยม หรือแบบ Pulse (Duty Cycle = 50%) มีความถี่ 10Hz จากเครื่องกําเนิดสัญญาณ โดยต่อผ่านตัวต้านทาน 100Ω หรือ 150Ω ไปยังขา D3 ของบอร์ด Arduino เพื่อใช้เป็นอินพุต
- ต่อวงจร LED พร้อมตัวต้านทานจํากัดกระแสที่ขา D5 ของบอร์ด Arduino เพื่อใช้แสดงสถานะ
- เขียนโค้ด Arduino Sketch เพื่อทําให้หลอด LED บนแผงวงจรกระพริบตามความถี่ของสัญญาณอินพุต (อัตราการกระพริบของ LED จะต้องสอดคล้องกับความถี่ของสัญญาณอินพุต)
- ปรับความถี่ของสัญญาณอินพุตในช่วง 5Hz .. 20Hz (เพิ่มทีละ 5Hz) และใช้ออสซิลโลสโคป
2 ช่องวัดสัญญาณอินพุตที่ขา D3 และสัญญาณเอาต์พุตที่ขา D5 พร้อมกัน และบันทึกรูปคลื่นสัญญาณที่ได้สําหรับความถี่ต่างๆ ในการทดลอง - เขียนรายงานการทดลอง (เขียนโจทย์ แนวทางการทําโจทย์ ผังวงจรโดยรวมซึ่งใช้โปรแกรม Eagle ในการวาด และโค้ด Arduino Sketch พร้อมคําอธิบายโค้ด รูปตัวอย่างที่ได้จาการวัดสัญญาณ และภาพถ่ายการต่อทดลองวงจรจริง) จัดทําเป็นไฟล์.PDF ขนาด A4 ส่งในระบบ
e-Learning ของภาควิชา
code ที่ใช้ในการทำการทดลอง
const int fc_gen = 3; // define port from Function Generator
const int ledPin = 5; // define port for led
int fc_gen_state = 0;
void setup() {
//define pin mode for each pin
pinMode(fc_gen, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
fc_gen_state = digitalRead(fc_gen); //check state from function generator
if(fc_gen_state == HIGH)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
}
ผลการทดลอง

No comments:
Post a Comment