การเรียนรู้ครั้งนี้ใช้เพื่อต่อยอดที่จะขับ LED ที่ต่อพอร์ตในการเรียนรู้ครั้งต่อ ๆ ไป จุดประสงค์หลักคือการเขียนโค้ดเพื่อให้ LED สามารถแสดงผลติด/ดับในแต่ละหลักได้โดยรับค่าจากข้อมูลที่เก็บอยู่ในตัวแปร เมื่อทำการเชื่อมต่อพอร์ต (ไม่ว่าจะเป็นขนานหรืออนุกรม) LED ที่อยู่กับฮาร์ดแวร์จะต้องมีสถานะเช่นเดียวกับ LED ที่อยู่บนหน้าต่างของโปรแกรม
เป้าหมายของการทำงานของโปรแกรมจะเป็นเช่นนี้
(http://www.praphas.com/PhotoForum/interface/HowTo11/12.png)
(http://www.praphas.com/PhotoForum/interface/HowTo11/run.gif)
ขั้นตอนการดำเนินการ
1. ค้นหารูปภาพที่ใช้แทนสวิตช์และ LED โดยให้มีทั้ง 2 สภาวะคือ ON/OFF หรือเข้าไปที่เวปไซต์
http://www.clker.com/clipart-6515.html (http://www.clker.com/clipart-6515.html)
เมื่อได้ภาพที่ต้องการแล้วให้คลิกขวาที่ภาพแล้วเลือก Save as บันทึกภาพเก็บลงเครื่อง
ตัวอย่างภาพที่ใช้งาน
(http://www.clker.com/cliparts/Y/u/h/d/l/1/led-off-th.png)(http://www.clker.com/cliparts/o/c/7/P/9/5/led-on-th.png)
(http://www.clker.com/cliparts/R/B/I/T/f/z/led-green-th.png)(http://www.clker.com/cliparts/E/E/C/W/C/P/led-green-th.png)
(http://www.clker.com/cliparts/D/U/l/o/Y/B/switch-on-off-th.png)(http://www.clker.com/cliparts/c/N/3/F/S/Q/power-switch-on-th.png)
(http://www.clker.com/cliparts/4/V/m/S/l/i/button-on-th.png)(http://www.clker.com/cliparts/U/w/Q/Q/Q/3/button-off-th.png)
วิธีการเก็บภาพลงเครื่อง ให้คลิกขวากลางภาพที่ต้องการแล้วเลือก Save image as... ดังรูป
(http://www.praphas.com/PhotoForum/interface/HowTo11/1.png)
*เฉพาะรูป LED ติดกับ LED ดับเพียง 2 รูปเท่านั้น
2. วางคอนโทรล PictureBox ลงบน Form ทำการเลือกภาพที่ดาวน์โหลดจากข้อ 1 (เฉพาะ LED)
(http://www.praphas.com/PhotoForum/interface/HowTo11/2.png)
3. คลิกตามรูปแล้วทำการเลือกรูปที่ดาวน์โหลดมาทั้ง 2 รูป
(http://www.praphas.com/PhotoForum/interface/HowTo11/3.png)
4. เลือกรูปแรก
(http://www.praphas.com/PhotoForum/interface/HowTo11/4.png)
5. ตั้งค่าคุณสมบัติ SizeMode เป็น AutoSize
(http://www.praphas.com/PhotoForum/interface/HowTo11/5.png)
6. เปลี่ยนชื่อรูปจากเดิมที่เป็น picturebox1 เป็นชื่อแทนโดยให้มีความหมายที่ใช้งาน (ในที่นี้ใช้คำว่า LOFF)
(http://www.praphas.com/PhotoForum/interface/HowTo11/6.png)
7. คัดลอก PictureBox จากข้อ 6 วาง แล้วเปลี่ยนรูปพร้อมเปลี่ยนชื่อดังรูป
* LON,LOFF เป็นต้นแบบภาพ LED ในสภาวะติดและดับ
(http://www.praphas.com/PhotoForum/interface/HowTo11/7.png)
8. ปรับขนาด Form ให้ปิดบังต้นแบบภาพ
(http://www.praphas.com/PhotoForum/interface/HowTo11/8.png)
9. จะได้หน้าตาโปรแกรมดังรูป
(http://www.praphas.com/PhotoForum/interface/HowTo11/9.png)
10. วางคอนโทรล Timer ลงใน Form และกำหนดค่าใน Properties ดังนี้
-Enabled-->True เพื่อให้ไทเมอร์ทำงานทันทีเมื่อรันโปรแกรม
-Interval--->100 กำหนดช่วงเวลาการกระตุ้นเป็น 100 มิลลิวินาที (1/10 วินาที)
(http://www.praphas.com/PhotoForum/interface/HowTo11/10.png)
11. ดับเบิลคลิกที่ตัว Timer แล้วเขียนโค้ด
-ส่วนแรกเป็นการประกาศตัวแปร แต่เนื่องจากโปรแกรมที่ใช้งานเป็น C# 2015 จึงยังไม่สามารถใส่เป็นเลขฐานสองได้
-ส่วนของโปรแกรม ใช้การตรวจสอบบิตข้อมูลในแต่ละบิตว่าเป็น 1 หรือ 0 ก่อนสั่งให้เปลี่ยนภาพ(นำภาพจากต้นแบบ)แทนภาพเดิม
(http://www.praphas.com/PhotoForum/interface/HowTo11/11.png)
โค้ดโปรแกรมส่วนประกาศตัวแปร
Byte[] vals = {0x00, //0000 0000
0x01, //0000 0001
0x03, //0000 0011
0x07, //0000 0111
0x0F, //0000 1111
0x1F, //0001 1111
0x3F }; //0011 1111
Int16 n = 0;
โค้ดโปรแกรมส่วนตรวจสอบข้อมูลและเปลี่ยนภาพ
L0.Image = ((vals[n] & 1) == 1) ? LON.Image : LOFF.Image;
L1.Image = ((vals[n] & 2) == 2) ? LON.Image : LOFF.Image;
L2.Image = ((vals[n] & 4) == 4) ? LON.Image : LOFF.Image;
L3.Image = ((vals[n] & 8) == 8) ? LON.Image : LOFF.Image;
L4.Image = ((vals[n] & 16) == 16) ? LON.Image : LOFF.Image;
//-----------------next index pointer----------------------
if (n < vals.Length - 1)
n++;
else
n = 0;
หมายเหตุ ใช้ if แบบย่อเพื่อให้โค้ดสั้นลง เช่น
L0.Image = ((vals[n] & 1) == 1) ? LON.Image : LOFF.Image;
โค้ดเต็มคือ
if((vals[n] & 1) == 1)
{
L0.Image=LON.Image;
}
else
{
L0.Image=LOFF.Image;
}
12. รันโปรแกรมเพื่อทดสอบผล
(http://www.praphas.com/PhotoForum/interface/HowTo11/12.png)
(http://www.praphas.com/PhotoForum/interface/HowTo11/run.gif)