ใบงานการทดลองที่ 4 การใช้งานอาร์ดุยโนเพ่ือควบคุมเซเวนเซกเมนต์ด้วยวิธกี ารสแกนวัตถุประสงคเ์ ชิงพฤตกิ รรมเพ่อื ใหน้ ักศกึ ษาสามารถ 1. เขียนโปรแกรมควบคุมเอาต์พุตครั้งละ 8 บิตโดยใช้ฟังก์ช่นั ไดอ้ ย่างถกู ต้อง 2. ควบคุมเซเวนเซกเมนต์ 1 หลัก และ 2 หลักโดยใชว้ ธิ ีการสแกนได้อย่างถกู ต้อง 3. เขยี นโปรแกรมนบั เลข 1 หลักและ 2 หลักโดยใชว้ ธิ กี ารสแกนไดอ้ ยา่ งถกู ต้องอปุ กรณป์ ระกอบการทดลอง 1 เครอ่ื ง 1 บอรด์ 1. คอมพิวเตอรท์ ่ีมชี อ่ งเสียบ USB 1 บอร์ด 2. บอรด์ Arduino Mega 2560 18 เสน้ 3. บอร์ด One the all 4. สายเชือ่ มตอ่ลงชือ่ ผู้ทดลอง 1.____________________________________ 2. ____________________________________ทฤษฎีทเ่ี กยี่ วขอ้ ง แบบคอมมอนแคโทด (Common Cathode) เป็นการรวมขาแคโทดของทั้ง 8 ส่วนเข้าด้วยกันเป็นจุดเดยี ว สว่ นขาแอโนดของแตล่ ะสว่ นแยกกนั เพอ่ื รอรับสญั ญาณจากสว่ นควบคมุ แสดงดงั รูปใบงานที่ 4-1รูปใบงานที่ 4-1 วงจรภายในเซเวนเซกเมนตแ์ บบคอมมอนแคโทด หนังสอื ชุดฝกึ ด้านดจิ ิทลั 85
จากรูปใบงานท่ี 4-1 การทาให้เซเวนเซกเมนต์แบบคอมมอนแคโทดแสดงผลตามท่ีต้องการทาได้โดยต่อไฟฟ้ากระแสตรงขั้วลบหรือลอจิก “0” เข้าท่ีขาคอมมอน และต่อไฟฟ้าข้ัวบวก หรือลอจิก “1” เข้าที่ขาตา่ งๆ เพื่อให้บริเวณนนั้ แสดงผล แบบคอมมอนแอโนด (Common Anode) เป็นการรวมขาแอโนดของทั้ง 8 ส่วนเข้าด้วยกันเป็นจุดเดยี ว ส่วนขาแคโทดของแต่ละสว่ นแยกกนั เพอ่ื รอรบั สัญญาณจากส่วนควบคมุ แสดงดงั ภาพท่ี 6-4 รปู ใบงานท่ี 4-2 วงจรภายในเซเวนเซกเมนต์แบบคอมมอนแอโนด ในทางกลับกันถ้าเซเวนเซกเมนต์เป็นแบบคอมมอนแอโนด การป้อนลอจิกจะเป็นทางตรงกันข้ามกบั แบบคอมมอนแคโทด กล่าวคือ ตอ้ งปอ้ นลอจกิ “0” ใหก้ บั เซกเมนตท์ ตี่ ้องการตดิ สว่างการใช้งานเซเวนเซกเมนต์1. แบบควบคุมโดยตรง (ไม่ผา่ น IC ถอดรหัส) เป็นการต่อสายสัญญาณเซกเมนต์แต่ละส่วนของเซเวนเซกเมนต์ทุกตัวขนานกัน ส่วนสายสัญญาณคอมมอนใช้เป็นตัวเลือกการติดสว่างของเซเวนเซกเมนต์ตัวใดตัวหน่ึง เมื่อเลือกให้ตัวเลขติดสว่างในเซเวนเซกเมนต์ทีละตัวสลับกัน และวนรอบทาซ้าอย่างรวดเร็วตลอดเวลา จะทาให้ผู้ใช้เห็นเป็นตัวเลขหลายตัวติดพรอ้ มกัน ตวั อยา่ งวงจรสแกนเซเวนเซกเมนต์ แสดงดงั ภาพท่ี 4-3 รูปใบงานที่ 4-3 วงจรสแกนเซเวนเซกเมนต์ 4 หลัก86 หนงั สอื ชดุ ฝึกดา้ นดจิ ทิ ัล
2. ควบคมุ โดยใช้ IC ถอดรหสั ไอซีถอดรหัส เป็นไอซีขนาด 16 ขา ใช้สาหรับถอดรหัสเลขฐาน 2 แบบ BCD เป็นสัญญาณลอจิกดิจิทัลสาหรับการแสดงผลเซเวนเซกเมนต์ มีหลากหลายเบอร์ข้ึนอยู่กับการใช้งาน ทั้งที่เป็นคอมมอนแคโทดหรือแอโนด ตัวอย่างเช่น ไอซีเบอร์ HEF4511B BCD to 7-segment latch/decoder/driver เป็นไอซี 4อินพุตถอดรหัสเป็น 7 เอาต์พุต สาหรับเซเวนเซกเมนต์แบบคอมมอนแคโทด มีวงจรค้างสภาวะ (Latch) และวงจรขับ (Driver) ภายใน ดงั น้ันการแสดงผลของเซเวนเซกเมนต์จะคงตดิ สว่างค้างจนกว่าจะมกี ารสั่งให้เปลี่ยนค่า โดยลักษณะตาแหน่งขาของเบอร์ HEF4511B แสดงดังภาพที่ 6-8 และหน้าท่ีของแต่ละขาแสดงได้ดงั ตารางใบงานที่ 4-1 รปู ใบงานที่ 4-4 ขาสัญญาณของไอซี HEF4511Bตารางใบงานที่ 4-1 ชอ่ื หมายเลข และหนา้ ท่แี ต่ละขาของไอซี HEF4511Bสญั ลักษณ์ หมายเลขขา คาอธิบาย̅L̅̅T̅ 3 lamp test input (active LOW)̅B̅̅L̅ 4 ripple blanking input (active LOW)LE 5 latch enable input (active HIGH)D0 – D3 7,1,2,6 address (data) input VSS 8 ground supply voltageQa – Qg 13,12,11,10,9,15,14 segment outputVDD 16 supply voltage จากตารางข้างต้นการแสดงผลของเซเวนเซกเมนต์ขึ้นอยู่กับสัญญาณอินพุต เช่น สัญญาณอินพุตD3 – D0 เป็น 0110 มีค่าเท่ากับ 6 ฐานสิบ สัญญาณเอาต์พุตถูกถอดรหัสที่ขา Qa-Qg เป็น 0011111และเมื่อสายสัญญาณ LE เป็นลอจิก 1 ทาให้เซเวนเซกเมนต์แสดงเป็นตัวเลข 6 ค้างสภาวะจนกว่า LEจะเปลี่ยนเป็น 1 อกี ครงั้ หนงั สอื ชดุ ฝกึ ดา้ นดิจิทลั 87
ขน้ั ตอนการทดลองการทดลองย่อยที่ 1 การควบคุมเอาต์พตุ ครงั้ ละ 8 บิตดว้ ยฟังกช์ นั่ โดยปกตทิ ั่วไปนั้นการควบคมุ เอาต์พุตจากบอร์ดอาร์ดุยโน จะต้องสงั่ งานโดยการควบคุมผา่ นทางคาส่ังdigitalWrite (ระบุขา, ระบุสถานะ); แต่การควบคุมดังกล่าวน้ัน สามารถควบคุมได้คร้ังละ 1 ขาหรือ 1 บิตเทา่ นนั้ และการทจี่ ะควบคุมเอาตพ์ ุตขนาด 1 บิตจานวน 8 ขานัน้ จะต้องใช้คาส่ังถงึ 8 คาส่ังเลยทเี ดียว จงึ ต้องมีการประยุกตใ์ ช้ฟังกช์ ั่นเพอ่ื ลดปรมิ าณคาส่งั ซึง่ ทาตามการทดลองดังนี้1.1 เชือ่ มตอ่ ขาเข้ากับส่วนตา่ งๆ ดังตารางใบงานที่ 4-2 และรูปใบงานที่ 4-5 ดงั นี้ตารางใบงานท่ี 4-2 การเชื่อมต่อในการทดลองย่อยที่ 1บอร์ด Mega2560 One the all Board บอรด์ Mega2560 One the all Board D1 LED1 D14 SW1 D2 LED2 D15 SW2 D3 LED3 D16 SW3 D4 LED4 D17 SW4 D5 LED5 D18 SW5 D6 LED6 D19 SW6 D7 LED7 D20 SW7 D8 LED8 D21 SW8 Vin 9V GND GND รปู ใบงานที่ 4-5 การเช่ือมต่อเพ่ือทดลองการส่ังงานแบบ 8 บิต88 หนังสอื ชดุ ฝกึ ดา้ นดิจทิ ลั
1.2 เขยี นโปรแกรมการทดลองที่ 4-1 แลว้ ทดสอบการทางานโปรแกรมการทดลองที่ 4-11 int SW1 = 14;2 int SW2 = 15;3 int SW3 = 16;4 int SW4 = 17;5 int SW5 = 18;6 int SW6 = 19;7 int SW7 = 20;8 int SW8 = 21;910 int A = 1;11 int B = 2;12 int C = 3;13 int D = 4;14 int E = 5;15 int F = 6;16 int G = 7;17 int DP = 8;1819 void digitalWrite_8bit(int digit){20 digitalWrite(A, (digit & 0x01)); // set Bit 021 digitalWrite(B, (digit & 0x02)); // set Bit 122 digitalWrite(C, (digit & 0x04)); // set Bit 223 digitalWrite(D, (digit & 0x08)); // set Bit 324 digitalWrite(E, (digit & 0x10)); // set Bit 425 digitalWrite(F, (digit & 0x20)); // set Bit 526 digitalWrite(G, (digit & 0x40)); // set Bit 627 digitalWrite(DP, (digit & 0x80)); // set Bit 728 }2930 void setup (){3132 pinMode(A,OUTPUT);33 pinMode(B,OUTPUT);34 pinMode(C,OUTPUT);35 pinMode(D,OUTPUT);36 pinMode(E,OUTPUT);37 pinMode(F,OUTPUT);38 pinMode(G,OUTPUT);39 pinMode(DP,OUTPUT);4041 pinMode(SW1,INPUT);42 pinMode(SW2,INPUT); pinMode(SW3,INPUT); หนังสอื ชุดฝกึ ด้านดิจิทลั 89 pinMode(SW4,INPUT); pinMode(SW5,INPUT); pinMode(SW6,INPUT); pinMode(SW7,INPUT); pinMode(SW8,INPUT);}
โปรแกรมการทดลองที่ 4-1 (ต่อ) 43 pinMode(SW3,INPUT); 44 pinMode(SW4,INPUT); 45 pinMode(SW5,INPUT); 46 pinMode(SW6,INPUT); 47 pinMode(SW7,INPUT); 48 pinMode(SW8,INPUT); 49 50 } 51 52 void loop(){ 53 if (digitalRead(SW1) == 0) 54 digitalWrite_8bit(0xFE); else 55 if (digitalRead(SW2) == 0) 56 digitalWrite_8bit(0xFD); else 57 if (digitalRead(SW3) == 0) 58 digitalWrite_8bit(0xFB); else 59 if (digitalRead(SW4) == 0) 60 digitalWrite_8bit(0xF7); else 61 if (digitalRead(SW5) == 0) 62 digitalWrite_8bit(0xEF); else 63 if (digitalRead(SW6) == 0) 64 digitalWrite_8bit(0xDF); else 65 if (digitalRead(SW7) == 0) 66 digitalWrite_8bit(0xBF); else 67 if (digitalRead(SW8) == 0) 68 digitalWrite_8bit(0x7F); else 69 digitalWrite_8bit(0xFF); 70 } 71 721.3 คอมไพล์โปรแกรม และอัพโหลดโปรแกรมเพ่ือทดสอบการทางาน โดยทดสอบการกดปุ่มตั้งแต่ SW1 ถึงSW 8 แลว้ บันทึกผลการทางาน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………90 หนังสือชดุ ฝึกด้านดจิ ทิ ัล
1.4 จากโปรแกรมข้างต้น จงเขียนโปรแกรมไฟว่ิงครั้งละ 1 ดวงจาก LED1 ไป LED 8 โดยวนรอบแบบไม่รจู้ บบนั ทึกโปรแกรมท่ีใชเ้ ขียน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………….………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………….…………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………..……………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………………………….………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………..…………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………….…………….………………………………………………………………………………………………………………………….……………………………… หนังสือชุดฝกึ ดา้ นดจิ ทิ ัล 91
การทดลองย่อยที่ 2 การควบคมุ เซเวนเซกเมนตจ์ านวน 1 หลัก และ 2 หลกั บนบอร์ดทดลอง One the all นั้น ได้มีการจัดวงจรเซเวนเซกเมนต์ไว้เรียบร้อยแล้ว โดยแบ่งเป็น2 ส่วน คอื สว่ นท่ี 1 เป็นส่วนท่ีต่ออยู่กับไอซีถอดรหัส เบอร์ HEF4511B และสว่ นท่ี 2 เปน็ สว่ นท่ีไม่ได้ต่ออยู่กับไอซีถอดรหัส ดังรูปใบงานที่ 4-6 โดยในการทดลองย่อยน้ี จะเป็นการทดสอบการส่ังงานเพ่ือควบคุมเซเวนเซกเมนต์ แบบไม่ใชไ้ อซีถอดรหัส รูปใบงานที่ 4-6 ภาพลักษณะของโมดลู เซเวนเซกเมนต์บนบอรด์ One the allลักษณะการเชื่อมตอ่ รูปใบงานท่ี 4-7 Schematic การเชือ่ มต่อของเซเวนเซกเมนตบ์ นบอร์ด One the all จากรูปใบงานท่ี 4-7 เปน็ การเชื่อมต่อของเซเวนเซกเมนต์เข้ากับวงจรตวั ต้านทาน และทรานซิสเตอร์ เพื่อใช้ควบคุมการทางานในแต่ละเซกเมนต์ โดยจากวงจรจะเห็นได้ว่าเซเวนเซกเมนต์บนบอร์ดนั้นเป็นแบบ คอมมอนแคโทด ดังน้ัน จะทางานโดยเม่ือป้อนสถานะ “1” ไปที่ขาใดเซกเมนต์ใดๆ (เช่น Segment A, B, C) และจ่ายสถานะ “1” ไปท่ีตาแหน่งใด (Digit) ก็จะทาให้ตาแหน่งน้ันสว่างขึ้น แสดงวิธีการใช้งาน ดังตารางใบงานที่ 4-392 หนงั สือชดุ ฝึกดา้ นดิจิทัล
ตารางใบงานท่ี 4-3 แสดงการไบอัสทข่ี า Segment เพื่อแสดงเปน็ เลข 0-9 InputG F Binary B A Hexadecimal Number EDC0111111 3Fh 00000110 06h 11011011 5Bh 21001111 4Fh 31100110 66h 41101101 6Dh 51111101 7Dh 60000111 07h 71111111 7Fh 81101111 6Fh 9ขน้ั ตอนการทดลอง2.1 เช่อื มต่ออาร์ดุยโนเข้ากบั โมดูลเซเวนเซกเมนตใ์ นสว่ นท่ี 2 ดงั น้ีแสดงได้ ดงั รูปใบงานที่ 4-8ตารางใบงานท่ี 4-4 การเชอ่ื มต่อในการทดลองย่อยที่ 1บอรด์ Mega2560 7-Segment Module บอรด์ Mega2560 Switch Module D1 Segment A D14 SW1 D2 Segment B D15 SW2 D3 Segment C D16 SW3 D4 Segment D D17 SW4 D5 Segment E D18 SW5 D6 Segment F D19 SW6 D7 Segment G D20 SW7 D8 Segment DP D21 SW8 D9 SC1 Vin 9V D10 SC2 GND GND หนังสือชดุ ฝกึ ดา้ นดิจทิ ลั 93
รปู ใบงานที่ 4-8 การเช่ือมต่อเพ่อื การทดลองย่อยท่ี 4-22.2 เขยี นโปรแกรมเพ่อื ทดสอบการทางานดังน้ีโปรแกรมการทดลองท่ี 4-2 1 int SW1 = 14; 2 int SW2 = 15; 3 int SW3 = 16; 4 int SW4 = 17; 5 int SW5 = 18; 6 int SW6 = 19; 7 int SW7 = 20; 8 int SW8 = 21; 9 10 int A = 1; 11 int B = 2; 12 int C = 3; 13 int D = 4; 14 int E = 5; 15 int F = 6; 16 int G = 7; 17 int DP = 8; 18 int SC1 = 9; 19 int SC2 = 10;94 หนังสอื ชุดฝึกด้านดจิ ิทลั
โปรแกรมการทดลองท่ี 4-2 (ต่อ) 20 void digitalWrite_8bit(int digit){ 21 digitalWrite(A, (digit & 0x01)); // set Bit 0 22 digitalWrite(B, (digit & 0x02)); // set Bit 1 23 digitalWrite(C, (digit & 0x04)); // set Bit 2 24 digitalWrite(D, (digit & 0x08)); // set Bit 3 25 digitalWrite(E, (digit & 0x10)); // set Bit 4 26 digitalWrite(F, (digit & 0x20)); // set Bit 5 27 digitalWrite(G, (digit & 0x40)); // set Bit 6 28 digitalWrite(DP, (digit & 0x80)); // set Bit 7 29 } 30 31 void setup (){ 32 pinMode(A,OUTPUT); 33 pinMode(B,OUTPUT); 34 pinMode(C,OUTPUT); 35 pinMode(D,OUTPUT); 36 pinMode(E,OUTPUT); 37 pinMode(F,OUTPUT); 38 pinMode(G,OUTPUT); 39 pinMode(DP,OUTPUT); 40 pinMode(SC1,OUTPUT); 41 pinMode(SC2,OUTPUT); 42 43 pinMode(SW1,INPUT); 44 pinMode(SW2,INPUT); 45 pinMode(SW3,INPUT); 46 pinMode(SW4,INPUT); 47 pinMode(SW5,INPUT); 48 pinMode(SW6,INPUT); 49 pinMode(SW7,INPUT); 50 pinMode(SW8,INPUT); 51 } 52 53 void loop(){ 54 digitalWrite(SC1,LOW); // off digit 1 55 digitalWrite(SC2,HIGH); // on digit 2 56 57 if (digitalRead(SW1) == 0) 58 digitalWrite_8bit(0x06); else 59 if (digitalRead(SW2) == 0) 60 digitalWrite_8bit(0x5B); else 61 if (digitalRead(SW3) == 0) 62 digitalWrite_8bit(0x4F); else 63 if (digitalRead(SW4) == 0) 64 digitalWrite_8bit(0x66); else 65 if (digitalRead(SW5) == 0) 66 digitalWrite_8bit(0x6D); else หนังสือชดุ ฝกึ ด้านดจิ ิทลั 95
โปรแกรมการทดลองท่ี 4-2 (ต่อ) 67 if (digitalRead(SW6) == 0) 68 digitalWrite_8bit(0x7D); else 69 if (digitalRead(SW7) == 0) 70 digitalWrite_8bit(0x07); else 71 if (digitalRead(SW8) == 0) 72 digitalWrite_8bit(0x7F); else 73 digitalWrite_8bit(0x3F); // show 0 74 } 752.3 คอมไพล์โปรแกรม และอัพโหลดโปรแกรมเพื่อทดสอบการทางาน โดยทดสอบการกดปุ่ม SW 1 ถึง SW8แลว้ บนั ทกึ ผลการทางาน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………..……………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….2.4 ทดลองเปล่ียนโปรแกรมในบรรทัดท่ี 54 และ 55 โดยกาหนดให้ // off digit 1 แกไ้ ขจากเดิม // on digit 2 54 digitalWrite(SC1,LOW); // on digit 1 55 digitalWrite(SC2,HIGH); // off digit 2 เป็น 54 digitalWrite(SC1,HIGH); 55 digitalWrite(SC2,LOW);2.5 อพั โหลดโปรแกรม แล้วทดสอบโปรแกรมวา่ มกี ารทางานทเ่ี ปล่ยี นไปอยา่ งไร……..………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….……..………………………………………………………………………………………………………………………………………………….96 หนงั สอื ชดุ ฝกึ ด้านดจิ ิทลั
2.6 จงสรปุ วา่ ปจั จัยใดบา้ งในการสง่ั งานท่มี ผี ลต่อการแสดงผลของเซเวนเซกเมนต์……..………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….……..………………………………………………………………………………………………………………………………………………….2.7 แก้ไขโปรแกรมเพือ่ ให้เซเวนเซกเมนต์แสดงผลไดจ้ านวนทง้ั 2 หลัก โดยในหลักสิบ จะกาหนดให้แสดงเป็นเลข 1 และในหลักหนว่ ยจะใหแ้ สดงเป็นเลข 2 โดยแก้ไขโปรแกรมในฟงั กช์ ัน่ loop ดงั นี้โปรแกรมการทดลองที่ 4-2 (แกไ้ ข)53 void loop (){ // on digit 154 digitalWrite(SC1,HIGH); // off digit 255 digitalWrite(SC2,LOW); // display number 1565 digitalWrite_8bit(0x06); // delay 10 ms758 delay(10); // off digit 159 digitalWrite(SC1,LOW); // on digit 260 digitalWrite(SC2,HIGH); // display number 261 digitalWrite_8bit(0x5B); // delay 10 ms62 delay(10);63 }2.8 ตวั เลขทีแ่ สดงผลทง้ั สองหลักคอื เลขใด……..………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………..……………………2.9 จงทดลองเพิ่มค่า delay ในบรรทัดท่ี 57 และ 61 จาก 10ms เป็น 1000ms แล้วบันทึกผลการทางานท่ีเปล่ยี นแปลงไป……..………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………………………..……………………2.10 จากการเพิ่มช่วงเวลา delay จงสรุปหลกั ในการทางานเพอื่ แสดงผลสองตาแหน่ง…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….……..…………………………………………………………………………………………………………………………………………………. หนังสอื ชุดฝึกดา้ นดิจิทัล 97
การทดลองย่อยที่ 3 การเขยี นโปรแกรมเพอ่ื แสดงผลการนบั เลขแบบ 1 หลัก จากการทดลองย่อยที่ 1 และ 2 จะพบว่าเซเวนเซกเมนต์นั้น สามารถควบคุมได้โดยการส่ังงานออกทางฟังก์ช่ัน digitalWrite ซ่ึงเพื่อให้เกิดความสะดวกในการสั่งงาน จงึ ได้มีการสร้างฟังก์ชนั่ digitalWrite_8bitข้ึนมา เพื่อใช้ควบคุมเอาต์พุตที่มีขนาด 8 บิต เช่น เซเวนเซกเมนต์ รวมถึงได้เรียนรู้การแสดงผลแบบสองหลักมาแลว้ ซง่ึ ในการทดลองนีจ้ ะเป็นการเรยี นรู้การเขียนโปรแกรมเพือ่ แสดงผลการนับเลขนัน่ เอง3.1 เชอ่ื มต่ออุปกรณ์เข้ากับบอร์ดอารด์ ุยโน่โดยเช่ือมตอ่ เชน่ เดียวกบั รปู ใบงานที่ 4-83.2 เขยี นโปรแกรมที่ 4-3 ดังนี้โปรแกรมการทดลองที่ 4-3 1 int A = 1; 2 int B = 2; 3 int C = 3; 4 int D = 4; 5 int E = 5; 6 int F = 6; 7 int G = 7; 8 int DP = 8; 9 int SC1 = 9; 10 int SC2 = 10; 11 12 int num[10] = 13 {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 14 15 void digitalWrite_8bit(int digit){ 16 digitalWrite(A, (digit & 0x01)); // set Bit 0 17 digitalWrite(B, (digit & 0x02)); // set Bit 1 18 digitalWrite(C, (digit & 0x04)); // set Bit 2 192 digitalWrite(D, (digit & 0x08)); // set Bit 3 0 digitalWrite(E, (digit & 0x10)); // set Bit 4 212 digitalWrite(F, (digit & 0x20)); // set Bit 5 2 digitalWrite(G, (digit & 0x40)); // set Bit 6 23 digitalWrite(DP, (digit & 0x80)); // set Bit 7 24 } 25 26 void setup (){ 27 pinMode(A,OUTPUT); 28 pinMode(B,OUTPUT); 29 pinMode(C,OUTPUT); 30 pinMode(D,OUTPUT); 31 pinMode(E,OUTPUT); 32 pinMode(F,OUTPUT); 33 pinMode(G,OUTPUT); 34 pinMode(DP,OUTPUT); 35 pinMode(SC1,OUTPUT); 36 pinMode(SC2,OUTPUT); 37 }98 หนงั สอื ชดุ ฝกึ ด้านดจิ ทิ ลั
โปรแกรมการทดลองท่ี 4-3 (ต่อ) 38 void loop (){ 39 int i; 40 digitalWrite(SC1,LOW); 41 digitalWrite(SC2,HIGH); 42 43 digitalWrite_8bit(num[0]); 44 delay(1000); 45 digitalWrite_8bit(num[1]); 46 delay(1000); 47 digitalWrite_8bit(num[2]); 48 delay(1000); 49 digitalWrite_8bit(num[3]); 50 delay(1000); 51 digitalWrite_8bit(num[4]); 52 delay(1000); 53 digitalWrite_8bit(num[5]); 54 delay(1000); 55 digitalWrite_8bit(num[6]); 56 delay(1000); 57 digitalWrite_8bit(num[7]); 58 delay(1000); 59 digitalWrite_8bit(num[8]); 60 delay(1000); 61 digitalWrite_8bit(num[9]); 62 delay(1000); 63 }3.3 คอมไพล์โปรแกรม และอัพโหลดโปรแกรมเพ่ือทดสอบการทางาน และบนั ทึกผลการทางาน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….3.4 ทดลองใชฟ้ งั กช์ นั่ for เพื่อลดขนาดการเขียนโปรแกรม โดยแกไ้ ขโปรแกรมในฟงั ก์ชั่น loop ดงั นี้โปรแกรมการทดลองที่ 4-3 (แกไ้ ข) 38 void loop (){ 39 int i; 40 digitalWrite(SC1,LOW); 41 digitalWrite(SC2,HIGH); 42 43 for (i=0;i<10;i++){ 44 digitalWrite_8bit(num[i]); 45 delay(1000); 46 } 47 } หนงั สอื ชุดฝกึ ด้านดิจิทลั 99
3.5 คอมไพล์โปรแกรม และอัพโหลดโปรแกรมเพื่อทดสอบการทางาน และบันทึกผลการทางานว่ามีความแตกต่างจากเดิมหรือไม่……………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………3.6 จากการใชโ้ ปรแกรมท่ปี ระกอบดว้ ยฟงั ก์ชน่ั for จะเห็นได้ว่าสามารถลดจานวนคาสั่งลงไปได้มาก จงบอกหลกั การทางานของคาสัง่ เงอื่ นไขการใช้ for มาพอเขา้ ใจ…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………….……..………………………………………………………………………………………………………………………………………………….…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………การทดลองย่อยท่ี 4 การเขียนโปรแกรมเพื่อแสดงผลการนับเลขแบบ 2 หลกั จากการทดลองที่ผ่านมา จะเป็นการควบคุมการแสดงผลโดยใช้การสแกนแบบ 1 หลัก ซ่ึงจะเห็นได้ว่าสามารถใช้งานได้ไม่ยุ่งยาก โดยในการทดลองนี้จะเป็นการใช้งานเซเวนเซกเมนต์แบบ 2 หลัก และใช้หลักการทางานแบบสแกน ซึ่งจะไดเ้ รียนรู้ในการทดลองน้ี4.1 เชือ่ มตอ่ อปุ กรณ์เขา้ กับบอร์ดอารด์ ุยโนโดยเชอ่ื มต่อเชน่ เดียวกับรูปใบงานท่ี 4-84.2 เขียนโปรแกรมที่ 4-4 ดงั น้ีโปรแกรมการทดลองที่ 4-4 1 int A = 1; 2 int B = 2; 3 int C = 3; 4 int D = 4; 5 int E = 5; 6 int F = 6; 7 int G = 7; 8 int DP = 8; 9 int SC1 = 9; 10 int SC2 = 10; 11 12 int num[10] = 13 {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 14 15 16100 หนังสอื ชดุ ฝึกด้านดิจทิ ัล
โปรแกรมการทดลองที่ 4-4 (ต่อ) 17 void digitalWrite_8bit(int digit){ 18 digitalWrite(A, (digit & 0x01)); // set Bit 0 19 digitalWrite(B, (digit & 0x02)); // set Bit 1 20 digitalWrite(C, (digit & 0x04)); // set Bit 2 21 digitalWrite(D, (digit & 0x08)); // set Bit 3 22 digitalWrite(E, (digit & 0x10)); // set Bit 4 23 digitalWrite(F, (digit & 0x20)); // set Bit 5 24 digitalWrite(G, (digit & 0x40)); // set Bit 6 25 digitalWrite(DP, (digit & 0x80)); // set Bit 7 26 } 27 28 void write_segment(int data){ 29 int num_a,num_b; 30 num_a = data%10; 31 num_b = data/10; 32 digitalWrite(SC1,LOW); 33 digitalWrite(SC2,HIGH); 34 digitalWrite_8bit(num[num_a]); 35 delay(10); 36 37 digitalWrite(SC1,HIGH); 38 digitalWrite(SC2,LOW); 39 digitalWrite_8bit(num[num_b]); 40 delay(10); 41 } 42 43 void setup (){ 44 pinMode(A,OUTPUT); 45 pinMode(B,OUTPUT); 46 pinMode(C,OUTPUT); 47 pinMode(D,OUTPUT); 48 pinMode(E,OUTPUT); 49 pinMode(F,OUTPUT); 50 pinMode(G,OUTPUT); 51 pinMode(DP,OUTPUT); 52 pinMode(SC1,OUTPUT); 53 pinMode(SC2,OUTPUT); 54 } 55 56 void loop (){ 57 for (int i=0;i<100;i++){ 58 for (int b = 0 ; b<20 ; b++) 59 write_segment(i); 60 } 61 } หนงั สือชุดฝกึ ดา้ นดิจิทัล 101
4.3 คอมไพลโ์ ปรแกรม และอพั โหลดโปรแกรมเพ่ือทดสอบการทางาน และบันทกึ ผลการทางาน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………4.4 จงบอกความสาคัญของการใช้คาสัง่ for ในบรรทัดท่ี 57 และบรรทดั ที่ 58 ว่ามคี วามแตกต่างกนั อย่างไร…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………4.5 จากโปรแกรมทดลองท่ี 4.4 ทดสอบเพ่ิมค่า delay ในบรรทัดท่ี 35 และ 40 โดยแก้ไขจาก 10mS เป็น500mS แล้วบอกผลการทางาน…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………4.6 จากโปรแกรมทดลองท่ี 4.4 ทดสอบเพ่ิมค่า delay ในบรรทัดท่ี 35 และ 40 โดยแก้ไขจาก 500mS เป็น1000mS แล้วบอกผลการทางาน โดยเม่ือทดสอบเสร็จแลว้ ใหแ้ ก้ไขโปรแกรมใหเ้ ปน็ 10mS เชน่ เดิม…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………4.7 จงแก้ไขโปรแกรม ให้นับเลข โดยตั้งท่ี 01 แล้วนับถึง 99 และให้กลับไปเริ่มที่ 01 ใหม่อีกคร้ัง และบอกวธิ ีแก้ไขมาด้วย…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………102 หนังสอื ชดุ ฝึกดา้ นดจิ ิทัล
สรุปผลการทดลอง…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………คาถามทา้ ยการทดลอง1. จงบอกประโยชนข์ องเซเวนเซกเมนตม์ าพอเข้าใจ…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………..…………………………2. จากการทดลอง จงอธิบายวิธีการใชง้ านเซเวนเซกเมนตแ์ บบไมผ่ า่ นไอซีถอดรหสั…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..………………………… หนงั สอื ชุดฝึกดา้ นดิจิทัล 103
Note………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………104 หนงั สือชุดฝึกด้านดิจทิ ลั
Search
Read the Text Version
- 1 - 20
Pages: