2017-05-08 8 views
0

6つのディスプレイ7セグメント(私はA1、A2、A3、A4、A5、A6を呼び出す)と3 cd4543B(私はDa、Db、Dcと呼ぶ) Arduinoのメガ2560 Iはまた、ダ直流回路が行われているA5、A6arduino mega2560で7セグメント表示

ための使用であり、DbはA3、A4

ための使用である

A2

、A1のための使用である3トランジスタ

を使用します(A1、A2、A3、A4、またはA1、A2、A5、A6またはA2、A3、A4、A5、またはA3、A4、A5、A6)、すべて正常に動作します。

が、私は五台の、六ディスプレイ、何も仕事....それは働いていない理由を私は理解していない

を使用したい場合は、私は4ディスプレイよりも同じ方法を使用しています。

arduino mega2560には特有の点がありますか?

5表示のための私のコード:

//Da 
const int bit_A=8; 
const int bit_B=9; 
const int bit_C=10; 
const int bit_D=11; 
//Db 
const int bit_E=22; 
const int bit_F=24; 
const int bit_G=26; 
const int bit_H=28; 
//Dc 
const int bit_I=40; 
const int bit_J=42; 
const int bit_K=44; 
const int bit_L=46; 

// transistors 
const int alim_dizainemillier= 3; 
const int alim_millier=4; 
const int alim_centaine=5; 
const int alim_dizaine=6; 
const int alim_unite=7; 

void setup() 
{ 

pinMode(bit_A,OUTPUT); 
pinMode(bit_B,OUTPUT); 
pinMode(bit_C,OUTPUT); 
pinMode(bit_D,OUTPUT); 
pinMode(bit_E,OUTPUT); 
pinMode(bit_F,OUTPUT); 
pinMode(bit_G,OUTPUT); 
pinMode(bit_H,OUTPUT); 
pinMode(bit_I,OUTPUT); 
pinMode(bit_J,OUTPUT); 
pinMode(bit_K,OUTPUT); 
pinMode(bit_L,OUTPUT); 
pinMode(alim_dizainemillier,OUTPUT); 
pinMode(alim_millier,OUTPUT); 
pinMode(alim_centaine,OUTPUT); 
pinMode(alim_dizaine,OUTPUT); 
pinMode(alim_unite,OUTPUT); 

digitalWrite(bit_A,LOW); 
digitalWrite(bit_B,LOW); 
digitalWrite(bit_C,LOW); 
digitalWrite(bit_D,LOW); 
digitalWrite(bit_E,LOW); 
digitalWrite(bit_F,LOW); 
digitalWrite(bit_G,LOW); 
digitalWrite(bit_H,LOW); 
digitalWrite(bit_I,LOW); 
digitalWrite(bit_J,LOW); 
digitalWrite(bit_K,LOW); 
digitalWrite(bit_L,LOW); 
digitalWrite(alim_dizainemillier,LOW); 
digitalWrite(alim_millier,LOW); 
digitalWrite(alim_centaine,LOW); 
digitalWrite(alim_dizaine,LOW); 
digitalWrite(alim_unite,LOW); 
} 

void loop() 
{ 
for(int i=0;i<10000;i++) 
{ 
    afficher_nombre(i); 

} 
} 




void afficher_nombre(int nombre) 

{ 
long temps; 
int unite=0,dizaine=0,centaine=0, millier=0, dizainemillier=0; 
dizainemillier=nombre/10000; 
millier=(nombre-(10000*dizainemillier))/1000; 
centaine=(nombre-1000*millier)-(10000+dizainemillier)/100; 
dizaine=(nombre-(centaine*100)-(millier*1000)-(dizainemillier*10000))/10; 
unite=nombre-(dizainemillier*10000)-(millier*1000)-(centaine*100)-(dizaine*10); 

temps=millis(); 
while((millis()-temps)<500){ 



    digitalWrite(alim_dizainemillier,HIGH); 
    afficher_CD(dizainemillier); 
    digitalWrite(alim_millier,LOW); 
    digitalWrite(alim_centaine,LOW); 
    digitalWrite(alim_dizaine,LOW); 
    digitalWrite(alim_unite,LOW); 
    delay(5); 


https://www.arduino.cc/ digitalWrite(alim_dizainemillier,LOW); 
    digitalWrite(alim_millier,HIGH); 
    afficher_CM(millier); 
    digitalWrite(alim_centaine,LOW); 
    digitalWrite(alim_dizaine,LOW); 
    digitalWrite(alim_unite,LOW); 
    delay(5); 


    digitalWrite(alim_dizainemillier,LOW); 
    digitalWrite(alim_millier,LOW); 
    digitalWrite(alim_centaine,HIGH); 
    afficher_CM(centaine); 
    digitalWrite(alim_dizaine,LOW); 
    digitalWrite(alim_unite,LOW); 
    delay(5); 


    digitalWrite(alim_dizainemillier,LOW); 
    digitalWrite(alim_millier,LOW); 
    digitalWrite(alim_centaine,LOW); 
    digitalWrite(alim_dizaine,HIGH); 
    afficher_UD(dizaine); 
    digitalWrite(alim_unite,LOW); 
    delay(5); 

    digitalWrite(alim_dizainemillier,LOW); 
    digitalWrite(alim_millier,LOW); 
    digitalWrite(alim_centaine,LOW); 
    digitalWrite(alim_dizaine,LOW); 
    digitalWrite(alim_unite,HIGH); 
    afficher_UD(unite); 
    delay(5); 
} 
} 


void afficher_UD(int chiffre) 
{ 
    digitalWrite(bit_A,LOW); 
    digitalWrite(bit_B,LOW); 
    digitalWrite(bit_C,LOW); 
    digitalWrite(bit_D,LOW); 

     if(chiffre>=8) 
     { 
      digitalWrite(bit_D,HIGH); 
      chiffre=chiffre-8; 
     } 
    if(chiffre>=4) 
     { 
      digitalWrite(bit_C,HIGH); 
      chiffre=chiffre-4; 
     } 
    if(chiffre>=2) 
     { 
      digitalWrite(bit_B,HIGH); 
      chiffre=chiffre-2; 
     } 
    if(chiffre>=1) 
     { 
      digitalWrite(bit_A,HIGH); 
      chiffre=chiffre-1; 
     } 
} 


void afficher_CM(int chiffre) 
{ 
    digitalWrite(bit_E,LOW); 
    digitalWrite(bit_F,LOW); 
    digitalWrite(bit_G,LOW); 
    digitalWrite(bit_H,LOW); 

     if(chiffre>=8) 
     { 
      digitalWrite(bit_H,HIGH); 
      chiffre=chiffre-8; 
     } 
    if(chiffre>=4) 
     { 
      digitalWrite(bit_G,HIGH); 
      chiffre=chiffre-4; 
     } 
    if(chiffre>=2) 
     { 
      digitalWrite(bit_F,HIGH); 
      chiffre=chiffre-2; 
     } 
    if(chiffre>=1) 
     { 
      digitalWrite(bit_E,HIGH); 
      chiffre=chiffre-1; 
     } 
} 

void afficher_CD(int chiffre) 
{ 
    digitalWrite(bit_I,LOW); 
    digitalWrite(bit_J,LOW); 
    digitalWrite(bit_K,LOW); 
    digitalWrite(bit_L,LOW); 

     if(chiffre>=8) 
     { 
      digitalWrite(bit_L,HIGH); 
      chiffre=chiffre-8; 
     } 
    if(chiffre>=4) 
     { 
      digitalWrite(bit_K,HIGH); 
      chiffre=chiffre-4; 
     } 
    if(chiffre>=2) 
     { 
      digitalWrite(bit_J,HIGH); 
      chiffre=chiffre-2; 
     } 
    if(chiffre>=1) 
     { 
      digitalWrite(bit_I,HIGH); 
      chiffre=chiffre-1; 
     } 
} 

どうもありがとう

答えて

0

これは、ビットの問題...だった:そう100000ニーズにカウントアップする16ビットで

arduinoの作業使用する:long

... 
void loop() 
{ 
for(long i=0;i<10000;i++) 
{ 
    afficher_nombre(i); 

} 
} 

void afficher_nombre(long nombre) 
.... 
関連する問題