arduino入門教程到第16課遇到些問題.效果一直是混亂的狀態.
琢磨了半天發現一些問題,和大家分享下
1)接線圖,原圖沒有問題,只是比較含糊,線比較多不好看. 我用紅色數字標示數碼管的12個腳,並且用藍色數字標示出對應arduino的腳
2)程序問題(這個問題比較離譜)
剛開始按照示例怎么都沒辦法出效果,突發奇想,將所有的高低電平兌換.然后一切都和諧了,后來查了共陰共陽的原理圖發現原來的代碼可能是共陽的.
下面是我的代碼:
int y[8] = {1,2,3,4,5,6,7,8}; int d[4] = {12,11,10,9}; int digital[10][8] = {{6,y[0],y[1],y[2],y[3],y[4],y[5]},{2,y[1],y[2]},{5,y[0],y[1],y[3],y[4],y[6]},{5,y[0],y[1],y[2],y[3],y[6]},{4,y[1],y[2],y[5],y[6]},{5,y[0],y[2],y[3],y[5],y[6]},{6,y[0],y[2],y[3],y[4],y[5],y[6]},{3,y[0],y[1],y[2]},{7,y[0],y[1],y[2],y[3],y[4],y[5],y[6]},{6,y[0],y[1],y[2],y[3],y[5],y[6]}}; long n=0; int x=100; int del=55; void setup(){ for(int i=0;i<8;i++) pinMode(y[i],OUTPUT); for(int i=0;i<4;i++) pinMode(d[i],OUTPUT); } void clearLEDs(){ for(int i=0;i<8;i++) digitalWrite(y[i],LOW); } void pickDigit(int x){ for(int i=0;i<4;i++) digitalWrite(d[i],HIGH); if(x>4) x=4; digitalWrite(d[x-1],LOW); } void showDigital(int x){ for(int i=1;i<=digital[x][0];i++) digitalWrite(digital[x][i], HIGH); } void disp(int x){ digitalWrite(y[7],HIGH); } void loop(){ clearLEDs(); pickDigit(1); showDigital((n/x/1000)%10); delayMicroseconds(del); clearLEDs(); pickDigit(2); showDigital((n/x/100)%10); delayMicroseconds(del); clearLEDs(); pickDigit(3); disp(3); showDigital((n/x/10)%10); delayMicroseconds(del); clearLEDs(); pickDigit(4); showDigital(n/x%10); delayMicroseconds(del); n++; if(digitalRead(13) == LOW){ n=0; } }
最后是效果圖和效果視頻