1604 lcd display probleempje.

Hardware die niet past in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 66
Geregistreerd: 02 Okt 2015, 22:31

1604 lcd display probleempje.

Berichtdoor bossie » 14 Nov 2015, 16:33

Voor mijn Staionsklok projectje ben ik aan het stoeien met de 16x4 regel lcd display.
Origineel ben ik met een 2 regel display begonnen, maar omdat ik de zomer en wintertijd in één oog opslag wil zien, dacht ik:
"oh even de 2 regel display vervangen door een 4 regel uitvoering"
Ik had die 4 regel display nog liggen, het is een
LCD 16x4 1604 Character LCD Display Module LCM Blue Blacklight 5V Arduino

De display is als volgt aangesloten op de Arduino Uno

* 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
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

De display definities zijn:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 4);

En het lukt mij maar niet om bij de regels 3 en 4 de tekst op de eerste positie te laten beginnen.
Ik gebruik de volgende syntax:

lcd.setCursor(0,2);lcd.print
en
lcd.setCursor(0,3);lcd.print

En dan beginnen beide regels op pos 5 :shock:

Wie kan me een eindje op weg helpen?

grt Piet.

Advertisement

Berichten: 97
Geregistreerd: 05 Nov 2014, 22:04

Re: 1604 lcd display probleempje.

Berichtdoor MarcelK » 14 Nov 2015, 16:41

bossie schreef:Voor mijn Staionsklok projectje ben ik aan het stoeien met de 16x4 regel lcd display.
Origineel ben ik met een 2 regel display begonnen, maar omdat ik de zomer en wintertijd in één oog opslag wil zien, dacht ik:
"oh even de 2 regel display vervangen door een 4 regel uitvoering"
Ik had die 4 regel display nog liggen, het is een
LCD 16x4 1604 Character LCD Display Module LCM Blue Blacklight 5V Arduino

De display is als volgt aangesloten op de Arduino Uno

* 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
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

De display definities zijn:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 4);

En het lukt mij maar niet om bij de regels 3 en 4 de tekst op de eerste positie te laten beginnen.
Ik gebruik de volgende syntax:

lcd.setCursor(0,2);lcd.print
en
lcd.setCursor(0,3);lcd.print

En dan beginnen beide regels op pos 5 :shock:

Wie kan me een eindje op weg helpen?

grt Piet.


Heb je niet per ongeluk een 20x4 scherm ?
Persoonlijk ken ik geen 16x4, wel een 16x2 en een 20x4

Gebruikers-avatar
Berichten: 66
Geregistreerd: 02 Okt 2015, 22:31

Re: 1604 lcd display probleempje.

Berichtdoor bossie » 14 Nov 2015, 16:46

Neen Marcel het is een echte 1604 zie https://www.google.nl/search?q=LCD+16x4

grt Piet.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 1604 lcd display probleempje.

Berichtdoor shooter » 14 Nov 2015, 21:11

probeer eens liqquidcrystal440
ik denk dat de lib die je nu gebruikt inderdaad denkt dat het 4x20 is.
en daardoor schuift.
paul deelen
shooter@home.nl

Berichten: 97
Geregistreerd: 05 Nov 2014, 22:04

Re: 1604 lcd display probleempje.

Berichtdoor MarcelK » 14 Nov 2015, 21:13

bossie schreef:Neen Marcel het is een echte 1604 zie https://www.google.nl/search?q=LCD+16x4

grt Piet.

Weer wat geleerd ;)

Gebruikers-avatar
Berichten: 66
Geregistreerd: 02 Okt 2015, 22:31

Re: 1604 lcd display probleempje.

Berichtdoor bossie » 14 Nov 2015, 22:41

Dit is het effect waar ik het over heb.
Afbeelding


Dit is de code voor de onderste 2 regels.
Op de code is zat aan te merken, maar ik heb het zo gedaan om de output te formatteren en te zien wat er gebeurt.

Code: Alles selecteren
    lcd.setCursor(0,2);lcd.print("0");
    lcd.setCursor(2,2);lcd.print(":0");
    lcd.setCursor(5,2);lcd.print(":0"); 

    if (hour() < 10) {
      lcd.setCursor(1,2);lcd.print(hour()-1);
    }
    else {
      lcd.setCursor(0,2);lcd.print(hour()-1);
    }

    if (minute() < 10)
    {
      lcd.setCursor(4,2);lcd.print(minute());
    } 
    else {
      lcd.setCursor(3,2);lcd.print(minute());
    }
    if (second() < 10)
    {
    lcd.setCursor(7,2);lcd.print(second());
    }
   else {
    lcd.setCursor(6,2);lcd.print(second());
    }
   
  if (day() < 10) {                        // dag kleiner dan 10
    lcd.setCursor(0,3);lcd.print("0");   
    lcd.setCursor(1,3);lcd.print(day());
    }
  else {                                  // dag groter of gelijk aan 10
    lcd.setCursor(0,3);lcd.print(day());   
  }
  lcd.setCursor(3,3);lcd.print(monthName[month()-1]);
  lcd.setCursor(7,3);lcd.print(year());


Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: 1604 lcd display probleempje.

Berichtdoor Rudi » 15 Nov 2015, 09:58

Ik meende mij dergelijk probleem ooit te hebben gelezen. Heb het even opgesnord voor u.
Kijk eens op http://forum.arduino.cc/index.php?topic=63038.15, oplossing door het aanpassen van de library, zie tread #18 daar.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Gebruikers-avatar
Berichten: 66
Geregistreerd: 02 Okt 2015, 22:31

Re: 1604 lcd display probleempje.

Berichtdoor bossie » 15 Nov 2015, 13:05

Hi Rudi,
dank voor je antwoord.
Op mijn zoektocht naar een oplossing was ik die ook tegengekomen.
Ik heb de code opgenomen in de LiquidCrystal.cpp library source, maar krijg dan compilatie errors.

\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:85: error: 'myLiquidCrystal' has not been declared
\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp: In function 'void setCursor(uint8_t, uint8_t)':
\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:91: error: '_numcolumns' was not declared in this scope
\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:94: error: '_numlines' was not declared in this scope
\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:98: error: 'command' was not declared in this scope


Maar dit komt waarschijnlijk door mijn gebrek aan CPP kennis.
Ik zal nog ergens wat declaraties moeten verzorgen, vermoed ik.
Hoe los ik dat op?

grt Piet.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 1604 lcd display probleempje.

Berichtdoor shooter » 15 Nov 2015, 15:31

eb je myliquidcrystal wel gedeclareerd?
en ja iets veranderen is vaak wel te doen, maar heeft wel problemen waar je tegen aan loopt zoals je ziet, geen probleem van maken, maar even teruggaan en alles nalezen
zelfs de _ _ hebben een reden
ook de ::: etc.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 66
Geregistreerd: 02 Okt 2015, 22:31

Re: 1604 lcd display probleempje.

Berichtdoor bossie » 15 Nov 2015, 16:45

shooter schreef:eb je myliquidcrystal wel gedeclareerd?

Neen dat is wel duidelijk toch, de eerste regel van de foutboodschappen zegt immers:
\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:85: error: 'myLiquidCrystal' has not been declared

De code uit de bijdrage door Rudi genoemd, heb ik in de library file LiquidCrystal.cpp opgenomen

De vraag voor mij is hoe en waar declareer ik myLiquidCrystal.

Ik heb te weinig C en CPP bagage om dat zelf uit te kunnen vogelen.

grt Piet.

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten