Bonjour,
Je rencontre actuellement des difficultés à afficher du texte sur mon écran lcd 20x4 ( dont je n’ai pas le datasheet).
Le problème que je rencontre est que je n’arrive pas à afficher du texte. De plus il n’y a que la ligne 1 et 3 qui affichent les carrés blancs lorsque je varie le contraste à l’aide du potentiomètre.
Merci de vos retours
Salut
Je pense qu'il faudrait faire un petit effort de documentation :
- câblage
- code (entre balise SVP)
@+
Ok,
Je transfert cela dès ce soir lorsque je serai face à mon ordi !
Bonne @près midi ensoleillée !!!
Re !
alors concernant le câblage (je possède une arduino mega 2560):
Vss = masse
vdd = +5V
V0 = signal du potentiomètre
RS = pin digital 22
RW = masse)
E = pin pwm 4
D0->D3 non branchés
D4 = pin pwm 7
D5 = pin digital 24
D6 = pin digital 23
D7 = pin pwm 6
A = +5V
k = masse
Concernant le code utilisé le voici :
Le code correspondant au LCD est le suivant :
#include <Servo.h>// librairie servo
#include<LiquidCrystal.h> //librairie de l'écran LCD
LiquidCrystal lcd(4,5,6,7,22,23,24);//pin utilisés par l'écran LCD
int switchState=0;//intégral état bouton démarrage
int switchState2=0;//intégral état bouton de marche arrière
const int servo1 = 3; // pin pwm 3 servo pan tilt
const int servo2 = 2;// pin pwm 2 servo pan tilt
const int joyH = A14;// pin ana 14 joystick pan tilt
const int joyV = A15;// pin ana 15 joystick pan tilt
int servoVal; // integral valeur servo pan tilt
Servo myservo1; // nom servo pan tilt
Servo myservo2; // nom servo pan tilt
const int servo3 = 4;// pin pwm 4 servo gps
Servo myservo3;// nom du servo du gps
void setup() {
pinMode(50,INPUT);// pin digi 50 entrée bouton démarrage carte voiture
pinMode(52,OUTPUT);// pin digi 52 commande relai démarrage carte voiture
pinMode (51, INPUT);//pin digi 51 entrée bouton marche arrière levier de vitesse
myservo1.attach(servo1); // attache servo pan tilt
myservo2.attach(servo2); // attache servo pan tilt
myservo3.attach(servo3); //attach servo gps
}
void loop() {
switchState=digitalRead(50); //lecture bouton démarrage
if
(switchState==LOW){//pas d'appui sur le bouton
// code du relai de la cartede la voiture à l'arret
digitalWrite(52,HIGH); // relai non enclanché
// code pour la position rentrée du gps
myservo3.write(0); // gps rentré
}
else{//appui sur le bouton
// code pour le relai de la carte de la voiture en marche
digitalWrite(52,LOW);// relai enclenché
// code pour l'écran lcd
lcd.begin(20,4);
lcd.setCursor(4,1);
lcd.print("d'Emilio");
lcd.setCursor(4,0);
lcd.print("AUDI R18");
// code pour la sortie du gps
myservo3.write(110); //gps sorti
}
{
switchState2=digitalRead(51); //lecture bouton marche arrière levier de vitesse
if
(switchState2==LOW){//pas de marche arrière enclenchée
}
else{ // marche arrière enclenchée
// code pour l'utilisation du pan tilt
servoVal = analogRead(joyH); // lire valeur horizontale joystick pan tilt (valeur entre 0 et 1023)
servoVal = map(servoVal, 0, 1023, 0, 180); // transformation valeur entre 0 et 180°
myservo2.write(servoVal);
servoVal = analogRead(joyV); // lire la valeur vertical du joystick
servoVal = map(servoVal,0 , 1023,100 , 180); //transformation valeur entre 0 et 180°
myservo1.write(servoVal);
delay(15); // délai de 15 milli secondes
}
}}
et le problème rencontré est que le LCD s'éteint des que l'arduino s'allume ( il s'éteint environ 1 sec après la mise sous tension de l'arduino).
Lorsqu'il est allumé (sur la seconde de démarrage il n'y a que la ligne 1 et 3 ou les carré blancs apparaissent).
#include<LiquidCrystal.h> //librairie de l'écran LCD
LiquidCrystal lcd(4,5,6,7,22,23,24);//pin utilisés par l'écran LCD
5 ne sert a rien puisque RW est cablé au gnd, le test R/W est utilisé dans des cas tres spécifiques
en 4 bits lcd( RS, RW (inutile), E, D4, D5, D6, D7), déjà que tu dis avoir cablé 22 en RS ?
d'apres ton cablage ce serait LiquidCrystal lcd(22,4,7,24,23,6);
pourquoi un branchement aussi disparate, utiliser des sorties qui se suivent ou l'ordre des pins du lcd
Et la pin 4 est utilisée pour le LCD et pour le servo3...
bricoleau:
Et la pin 4 est utilisée pour le LCD et pour le servo3...
bien vu, j'ai pas été plus loin que la declaration lcd
Bonjour,
Effectivement j’ai attribué 2 fois la même pin ... pas bien ...lol
Concernant le montage disparate c’est dû au montage que j’ai suivi ( issu du starterkit avec lequel j’ai débuté).
Dans le plan de montage que j’ai suivi certains pins du LCD sont connectés à des pins PWM et d’autres sont connectés à des pins digital. Et sur la Meca entre les pwm et les digital se trouvent les pins de communication.
J’ai supprimé de mon code le pin4 car déjà utilisé et j’ai libéré là pin Rs et le pin22.
Cela m’affiche toujours la ligne 1 et 3 avec des carrés blancs et n’affiche pas mon texte.
Merci de votre retour.