lcd 20x4 probleem

hallo,
ik heb een probleem met mijn blacklight van mijn 20x4 lcd. En de code.

dit is hoe het er nu uit ziet :frowning:

de interface lijst:
-1 GND
-2 + 5v
-3 10k resistor to GND
-4 pin 12
-5 pin 11
-6 pin 10
-7 pin 9
-8 pin 8
-9 pin 7
-10 pin 6
-11 pin 5
-12 pin 4
-13 pin 3
-14 pin 2
-15
-16

de code code:

/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

Uw contrast staat niet goed, probeer van pin3 een 10K weerstand naar de 5V bij te zetten.
Kans is groot dat het dan te licht gaat zijn, met de waarde kan je experimenteren of beter plaats een potmetertje van 10K tussen GND en de 5V, de loper op pin 3 om het contrast in te stellen.

grts P

ik heb er een 10k potentiometer tussen zitten

Hoi.

Ik had het Engelstalige onderwerp al gezien, en gereageerd.
Daarop heb jij waarschijnlijk ontdekt dat er een Nederlandstalig deel is, en 'm hier ook een keer neergezet.

De foto is niet heel duidelijk door de flits van je telefoon en de vingerafdrukken zo te zien.
Ik kan aan die foto niet echt zien dat de backlight niet goed is, want de flits maakt licht zodat de karakters wel zichtbaar zijn.
Maar in het andere onderwerp heb je verteld dat je pinnen 15 en 16 niet hebt aangesloten.
Die zijn juist bedoeld voor de backlight, dus als je die niet aansluit, heb je ook geen backlight.
De meeste (maar niet alle) LCD modules zijn zo gemaakt dat je hier gewoon 5 volt op aan moet sluiten om licht te maken.
Als dit niet een van die meesten is, dan moet je er ook een weerstand tussen zetten.

Maar ik zie wel meer dat er mis gaat.

De eerste keer dat je een LCD gaat proberen, gebruik je natuurlijk de Hello World sketch om te leren van dat voorbeeld.
Maar nu heb je iets heel anders staan op je scherm.
Alleen, als je heel goed kijkt, zie je wel dat het zelfde patroon te herkennen is in wat er op je scherm staat.
In plaats van de h staat er een l, en in plaats van alle l'en staan er m's.
Maar dat lijkt geen vaste afwijking te zijn (het verschil tussen een h en een l is 4, maar tussen een l en een m is dat maar 1).
Ik vermoed dat je de verbindingen in de module gestoken hebt, maar niet gesoldeerd.
Daardoor krijg je dus geen goede verbinding en dus ook geen goede overdracht van de data die je naar je scherm stuurt.
Dus zorg er ook voor dat je de verbindingen op een goede wijze maakt, en niet maar half.

Verder heb je een 2004 scherm, maar vertel je je Arduino dat het een 1602 is.
Dat moet je in je sketch ook nog ff aanpassen want anders gebeuren er weer heel andere interessante dingen.
(Je kunt natuurlijk ook niet aanpassen en dan es zien wat er gebeurt, ook weer leerzaam...).

Mag ik vragen waarom je een LCD scherm hebt zonder I2c module? Het werkt zoveel makkelijker, gewoon 5 volt eraan, je SCL en SDA met een pull-up aan de I2c pinnen en gaan. Je hebt veel minder kans op fouten en bovenal maar 2 pinnen in gebruik op je Arduino ipv 15.

Just my 2 cents :wink:

Hoi even off topic.
Als je een I2c module gebruikt.
Kun je dan gewoon de normale commando's gebruiken voor het lcd.
Of moet je dan ook de code aanpassen?

Gaat op zo goed als op dezelfde manier, je moet alleen je I2c adresseren ipv je pinnen toewijzen.

Er staat standaard een sketch in je IDE.

Een standaard sketch is leuk als ie werkt, maar je moet wel opgeven hoe de pins zijn aangesloten.
Dus niet alleen maar het adres van je I2C module.
Het is niet voor niets dat hier enkele vragen per week over komen op het forum, en dat er een scanner sketch voor gemaakt is om de juiste aansluitingen te vinden.
Bij die aansluitingen gaat er het dus om welke pins van de chip zijn aangesloten aan welke pins van het display.

#define LCD_A (0x27)
//#define I2C_ADDR    0x27 // <<----- Add your address here.  Find it from I2C Scanner
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C	lcd(LCD_A,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

Nou weet ik niet zeker meer of ik niet toevallig een andere library heb gebruikt als degene die jij hebt gezien (er worden verschillende adviezen gegeven hier op het forum).
Maar ik vind geen voorbeeld voor een I2C display in de IDE, of ik weet niet waar ik naar moet zoeken.

Ik dacht dat ie standaard in de IDE zat maar ik had hem gedownload.

https://iprototype.nl/docs/lcd20x4-I2C-BL-arduino-library.rar

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

Je hoeft dus geen pins meer toe te wijzen, alleen je i2c adresseren.

En heb je het lcd scherm al aan de gang gekregen?
En op welke manier heb je dit nu gedaan?

Hai,

Ik heb ook een probleem met mijn LCD 20X4

Als ik nu op de knop blijf drukken , zie ik bvb eerst op de 2de rij allemaal x verschijnen en dan gaat het verder op lijn 4 om dan terug op lijn 1 te beginnen en dan op lijn 3 en dan van begin af aan

Hoe krijg ik het zo geprogrammeerd dat eerst de lijn 0 dan 1 dan 2 dan 3 en terug op O

Graag effe wat hulp gevraagt

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11, 5, 4, 3, 2);
int myKey=A2; // We gebruiken een analoge pin A2 en gebruiken hem als digital
int speaker=6; // Luidspreker sluiten we aan op Pin 6 en GND
int val=0; // De waarde van de Sleutel op en neer
int myTone=440; // Freq. van de toon

void setup() {
lcd.begin(20, 4);
lcd.setCursor(0, 1);
pinMode(myKey, INPUT);
pinMode(speaker,OUTPUT);

}

void loop() {

val=digitalRead(myKey);
if (val) keyIsDown();
if (!val) keyIsUp();

}

void keyIsDown() {
tone(speaker,myTone);
lcd.print ('X');
delay(100);
}

void keyIsUp() {
noTone(speaker);
lcd.print(' ');
//delay(100);
}

mvg

Dit soort displays werken inderdaad met karakter streams (1 -> 3 en 2-> 4). Dat hij op regel 2 begint is eigenlijk toeval. In werkelijkheid begint hij wel op regel 1 maar zolang jij geen toets indrukt genereer je ongelimiteerd x per seconden een spatie die je op het display zet. Je zult het programma toch wel iets anders moeten schrijven door bijvoorbeeld gebruik te maken van de cursor functie elke keer als je een karakter (of string) naar het display wil sturen.
Alleen zal het in zijn huidige vorm wel heel erg snel spaties gaan neerzetten.
Daarnaast zou ik een nieuwe post starten voor jouw probleem. Lijkt mij dat jouw vraag niets met de originele post te maken heeft.

warsteiner:
Beste wybert,

Pen 15 en 16 zijn inderdaad voor de backlight verlichting.
Verder zie ik ook op de foto dat je 8 data pennen aangesloten heb, dit hoeven er maar 4 te zijn.
Pen 5, 4, 3 en 2.

Lekker op tijd gereageerd..... ruim een jaar later :grin: :grin: :grin:

...Jij ziet spoken .....

Nope
Maar hij heeft zijn bericht verwijderd :grin: