zardiax Posté(e) Octobre 9, 2019 Partager Posté(e) Octobre 9, 2019 bonjour voila je suis en train de faire un projet et j'ai besoin de deux écran lcd un qui affiche l'heure et l'autre défile un message. Le problem c'est que l'heure s'actualise que quand le message a fait son déroulement et je ne veux pas çà il me faut donc un multitache mais je ne sais pas comment faire.voici mon code actuellement:#include <DS3231.h>#include <LiquidCrystal.h>DS3231 rtc(SDA, SCL);LiquidCrystal lcd(1, 2, 4, 5, 6, 7);LiquidCrystal lcd2(36, 34, 32, 30, 28, 26);void setup() { rtc.begin(); lcd.begin(16,2); lcd2.begin(16, 2); // Print a message to the LCD. lcd2.print("bonjour"); }void loop() {tim();mes();}void tim () { lcd.setCursor(0,0); lcd.print("Time: "); lcd.print(rtc.getTimeStr()); lcd.setCursor(0,1); lcd.print("Date: "); lcd.print(rtc.getDateStr()); rtc.setTime(24, 0, 0); // Set the time to 12:00:00 (24hr format) rtc.setDate(8, 10, 2019);}void mes () {{// scroll 13 positions (string length) to the left // to move it offscreen left: for (int positionCounter = 0; positionCounter < 13; positionCounter++) { // scroll one position left: lcd2.scrollDisplayLeft(); // wait a bit: delay(150); } // scroll 29 positions (string length + display length) to the right // to move it offscreen right: for (int positionCounter = 0; positionCounter < 29; positionCounter++) { // scroll one position right: lcd2.scrollDisplayRight(); // wait a bit: delay(150); } // scroll 16 positions (display length + string length) to the left // to move it back to center: for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // scroll one position left: lcd2.scrollDisplayLeft(); // wait a bit: delay(150); } // delay at the end of the full loop: delay(1000);}} Lien vers le commentaire Partager sur d’autres sites More sharing options...
zardiax Posté(e) Octobre 9, 2019 Auteur Partager Posté(e) Octobre 9, 2019 et j'utilise un arduino mega Lien vers le commentaire Partager sur d’autres sites More sharing options...
miserovitch Posté(e) Octobre 10, 2019 Partager Posté(e) Octobre 10, 2019 (modifié) Salut, J'avais rencontré le problème lors de la fabrication d'un module de gestion d'aquarium récifal sur base arduino. La mise à jour de l'affichage des paramètres et la mesure ce ceux-ci. Je dois t'avouer que ça fait pas mal de temps que je ne me suis pas replongé dans la programmation, je ne vais donc pas te donner le code tout fait mais je peux te donner des pistes. L'arduino ne fonctionne pas en RTOS (Real Time Operating System, qui permet de gérer en // des taches) d'origine. Je me souviens de tentatives à l'époque mais je ne sais pas ou ça en est aujourd'hui. Si tu veux que l'horloge sois mise à jour pendant la diffusion du message il faut rappeler la fonction Time et la mise à jour de l'affichage dans la fonction message. Juste avant les fonctions delay par exemple je pense que ca pourrait le faire. Par contre il ne faut pas rafraîchir trop fréquemment le LCD sinon tu as un effet de scintillement. J'espère t'avoir aidé Cdt LC ps: Using FreeRTOS multi-tasking in Arduino Modifié (le) Octobre 10, 2019 par miserovitch Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vincent Posté(e) Octobre 10, 2019 Partager Posté(e) Octobre 10, 2019 (modifié) Il n'y a pas de réponse simple à ta demande : il va te falloir apprendre un peu plus la programmation pour réaliser ce que tu veux. Je peux quand même te donner : - une évidence : jamais de fonction delay() dans ton code, car c'est le signe d'un code "mal fichu" et ca bloque ton programme - un lien : https://www.locoduino.org/spip.php?article78 Les cours sont très bien faits et il vaut mieux utiliser la bibliothèque LiquicrystalFast beaucoup plus rapide - un autre lien avec articles d'une grande qualité : https://www.carnetdumaker.net/articles/faire-plusieurs-choses-la-fois-avec-une-carte-arduino/ Cela dit, la base c'est l'utilisation de millis() https://www.locoduino.org/spip.php?article6 et un peu plus poussé, les interruptions https://www.locoduino.org/spip.php?article84 Modifié (le) Octobre 10, 2019 par Vincent 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luvwahraan Posté(e) Octobre 10, 2019 Partager Posté(e) Octobre 10, 2019 (modifié) +1 @Vincent pour les interruptions et timers. Ça peut être contraignant mais c'est très utile. Mais même sans, ici c'est juste le code qui n'est pas adapté à ce que tu veux. Il suffirait de faire défiler le texte à chaque passage dans le main, et de mettre à jour l'heure seulement si besoin. En passant, quand tu balances du code utilise les balises qui vont bien : #include <stdio.h> int main(void) { printf("Je suis du code dans la balise qui va bien. \o/"); return 0; } C'est bien plus lisible. Modifié (le) Octobre 10, 2019 par Luvwahraan 1 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
zardiax Posté(e) Octobre 10, 2019 Auteur Partager Posté(e) Octobre 10, 2019 MERCIE pour vos aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant