ขอขยายความ ที่มาของค่า 0x3f, 0x06 , 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f ใน Code Arduino สำหรับป้อนให้ 74HC595 แสดงผล 7 Segment
เนื่องจากค่าที่ 74HC595 ต้องการนั้น เป็น Binary (ฐาน2) เราจึงต้องส่งค่าไปยัง 7 Segment ไปเป็น Binary เสมอ เมื่อเราดูโค๊ดตัวอย่างในเว็บต่างๆ จะเห็นเป็นค่า
int num[] = { 0x3f, 0x06 , 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
ตัวแปล num ได้เก็บค่าเป็น Array โดยเมื่อเอาค่าแต่ละค่ามาแปลงเป็นฐาน 2 จะพบว่าตรงกับการแสดงผลของ 7 Segment พอดี โดยหากเราต่อ 7 Segment ดังตัวอย่างด้านล่าง วิธีการมองเลขฐาน 2 ที่ส่งไปยัง 7 Segment นั้นให้มองจากด้านหลังมาด้านหน้าครับ จะยกตัวอย่างการแปลความมายดังนี้
ส่งค่า แสดงผลเป็นตัวเลข 1 บน 7 Segment
Hex = 6 ;
Binary = 110 ;
ตำแหน่ง a บน 7 Segment = 0 ;
ตำแหน่ง b บน 7 Segment = 1 ;
ตำแหน่ง c บน 7 Segment = 1 ;
เมื่อได้ค่าดังนี้ 7 Segment จะแสดงผลเป็นเลข 1 ให้ครับ
a = Q0 (74hc595)
_________________
| |
| |
| |
f =Q5 | | b =Q1
| |
| g = Q6 |
_________________
| |
| |
e = Q4 | | c = Q2
| |
| |
| |
_________________
d = Q3