วัตถุประสงค์ของการทดลอง
1.ฝึกการต่อวงจรโดยใช้บอร์ด Arduino ต่ออินพุต์ เอาต์พุตกับ LED และ ปุ่มกด2.ฝึกเขียนโปรแกรม ภาษา C , C++ กำหนดการทำงานของ บอร์ด Arduino เพื่อให้ได้ ผลการทำงานตามโจทย์
อุปกรณ์ที่ใช้ในการทดลอง
1.แผงต่อวงจร (เบรดบอร์ด) 1 อัน2.บอร์ด Arduino (ใช้แรงดันลอจิก +5V) 1 บอร์ด
3.ปุ่มกดแบบสี่ขา 2 ตัว
4.ไดโอดเปล่งแสงขนาด 5 มม. 4 ตัว
5.ตัวต้านทาน 10kΩ 2 ตัว
6.ตัวต้านทาน 330Ω หรือ 470Ω 4 ตัว
7.สายไฟสําหรับต่อวงจร 1 ชุด
ขั้นตอนการทดลอง
1. ยังไม่ต้องเชื่อมต่อ +5V และ Gnd จากบอร์ด Arduino ไปยังเบรดบอร์ดเพื่อจ่ายเป็นแรงดันไฟเลี้ยงVCC และ GND
2. ต่อวงจรปุ่มกดพร้อมตัวต้านทานแบบ Pull-up 10kΩ จํานวนสองชุด (PB1 และ PB2) บนเบรดบอร์ด
แล้วนําไปต่อกับขา D2 และ D3 ของบอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร
(ดูตามผังวงจรในรูปที่ 3.1.1)
3. ต่อวงจรโดยใช้ไดโอดเปล่งแสง (LED) พร้อมตัวต้านทานแบบอนุกรม 330Ω หรือ 470Ω จํานวน 4 ชุด (LED1, LED2, LED3, LED4) บนเบรดบอร์ด แล้วนําไปต่อกับขา D4, D5, D6, D7, D8 ของบอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร (ดูตามผังวงจรในรูปที่ 3.1.1)
4. เขียนโค้ดตามตัวอย่างโดยใช้ Arduino IDE แล้วทําขั้นตอนคอมไพล์และอัพโหลดโปรแกรมไปยังบอร์ด Arduino
5. ตรวจสอบความถูกต้องของวงจรบนเบรดบอร์ดอีกครั้ง จากนั้นจึงเชื่อมต่อ +5V และ Gnd จากบอร์ด
Arduino ไปยังเบรดบอร์ดเพื่อใช้เป็นแรงดันไฟเลี้ยง (VCC และ GND) ให้ระวังการต่อสลับขั้วสายไฟ
และ ระวังการต่อถึงกันทางไฟฟ้าของสายไฟทั้งสองเส้น
6. แก้ไขโค้ดให้แสดงพฤติกรรมการทํางานตามข้อกําหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องใน
การทํางาน โดยใช้ฮาร์ดแวร์จริง
6.1 เมื่อเริ่มต้นทํางาน จะมี LED เพียงตัวเดียวที่อยู่ในสถานะ “ติด” (LED1) และที่เหลืออีก 3 ตัว
(LED2, LED3, LED4) อยู่ในสถานะ “ดับ”
6.2 ถ้ากดปุ่ม PB1 แล้วปล่อยในแต่ละครั้ง จะทําให้ตําแหน่งของ LED ที่ “ติด” เลื่อนไปทางขวาทีละ
หนึ่งตําแหน่ง หรือวนกลับมาเริ่มต้นใหม่ทางซ้ายสุด (LED1 -> LED2 -> LED3 -> LED4 -> …)
6.3 ถ้ากดปุ่ม PB2 แล้วปล่อยในแต่ละครั้ง จะทําให้ตําแหน่งของ LED ที่ “ติด” เลื่อนไปทางซ้ายทีละ
หนึ่งตําแหน่ง หรือวนกลับมาเริ่มต้นใหม่ทางขวาสุด (LED1 -> LED4 -> LED3 -> LED2 -> …)
7. แก้ไขโค้ดให้แสดงพฤติกรรมการทํางานตามข้อกําหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องใน
การทํางาน
7.1 ใช้ LED ทั้ง 4 ตัว แสดงเลขในฐานสอง จํานวน 4 หลัก (4-bit binary number) ซึ่งรับสัญญาณ
เอาต์พุตมาจากบอร์ด Arduino และกําหนดให้บิตที่มีค่า 0 หมายถึง LED “ดับ” และ บิตที่มีค่า
เป็น 1 หมายถึง LED “ติด”และเมื่อเริ่มต้นทํางาน ให้แสดงค่าเป็น 0
7.2 เมื่อกดปุ่ม PB1 แล้วปล่อยแต่ละครั้ง จะทําให้ค่าเพิ่มขึ้นทีละหนึ่ง จาก 0000, 0001, 0010, …, 1111 ตามลําดับ แล้ววนกลบไปเริ่มต้นที่ 0000 ใหม่ได ้
7.3 แต่ถ้ากดปุ่ม PB2 จะทําให้ได้ค่าเป็น 0000 ทันที(หมายถึง การรีเซตค่าเป็นศูนย์)
ผลการทดลอง
(ภาพผลที่ได้จาก ขั้นตอนการทดลอง ข้อที่ 4) จากโค้ดตัวอย่างcode การทดลองข้อที่ 4(code ตัวอย่าง )
const byte PB_1 =2;//ใช้ขาหมายเลข D2 เพื่อสร้างสัญญาณดิจิทัล
const byte PB_2 =3;//ใช้ขาหมายเลข D3 เพื่อสร้างสัญญาณดิจิทัล
const byte LEDS[4] = {4,5,6,7};
void setup()
{
pinMode(PB_1,INPUT);//กำหนดพฤติกรรมของ Digital pin ที่เราระบุ
pinMode(PB_2,INPUT);//กำหนดพฤติกรรมของ Digital pin ที่เราระบุ
for(int i=0;i<4;i++)
{
pinMode(LEDS[i],OUTPUT);///กำหนดพฤติกรรมของ Digital pin ที่เราระบุ
digitalWrite(LEDS[i],(i==0)? HIGH : LOW);//Write ค่า HIGH หรือ Low ไปยัง Digital pin ตามเงื่อนไข
}
}
void loop()
{
}
(ภาพผลที่ได้จาก ขั้นตอนการทดลอง ข้อที่ 6)
code การทดลองข้อที่ 6
const byte PB_1 =2;//ใช้ขาหมายเลข D2 เพื่อสร้างสัญญาณดิจิทัล const byte PB_2 =3;//ใช้ขาหมายเลข D3 เพื่อสร้างสัญญาณดิจิทัล const byte LEDS[4] = {4,5,6,7}; int count=0; void setup() { pinMode(PB_1,INPUT);//กำหนดพฤติกรรมของขาที่เราระบุ pinMode(PB_2,INPUT);//กำหนดพฤติกรรมของขาที่เราระบุ for(int i=0;i<4;i++) { pinMode(LEDS[i],OUTPUT); digitalWrite(LEDS[i], (i==0)? HIGH: LOW);// } } void loop() { //ปุ่มกดที่ 1 if(digitalRead(PB_1)==LOW){ while(digitalRead(PB_1)==LOW) { delay(10); } if(count ==4)count=0; for(int i=0;i<4;i++) { digitalWrite(LEDS [i], (i==count)? HIGH: LOW);//Write ค่า HIGH หรือ Low ไปยัง Digital pin ตามเงื่อนไข } count++; } //ปุ่มกดที่ 2 if(digitalRead(PB_2)==LOW){ while(digitalRead(PB_2)==LOW) { delay(10); } if(count <0)count=3; for(int i=0;i<4;i++) { digitalWrite(LEDS [i], (i==count)? HIGH: LOW); } count--; } } |
(ภาพผลที่ได้จาก ขั้นตอนการทดลอง ข้อที่ 7)
code การทดลองข้อที่ 7
const byte PB_1 =2;//ใช้ขาหมายเลข D2 เพื่อสร้างสัญญาณดิจิทัล const byte PB_2 =3;//ใช้ขาหมายเลข D3 เพื่อสร้างสัญญาณดิจิทัล const byte LED[4] = {4,5,6,7}; const byte L_Digit[] = { B0000,B1000,B0100,B1100, B0010,B1010,B0110,B1110, B0001,B1001,B0101,B1101, B0011,B1011,B0111,B1111}; byte count = 0; void setup() { pinMode(PB_1,INPUT);//กำหนดพฤติกรรมของ Digital pin ที่เราระบุ pinMode(PB_2,INPUT);//กำหนดพฤติกรรมของ Digital pin ที่เราระบุ for(int i=0;i<4;i++) { pinMode(LED[i],OUTPUT);//กำหนดพฤติกรรมของDigital pinที่เราระบุ } } void LED_Binary(byte count_i) { if ( count_i >=0&& count_i < 16 ) { byte b= L_Digit[count_i]; for(int i=0;i<4;i++) { digitalWrite(LED[i],(b&1)); b >>= 1; } } } void loop() { //กดปุ่มที่ 1 if(digitalRead(PB_1)==LOW) { LED_Binary(count); count=(count+1); if(count>16)count=0; delay(900); } //กดปุ่มที่ 2 if(digitalRead(PB_2)==LOW)//อ่านค่าจาก digital pin { count=0; for(int i=0;i<7;i++) { digitalWrite(LED[i],LOW);Write สถานะ Low ไปยัง digital pin } } } |
ผังการต่อวงจรโดยใช้โปรแกรม Fritzing
BreadBoard View |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น