ผมลองคลำๆเทสๆดูดยลองเขียนเอา arduino ให้มันจ่ายตามรูป FIG2 ที่เป็นรูปที่อยู่ในลิ้งที่ให้มาแบบEnergizedเพราะเห็นเป็นแถบดำๆน่าจะเป็น segติดแหละแล้วไล่จิ้มขาคอมกับขาอื่นทีละขาดู ปรากฎว่าบางขาขึ้นทีเดียว 4 segเลยบางขาก็ขึ้น 1 seg ตรงตามที่เราเข้าใจก็เลยงงเอ๋อๆเลยทีเดียวแล้วก็มีพวกที่ขึ้นๆมาจางๆด้วยครับ และคิดว่าที่เข้าใจน่าจะไม่ใช่ละเพราะยังเหลือคอมอีกตั้งสามขามันไม่น่าจะขึ้นพร้อมกันทั้ง 4 segสิ หรือมันต้องมีอะไรมากกว่านั้น ตอนแรกเข้าใจนึกว่าจะเหมือน 7 segmentหรือพวก multi7segmentปรากฎว่าทำความเข้าใจยากกว่ามากเลย
https://youtu.be/o_Y6XG7uzk0
ภาพมันจะเอียงๆหน่อยผมหมุนจอโทรศัพถายสองรอบมันก็ยังเจ็นออกลายเดิม
array pinยาวๆไม่ต้องสนใจมากครับผลพวงจากการพยามไดหลายๆคอลั่มรวมๆกันแต่ไม่เวิคแต่ 1com ไล่จิ้มทีละขาเวิคเลยเซ็ตไว้ที่ [0,0]
https://youtu.be/o_Y6XG7uzk0
ภาพมันจะเอียงๆหน่อยผมหมุนจอโทรศัพถายสองรอบมันก็ยังเจ็นออกลายเดิม
array pinยาวๆไม่ต้องสนใจมากครับผลพวงจากการพยามไดหลายๆคอลั่มรวมๆกันแต่ไม่เวิคแต่ 1com ไล่จิ้มทีละขาเวิคเลยเซ็ตไว้ที่ [0,0]
Code Select
//ATMEGA 2560
#define SEG_NUM 32
#define COM_NUM 4
uint8_t Seg_pin[SEG_NUM] = {2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27};
uint8_t Com_pin[COM_NUM]={9,10,11,12};
void driveSeg(byte com,byte seg)
{
digitalWrite(Seg_pin[seg], HIGH);
digitalWrite(Com_pin[com], LOW);
delay(1);
digitalWrite(Seg_pin[seg], LOW);
digitalWrite(Com_pin[com], HIGH);
delay(1);
}
void setup() {
for(uint8_t i = 0; i < SEG_NUM; i++)
{
pinMode(Seg_pin[i], OUTPUT);
}
/* Set the common pin as output */
for(uint8_t i = 0; i < COM_NUM; i++)
{
pinMode(Com_pin[i], OUTPUT);
}
//all LOW
for(int i=0;i<SEG_NUM;i++)
digitalWrite(Seg_pin[i], LOW);
for(int i=0;i<COM_NUM;i++)
digitalWrite(Com_pin[i], LOW);
}
void loop() {
driveSeg(0,0);
delay(10);
}