四位数码管SH5461AS的问题,arduino学习实测.
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; } }
最后是效果图和效果视频