四位數碼管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;
  }
}

  

 最后是效果圖和效果視頻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM