Go Down

Topic: Améliorer mon programme (Read 409 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy