Salut , j'aimerai pas trop entré dans les détail car je suis pressé et mon projet est un peu long a expliqué , en résumé je compte réaliser une horloge a base d'afficheur BCD , il y'a un clavier ou je peu choisir le mode avec laquel elle va fonctionner : mode A : j'entre le temps (par exemple 23:45:06 heure-minute-seconde ) , un autre mode chronomètre , un mode ou l'horloge prend le temp depuis l'horloge de l'ordinateur . J'ai presque terminé d’écrire le code avec les 2 premier mode , il me reste le dérnier mode , j'ai chérché un peu sur les fonctions de temps mais j'ai trouvé beaucoup de fonction et je sais pas laquel utilisé donc je fait apel a vous pour me dire directement comment faire et si possible me donner un exemple précis qui convien a mon cas .
Salut,
J'ai pas trop le temps de t'expliquer toutes les solutions '"car je suis pressé", donc je ne vais pas t'en donner du tout puisqu'on ne sait rien du mode de communication de ton Arduino avec le PC...
Le but d'un forum participatif est comme son nom l'indique, basé sur la participation des membres.
Tu demandes des informations ou même "un exemple précis", qu'on te dise "directement comment faire" sans prendre le temps d'expliquer ton projet convenablement, ni d'expliquer les solutions techniques adoptées lors de la conception de ce projet et qui pourraient nous aider à t'aiguiller sur le bon chemin.
Tu dis avoir trouvé beaucoup de fonction de temps, mais que tu ne sais pas laquelle utiliser. Eh bien moi, je sais. Sauf que je ne connais pas les détails de ton projet, donc je ne peux pas t'en donner.
Aujourd'hui, j'ai tout mon temps pour faire un tour sur le forum, et répondre ou aider les personnes qui ont un projet intéressant et surtout sur lequel je peux répondre.
Par contre, je n'ai pas le temps d'aider des personnes qui souhaitent qu'on leur prémâche tout le travail, qui ne veulent que du fini à implanter directement dans leur code sans réfléchir, qui ne prennent pas le temps d'écrire "s'il vous plait" à la fin de leur message et qui ne le prendront sûrement pas plus pour dire "merci" à la fin.
[/coup de gueule]
Bon.... et bien ça c'est dit
Ce code pourra vous éclaircir plus peu être :
#include <Keypad.h>
#define SHIFT 5
#define LATCH 6
#define DATA 7
#define SHIFT_2 10
#define LATCH_2 11
#define DATA_2 12
/*------------------------------------------------------------------------------------------*/
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 i2 = 0 ;
int s1 = 0 ;
char s11 = 'T';
int s2 = 0 ;
char s22 = 'T' ;
/*------------------------------------------------------------------------------------------*/
void setup(){
Serial.begin(9600);
// On déclare les pins vers le 74HC595 en sortie
pinMode(SHIFT, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(SHIFT_2, OUTPUT);
pinMode(LATCH_2, OUTPUT);
pinMode(DATA_2, OUTPUT);
}
void loop(){
char mode = keypad.getKey();
while(mode!=NO_KEY){
while(mode == 'A')
{
s11 = keypad.getKey() ;
int s1 = s11 - '0';
while(s11!=NO_KEY){
s22 = keypad.getKey() ;
int s2 = s22 - '0';
if(s2>5){s2=0;}
while(s22!=NO_KEY){
for ( int i = s1 ; i<10 ; i++ ){
digitalWrite(LATCH, LOW);
shiftOut(DATA, SHIFT, MSBFIRST,chars[i]);
digitalWrite(LATCH, HIGH);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_2, SHIFT_2, MSBFIRST,chars[s2]);
digitalWrite(LATCH_2, HIGH);
delay(1000);
if(i==9)
{s2++;}
if(s2==6)
{s2=0;}
s1=0;
if(keypad.getKey()=='*') // si * préssé il arete le mode A et retourne dés le début
{
i=11;
s22=NO_KEY;
s11=NO_KEY;
mode=NO_KEY;}
}
}}}
/*-------------------------------------------------------------------------------------------*/
while(mode == 'B') // mode chronométre
{
for(int i=0 ; i<10 ; i++ ){
digitalWrite(LATCH, LOW);
shiftOut(DATA, SHIFT, MSBFIRST, chars[i]);
digitalWrite(LATCH, HIGH);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_2, SHIFT_2, MSBFIRST, chars[i2]);
digitalWrite(LATCH_2, HIGH);
if(i==9)
{i2++;}
if(i2==6)
{i2=0;}
delay(16);
}
if(keypad.getKey()=='*'){mode = NO_KEY;}
} // ici s'ajoutera le 3eme mode
if((mode != 'A')&&(mode!= 'B')) {mode=NO_KEY;}
}
}
L'autre mode sera basé sur le temps de l'ordinateur càd quand je branche le pc et que j'appuis sur la touche du mode 3 l'arduino va prendre le temps du pc .