Arduino 數碼管LED屏驅動
阿新 • • 發佈:2017-08-20
art 溫度 git 技術 () article 時間 ack 計劃
今天測試數碼管LED屏驅動,用某產品的一個共陰極的LED屏,依據電路圖做數碼管LED屏的檢測。
代碼寫得有些冗長。有好幾種驅動的方法,這裏僅僅是當中一種最直接的方案。抽出時間要做個更有效率的調用和驅動的方案。
//設置陰極接口 int d1 = 1; int d2 = 2; int d3 = 3; int d4 = 4; int d5 = 5; int d6 = 6; int d7 = 7; //設置陽極接口 int a = 8; int b = 9; int c = 10; int d = 11; int e = 12; int f = 13; int g = A0; int h = A1; void setup() { pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); pinMode(d5, OUTPUT); pinMode(d6, OUTPUT); pinMode(d7, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(h, OUTPUT); digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(h, LOW); digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); digitalWrite(d5, HIGH); digitalWrite(d6, HIGH); digitalWrite(d7, HIGH); } void loop() { //缺水 digitalWrite(d7, LOW); digitalWrite(a, HIGH); digitalWrite(b, HIGH); delay(500); //低水位 digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); delay(500); //定時關機 digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); delay(500); //溫度十位8 digitalWrite(d7, HIGH); digitalWrite(d1, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //溫度個位8 digitalWrite(d1, HIGH); digitalWrite(d2, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //溫符號度 digitalWrite(d2, HIGH); digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(h, HIGH); digitalWrite(d1, LOW); delay(500); //睡眠符號 digitalWrite(d1, HIGH); digitalWrite(d2, LOW); delay(500); //小時十位8 digitalWrite(d2, HIGH); digitalWrite(d3, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //小時個位8 digitalWrite(d3, HIGH); digitalWrite(d4, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(h, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //冒號 digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(h, HIGH); delay(500); //分鐘十位8 digitalWrite(d4, HIGH); digitalWrite(d5, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //分鐘個位8 digitalWrite(d5, HIGH); digitalWrite(d6, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(a, HIGH); delay(300); digitalWrite(a, LOW); digitalWrite(b, HIGH); delay(300); digitalWrite(b, LOW); digitalWrite(c, HIGH); delay(300); digitalWrite(c, LOW); digitalWrite(d, HIGH); delay(300); digitalWrite(d, LOW); digitalWrite(e, HIGH); delay(300); digitalWrite(e, LOW); digitalWrite(f, HIGH); delay(300); digitalWrite(f, LOW); digitalWrite(g, HIGH); delay(300); digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); delay(300); //全亮 digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(h, HIGH); digitalWrite(d1, LOW); digitalWrite(d2, LOW); digitalWrite(d3, LOW); digitalWrite(d4, LOW); digitalWrite(d5, LOW); digitalWrite(d6, LOW); digitalWrite(d7, LOW); delay(500); //全滅 digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(h, LOW); digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); digitalWrite(d5, HIGH); digitalWrite(d6, HIGH); digitalWrite(d7, HIGH); delay(500); }
計劃採用機器視覺來檢測,自己主動鑒別出斷筆。筆段亮度差異較大等質量檢驗問題。
Arduino 數碼管LED屏驅動