วัตถุประสงค์
1. ฝึกต่อวงจรปุ่มกดและไดโอดเปล่งแสง (LED) และเชื่อมต่อกับขาอินพุต/เอาต์พุต-ดิจิทัลของ
บอร์ด Arduino
2. ฝึกเขียนโปรแกรมภาษา C/C++ เพื่อกําหนดพฤติกรรมการทํางานของบอร์ด Arduino
ตามโจทย์ที่กำหนดให้
รายการอุปกรณ์
1.แผงต่อวงจร (เบรดบอร์ด) 1 อัน
2. บอร์ด Arduino (ใช้แรงดันลอจิก +5V) 1 บอร์ด
3. ปุ่มกดแบบสี่ขา 2 ตัว
4. ไดโอดเปล่งแสงขนาด 5 มม. 4 ตัว
5. ตัวต้านทาน 10kΩ 2 ตัว
6. ตัวต้านทาน 330Ω หรือ 470Ω 4 ตัว
7. สายไฟสําหรับต่อวงจร 1 ชุด
7. แก้ไขโค้ดใหแ้สดงพฤติกรรมการทํางานตามข้อกําหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องใน
การทํางาน
บอร์ด Arduino
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
VCC และ GND
2. ต่อวงจรปุ่มกดพร้อมตัวต้านทานแบบ Pull-up 10kΩ จํานวนสองชุด (PB1 และ PB2) บนเบรดบอร์ด
แล้วนําไปต่อกับขา D2 และ D3 ของบอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร
(ดูตามผังวงจรในรูปที่ 3.1.1)
แล้วนําไปต่อกับขา D2 และ D3 ของบอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร
(ดูตามผังวงจรในรูปที่ 3.1.1)
3. ต่อวงจรโดยใช้ไดโอดเปล่งแสง (LED) พร้อมตัวต้านทานแบบอนุกรม 330Ω หรือ 470Ω จํานวน4ชุด
(LED1, LED2, LED3, LED4) บนเบรดบอร์ด แล้วนําไปต่อกับขา D4, D5, D6, D7, D8 ของ
บอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร (ดูตามผังวงจรในรูปที่ 3.1.1)
(LED1, LED2, LED3, LED4) บนเบรดบอร์ด แล้วนําไปต่อกับขา D4, D5, D6, D7, D8 ของ
บอร์ด Arduino ตามลําดับ โดยใช้ลวดสายไฟสําหรับต่อวงจร (ดูตามผังวงจรในรูปที่ 3.1.1)
4. เขียนโค้ดตามตัวอย่างโดยใช้ Arduino IDE แล้วทําขั้นตอนคอมไพล์และอัพโหลดโปรแกรมไปยัง
บอร์ด Arduino
บอร์ด Arduino
5. ตรวจสอบความถูกต้องของวงจรบนเบรดบอร์ดอีกครั้ง จากนั้นจึงเชื่อมต่อ +5V และ Gnd จาก
บอร์ด Arduino ไปยังเบรดบอร์ดเพื่อใช้เป็นแรงดันไฟเลี้ยง (VCC และ GND) ให้ระวังการต่อสลับ
ขั้วสายไฟและ ระวังการต่อถึงกันทางไฟฟ้าของสายไฟทั้งสองเส้น
บอร์ด Arduino ไปยังเบรดบอร์ดเพื่อใช้เป็นแรงดันไฟเลี้ยง (VCC และ GND) ให้ระวังการต่อสลับ
ขั้วสายไฟและ ระวังการต่อถึงกันทางไฟฟ้าของสายไฟทั้งสองเส้น
6. แก้ไขโค้ดใหแ้สดงพฤติกรรมการทํางานตามข้อกําหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องใน
การทํางาน โดยใช้ฮาร์ดแวรจ์ริง
การทํางาน โดยใช้ฮาร์ดแวรจ์ริง
- 6.1 เมื่อเริ่มต้นทํางาน จะมี LED เพียงตัวเดียวที่อยู่ในสถานะ “ติด” (LED1) และที่เหลืออีก 3 ตัว
- 6.2 ถ้ากดปุ่ม PB1 แล้วปล่อยในแต่ละครั้ง จะทําให้ตําแหน่งของ LED ที่ “ติดเลื่อนไปทาง
( LED1 -> LED2 -> LED3 -> LED4 -> … )
- 6.3 ถ้ากดปุ่ม PB2 แล้วปล่อยในแต่ละครั้ง จะทําให้ตําแหน่งของ LED ที่ “ติด” เลื่อนไป
( LED1 -> LED4 -> LED3 -> LED2 -> … )
โค้ด Arduino Sketch
const byte PB_1 = 2;
const byte PB_2 = 3;
const byte LEDS[4] = {4, 5, 6, 7};
byte n = 0;
void setup() {
// put your setup code here, to run once:
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 CheckButton(){
if( isButtonclicked( PB_1 ))
n=n+1;
if( isButtonclicked( PB_2 ))
n=n-1;
}
void displayLED(){
digitalWrite(LEDS[n+1], 1);
digitalWrite(LEDS[n-1], 1);
digitalWrite(LEDS[n], 1);
}
bool isButtonclicked( byte pinnumber ){
byte t=5;
while((digitalRead(pinnumber)==LOW)&& --t)
delay(1);
if(t==0){
while(digitalRead(pinnumber)==LOW);
return true;
}
return false;
}
void loop() {
// put your main code here, to run repeatedly:
CheckButton();
displayLED();
}
การทํางาน
- 7.1 ใช้ LED ทั้ง 4 ตัว แสดงเลขในฐานสอง จํานวน 4 หลัก (4-bit binary number) ซึ่งรับ
บิตที่มีค่า เป็น 1 หมายถึง LED “ติด”และเมื่อเริ่มต้นทํางาน ให้แสดงค่าเป็น 0
- 7.2 เมื่อกดปุ่ม PB1 แล้วปล่อยแต่ละครั้ง จะทําให้ค่าเพิ่มขึ้นทีละหนึ่ง จาก 0000, 0001,
- 7.3 แต่ถ้ากดปุ่ม PB2 จะทําให้ได้ค่าเป็น 0000 ทันที (หมายถงึ การรีเซตค่าเป็นศูนย์)
โค้ด Arduino Sketch
const byte PB_1 = 2;
const byte PB_2 = 3;
const byte LEDS[4] = {4, 5, 6, 7};
byte n = 0;
void setup() {
// put your setup code here, to run once:
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 CheckButton(){
if( isButtonclicked( PB_1 ))
n=n+1;
if( isButtonclicked( PB_2 ))
n=0;
}
void displayLED(){
byte t=n;
for(int i=0;i<4;i++){
digitalWrite(LEDS[i], t &1);
t >>= 1;
}
}
bool isButtonclicked( byte pinnumber ){
byte t=5;
while((digitalRead(pinnumber)==LOW)&& --t)
delay(1);
if(t==0){
while(digitalRead(pinnumber)==LOW);
return true;
}
return false;
}
void loop() {
// put your main code here, to run repeatedly:
CheckButton();
displayLED();
}

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