Et oui, il faut prendre en compte 0 (pourquoi cette touche de devrait-elle pas être prise en compte ? n'aurais tu pas le droit de paramétrer le RTC à 00h000:00 ?)
Alors bilan de la journée, - le code de l'horloge à partir du 1 janvier 2015 marche !
- le code du clavier avec des modifications au niveau des ports marche !
- reste à finir la partie réglage de l'heure car j'ai rencontré des problèmes
Voici le code du réglage (non fini)
CODE SUPPRIME POUR EVITER LES COPIES CAR PROJET BAC
Mon problème est que la commande char waitForKey() ne marche pas car normalement il bloque le programme tant qu'il n'y ai pas de touche appuyé or voici le résultat :
Ensuite vu que je n'ai pas compris ton code pour le réglage j'ai pas essayé de le développer plus ou de la comprendre via internet car le réseau internet ne marchai pas. Et le compilateur affiche un message d'erreur sur le '0 si je m'en souvient bien.
Ok il faudrait que je regarde comment faire défiler ensuite pour transformer tous les Serial.print en lcd.print car j'ai à ma disposition un écran LCD 2 lignes 16 caractères je crois.
Comme sa je comprends bien le code sauf une ligne qui est le else en 9; -1 correspond à rien faire ?
Alors voici le code remit au propre; si le code est OK je présume que je dois faire la même chose pour les minutes, secondes, jours, année mais pour les mois il va falloir faire autre chose je pense. Une question qui porte sur la ligne 107 je voudrai savoir si la majuscule sur le H de Heure1 et 2 pose un problème car dans la déclaration des variables je n'ai pas mis de majuscule. Aussi je voudrai savoir si ce dossier pourrait être en privé car d'autre personne pouvant avoir le même travail peuvent tout simplement copier coller
CODE SUPPRIME POUR EVITER LES COPIES CAR PROJET BAC
Non, ce dossier ne peut pas être privé : openclassrooms est une communauté basée sur le partage donc tout est publique afin que tout le monde puisse y avoir accès avec un minimum de recherche.
Si tu ne veux pas que d'autres membres puissent voir ton travail, il va falloir te débrouiller seul.
Pour ce qui est de la ligne 107, je pense que tu pose cette question à cause d'une petite lacune sur ce qu'est une variable et leur portée.
Voici un petit commentaire pour cette ligne :
void reglage()
{
[...]
// Création d'une variable locale de type char (une valeur sur un octet, de -128 à +127 servant à contenir une lettre)
// Et affectation de cette variable avec l'attente de la prochaine touche appuyée sur le clavier
// Note: cette variable étant "locale", elle n'existe que dans la fonction réglage et sera détruite à la fin de cette fonction
char keyHeure1 = keypad.waitForKey();
La variable keyHeure1 n'a donc rien à voir avec la variable heure1 (ce sont 2 variables différentes).
Du coup, tes variables globales heure1 et heure2 ne servent strictement à rien.
On pourrait même généraliser ce propose pour toutes te variables de la ligne 4 à 12 qui peuvent être supprimées.
En effet, il est préférable d'éviter au maximum les variables globales quand elles peuvent être remplacées par des variables locales.
Si cela t'aide, il est possible de déclarer les variables locales en début de fonction plutôt que de le faire en même temps qu'une affectation.
// Fonction de réglage permettant de régler l'heure
void reglage() {
// Création des variables locales à la fonction
//==============================================
// Un char (key) pour retenir une touche du keypad
char key;
// Deux autres char (keyHeure1 et keyHeure2) pour la même chose
char keyHeure1;
char keyHeure2;
// Un int (heure) pour stocker le résultat du calcul de l'heure
int heure;
// Code source de la fonction
//==============================================
key = keypad.getKey(); // Attribution de la variable key à la touche appuyée
Serial.println("Veuillez appuyer sur 2 chiffres pour rentrer l'heure"); // Ecrire "Veuillez appuyer sur 2 chiffres pour rentrer l'heure"
keyHeure1 = keypad.waitForKey(); // Attendre la préssion d'un bouton et l'assigné à la varialbe Heure1
keyHeure2 = keypad.waitForKey(); // Attendre la préssion d'un bouton et l'assigné à la varialbe Heure2
if ( keyHeure1 >= '0' && keyHeure1 <= '9' && keyHeure2 >= '0' && keyHeure2 <= '9' ) // Vérifier si le bouton préssé n'est pas # ou *
{
heure = ( ( (int)(keyHeure1 - '0' ) * 10 + (int)(keyHeure2 - '0' ) ) ); // Traduction des touches en ASCII et les assemblées
} else // Sinon ...
{
heure = -1; // Rien changer à la variable heure
}
if ( heure >= 0 && heure <= 23 ) // Si la valeur rentrée est comprise entre 0 et 23
{
Serial.print(heure); // Si oui alors afficher la variable heure
Serial.println(":00:00"); // Ecrire ":00:00"
} else // Sinon ...
{
Serial.print(heure); // Afficher la variable heure
Serial.println("n'est pas un nombre valide"); // Ecrire "n'est pas un nombre valide"
}
RTC.adjust(DateTime(2010,1,1,heure,0,0)); // Ajustement de l'heure en fonction des varialbes redéfinies
}
Désolé de n'avoir rien écrit de plus car j'avais d'autres problèmes à régler. Pour ce code j'ai un problème au niveau du réglage de l'heure etc car lors du réglage de la date par exemple l'heure qui va être afficher va être celle rentrer avant; Exemple si nous avons réglé 12:01:15 , il est 12:01:30 lorsque je règle la date et lorsque que j'ai fini la saisi il va m'afficher la bonne date avec 12:01:15 et non 12:01:30+seconde pour régler la date. Le problème est dans les deux sens, la solution serai au niveau du RTC set time mais je ne trouve pas la solution :s
CODE SUPPRIME POUR EVITER LES COPIES CAR PROJET BAC
Alors une fois que tu as pompé tout ce dont tu avais besoin tu demandes la suppression du topic pour pas qu'on te pique ton code pour le bac ? Ce n'est pas du tout l'esprit de partage d'une communauté, donc non ce topic ne sera pas supprimé.
En plus c'est une attitude complètement immature de tout supprimer comme ça, parce que d'abord tu rends le sujet presque obsolète car sans ton code c'est impossible de comprendre ce que "lorrio" t'explique et ensuite tu pense vraiment que les profs qui vont te faire passer a tes PPE savent pas que tout le monde va tout pomper sur internet et qu'on a pas la science infuse donc on peut pas savoir comment fonctionne les choses si on fais pas de recherches et qu'on s'inspire pas d'autres travaux ? Tu crois sincèrement que si moi j'avais fait un simple "copier-coller" (ce qui n'a aucun intérêt) sans essayer de comprendre quoi que se soit, on serrais tombé comme par hasard sur le même prof et qu'il t'aurai pénalisé ?
Je suis désolé mais c'est complètement puéril et pas cool pour les personnes à qui aurai eu besoin de comprendre ce que vous avez dis dans la conversation... Franchement c'est vraiment être égoïste de faire ça.