Go Down

Topic: Améliorer mon programme (Read 349 times) previous topic - next topic

stribuda

Salut , je compte réaliser une horloge composé de 6 afficheurs BCD , commandé par arduino uno ( 2 si il le faut car bcp de sortie ) , j'utilise également le registre 74C595 pour limité le nombre de sortie , et aussi un petit clavier pour entrer le temps .
Sincèrement ce projet n'est pas très utile mais mon ami passe son bac et a fait option projet et il a choisi montre BCD donc je l'aide comme je peux , je compte faire 3 mode ( 4 si possible )
le code :
Code: [Select]
#include <Keypad.h>

#define SHIFT 5
#define LATCH 6
#define DATA 7

#define SHIFT_2 8
#define LATCH_2 9
#define DATA_2 10

/*------------------------------------------------------------------------------------------*/
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'#','0','*','D'}
};
byte rowPins[ROWS] = {3, 2, A5, A4}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A3,A2, A1, A0}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

/*------------------------------------------------------------------------------------------*/
const byte chars[10] = {
   B00111111,//0
   B00000110,//1
   B01011011,//2
   B01001111,//3
   B01100110, //4
   B01101101, //5
   B01111101,//6
   B00000111,//7
   B01111111,//8
   B01101111 //9
   };

int aa = 0 ;
int i2 = 1 ;

/*------------------------------------------------------------------------------------------*/
void setup(){
 Serial.begin(9600);
 // On déclare les pins vers le 74HC595 en sortie
   pinMode(SHIFT, OUTPUT);
   pinMode(LATCH, OUTPUT);
   pinMode(DATA, OUTPUT);
   
   
}

void loop(){
 char mode = keypad.getKey();
 while(mode!=NO_KEY){
 char a = keypad.getKey();
 while(a!=NO_KEY){
 
 switch ( mode ) {
   
/*------------------------------------------------------------------------------------------*/      

case 'A' :
{
       int aa = a - '0' ;  // on convertie aa en int
       for ( int i = aa ; i<10 ; i++ ){
       digitalWrite(LATCH, LOW);
       shiftOut(DATA, SHIFT, MSBFIRST,chars[i]);
       digitalWrite(LATCH, HIGH);                                
       delay(1000);
       
       
       if (i == 9 )
       {
       if(i2>5){i2=0;}
       delay(1000);
       digitalWrite(LATCH_2, LOW);
       shiftOut(DATA_2, SHIFT_2, MSBFIRST, chars[i2]);
       digitalWrite(LATCH_2, HIGH);
       i2++;
       }
       }
       a = '0' ;  // on le fait pour qu'aprés le 9 on a 0 et pas revenir a l'état précédent
       
       break ;
   }


/*-------------------------------------------------------------------------------------------*/

case 'B' :
{
       digitalWrite(LATCH, LOW);
       shiftOut(DATA, SHIFT, MSBFIRST, B10001101);
       digitalWrite(LATCH, HIGH);
       delay(1000) ;
       break ;
}
  default :{
  break ;
}
}
}
}
}

1. Aider moi a ameliorer ce programme s'il vous plait .

-Standby

Pourquoi 2 Uno ? Utilise une mega tu sera tranquille.
The Mind is like a parachute it works best when opened.

Go Up