Bonjour,
je suis en train de réaliser un programme qui utilise un écran lcd, avec un menu pour naviguer au travers des différentes options de mon programme, mais le code est long, et à l'allumage il met un certain temps à ce charger et l'écran LCD n'affiche rien pendant quelques secondes (puisque rien n'est chargé). Je voulais savoir si il était possible de charger un très court programme (qui afficherait comme un écran de bienvenue) avant le chargement du programme principal sur Arduino ?
Merci de votre aide.
Bonjour,
Tu utilises quelle carte?
Le programme n'est pas chargé au démarrage (il est en mémoire flash), c'est sans doute l'initialisation qui est longue. Essaies de placer ton affichage au début du setup().
J'utilise une Arduino mega. j'ai déjà essayé d'afficher le message au début du setup(), mais l'initialisation ce fait quand même avant l'affichage. D'ailleurs au démarrage le programme situé en flash ne se charge pas vers la mémoire SRAM ?
essayez un code du genre:
#include <LiquidCrystal_I2C.h> // https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/blob/master/LiquidCrystal_I2C.h
const uint8_t LCDI2CAddress = 0x3F;
const uint8_t nbCols = 20;
const uint8_t nbLines = 4;
LiquidCrystal_I2C lcd( LCDI2CAddress, nbCols, nbLines); // my LCD is at I2C address 0x3F, 20 cols, 4 rows
void setup() {
lcd.begin();
lcd.backlight();
lcd.print("Hello World");
}
void loop() {}
si ça ne s'affiche pas assez vite pour vous alors il faut changer de techno
PetitKinder:
D'ailleurs au démarrage le programme situé en flash ne se charge pas vers la mémoire SRAM ?
Non, uniquement les constantes
Le bootloader est exécuté a la mise sous tension et attend un certain temps la communication pour télécharger un nouveau programme. Peut être que c'est ce que tu trouves trop long.
Rectification, peut importe la longueur du code (je viens de tester avec le code fournit par J-M-L), l'écran s'allume, n'affiche rien pendant 10 secondes, puis s'éteint une demi seconde pour se rallumer ensuite et afficher "Hello world". A quoi est dû se lapse de temps ?
Avec optiboot qui est installé maintenant sur les cartes récentes le délai introduit par le bootloader est réduit.
Le retard avant l'affichage dépend aussi de l'afficheur utilisé. Car si c'est un afficheur graphique le temps d'effacement de celui-ci peut être important.
Il faudrait nous donner plus de détail sur ta configuration et poster ton code
Bonjour
10 secondes c'est un peu long pour un temps d'attente du bootloader (le microcontrolleur attend au cas où on voudrait flasher/téleverser un nouveau programme, une fois le temps écoulé le programme démarre.
Pour faire disparaître ce temps d'attente éviter ' flasher à travers un adaptateur UBasp (environ 1€) et éliminer le bootloader, le programme perso démarrera immédiatement. l'UBasp est relmié au connecteur 6 pins ICSP des cartes Arduino.
Donc les 10 secondes viendraient uniquement du bootloader ? Sinon est ce que ça ne viendrait pas du fait que je sois connecté à un ordinateur ?
Ca parait beaucoup. En général le bootloader attend 2 ou 3 secondes.
alors c'est sans doute dû à l'initialisation de mon lcd.
Si tu nous donnais plus d'info sur ta configuration on pourrait donner des réponses plus pertinentes.