Arduino 7Segment
เป็นหน้าจอแสดงผลแบบตัวเลขและตัวอักษรซึ่งภายใน 7 Segment จะประกอบไปด้วยหลอด LED เป็นแบบแนวยาว 7 ส่วนด้วยกันดังรูป
สำหรับ 7 Segment ก็จะมี Common อยู่ด้วยกัน 2 ประเภท คือ Anode และ Cathode ซึ่งทั้ง 2 อย่างทำงานไม่เหมือนกัน นั่นหมายความว่าถ้าเราเลือกซื้อแบบ Anode แทนที่เวลาเขียนโปรแกรมส่ง “แรงดัน” จาก digital pin ก็ต้องเลือกส่งเป็นแบบ “LOW” แทนเพื่อเนื่องจากมีการจ่าย VCC เข้าที่ขา common แต่ในทางกลับกันถ้าเราเลือกซื้อแบบ Cathode มา Common เราก็จะต้องจ่าย GND ให้มัน ซึ่ง digital pin เราก็ต้องจ่าย “HIGH” เข้ามายัง 7 Segment ดังรูปด้านล่าง
** Common เราสามารถจ่ายขาใดก็ได้ไม่ว่าจะต้องบนหรือล่าง
มาเริ่มต่อ 7 Segment เข้ากับ Arduino board กัน ในที่นี้ 7 Segment ของเราเป็น Common Anode เราก็จะทำการจ่ายแรงดัน 3.3V เข้ากับ 7 Segment ส่วน digital pin เราก็จะจ่าย “LOW” หรือ “FALSE” เพื่อให้เกิดกระแสขึ้นมา โดยเราจะไล่ A, B, C, D, E, F, G เข้ากับ P2, P3, P4, P5, P6, P7, P8 ตามลำดับ
** จากรูปจะเห็นได้ว่าเร่จ่ายแรงดัน 3.3V ตรงเข้า 7Segment หากใช้แรงดัน 5V หรือจ่างแรงดันแบบ Common cathode ควรใส่ 220 ohm ไปช่วยลดแรงดัน
7Segment.ino
const int pin[] = {2,3,4,5,6,7,8};const bool isAnode = true;
const int data[10][7] = {
// A B C D E F G
{1,1,1,1,1,1,0},//0
{0,1,1,0,0,0,0},//1
{1,1,0,1,1,0,1},//2
{1,1,1,1,0,0,1},//3
{0,1,1,0,0,1,1},//4
{1,0,1,1,0,1,1},//5
{1,0,1,1,1,1,1},//6
{1,1,1,0,0,0,0},//7
{1,1,1,1,1,1,1},//8
{1,1,1,1,0,1,1}//9
};int num = 0;void setup()
{
Serial.begin(9600);
setupPinMode();
}void loop()
{
displayNumber(num++);
if (num > 9){num = 0;}
delay(1000);
}// 7 Segment functionsvoid setupPinMode() {
// Set pin mode
for (int x : pin)
{
pinMode(x, OUTPUT);
}
}void displayNumber(int num) {
for (int i = 0; i<sizeof(data[num]); i++)
{
digitalWrite(pin[i], isAnode ? !data[num][i] : data[num][i]);
}
}