Go Down

Topic: LCD 16x4 , Type 1604A (Read 1 time) previous topic - next topic

Ik heb een simple sketch gemaakt en kom tot de ontdekking dat deze vreemd doet in row 3 en 4 ,
In Row 1 en 2 gaat alles nog goed namelijk !!
Ik moet nu de waarden negatief gaan maken wanneer ik de text in Row 3 en 4 gelijk met row 1 en 2 wil krijgen ,
Ik heb op twee manieren gekeken of het probleem lag aan de I2C , maar dat is niet zo ....
Heb dus een Test gedaan met een LCD I2C en een Test met de liquid crystal setup ( 6 draden )

Enig advies wat er mis gaat ?

Code: [Select]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,3);  // 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!");
  lcd.setCursor(-4,3);
  lcd.print("Hello, world!");
  lcd.blink();
    lcd.setCursor(-4,2);
  lcd.print("Hello, world!");
  lcd.blink();
    lcd.setCursor(-4,1);
  lcd.print("Hello, world!");
  lcd.blink();
}

void loop()
{
}
Patrick ,The Netherlands

nicoverduin

Met oplossing:

http://arduinoforum.nl/viewtopic.php?f=6&t=1499&p=10285&hilit=16x4#p10285
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Hi Nico,

Hartelijk bedankt voor de link ,
Ik zie dat je de Lib hiervoor hebt aangepast , dit is voor mij nog te hoog gegrepen ....  :o

Maar fijn dat het voor mij nu zo is opgelost ... ga weer verder met experimenteren ....

Thanks

Patrick
Patrick ,The Netherlands

Hi Nico,

ik heb nog eens zitten experimenteren maar krijg een foutmelding ?

het valt mij op dat hij de LiquidCrystal _16x4 niet herkent in de Library ?
LiguidCrystal wordt namelijk niet oranje bij mij ..... ??
En krijg hierdoor dus een foutmelding ....

bijgaand het testprogramma
cpp code

// include the library code:
#include "Arduino.h"
#include <LiquidCrystal_16x4.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, 4);
  // Print a message to the LCD.
  lcd.setCursor(0,0);
  lcd.print("Regel 1");
  lcd.setCursor(0,1);
  lcd.print("Regel 2");
  lcd.setCursor(0,2);
  lcd.print("Regel 3");
  lcd.setCursor(0,3);
  lcd.print("Regel 4");
}
 
void loop() {
 
}
Patrick ,The Netherlands

nicoverduin

En waar heb je die library dan gestopt? Want in de link staan 2 files toegevoegd die je in een library of zo moet zetten. Waar heb je die dan neergezet?
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

nicoverduin

#5
Apr 03, 2016, 03:32 pm Last Edit: Apr 03, 2016, 03:36 pm by nicoverduin
Of je past die libary liquidCrystal.cpp zelf ff aan.
Je komt daar een routine tegen als volgt:

Code: [Select]
void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{
  const size_t max_lines = sizeof(_row_offsets) / sizeof(*_row_offsets);
  if ( row >= max_lines ) {
    row = max_lines - 1;    // we count rows starting w/0
  }
  if ( row >= _numlines ) {
    row = _numlines - 1;    // we count rows starting w/0
  }
   
  command(LCD_SETDDRAMADDR | (col + _row_offsets[row]));
}


Die vervang  je door

Code: [Select]
void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{
  uint8_t row_offsets[4];
 
  row_offsets[0]=0x00;
  row_offsets[1]=0x40;
  row_offsets[2]=row_offsets[0]+_numColumns;
  row_offsets[3]=row_offsets[1]+_numColumns;
 
  if ( row > _numlines ) {
    row = _numlines-1;    // we count rows starting w/0
  }
 
  command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}


En dan kun je weer gewoon liquidCrystal.h gebruiken,.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Hi Nico,

In de Folder :

C:\ELECTRONICS\Arduino_1.06\LIBRARIES ..... net als alle andere libraries .....

Patrick ,The Netherlands

nicoverduin

En daar zit dus de fout in.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

septillion

Libraries die je download moet je plaatsen in een map (met de library naam) in de folder libraries in je sketchbook (waar je sketches dus staan, standaar \documents\Arduino\). De folder lararies in de IDE is alleen voor de libraries die komen met de IDE.

Het oranje worden of niet heeft geen enkele betekenis voor de code. Dat is puur de IDE die sommige keywords een ander kleurtje maakt voor jou. Maar hij maakt gerust ook verkeerde dingen oranje. Enige wat geld is de error berichten tijdens compilen.

Overigens is 1.0.6 ondertussen wel een beetje oud... Ik zou de overstap maken naar een nieuwere. Okay, de laatste versies hebben soms ook wat problemen maar ben zelf tevreden over 1.6.4
Use fricking code tags!!!!
I want x => I would like x, I need help => I would like help, Need fast => Go and pay someone to do the job...

NEW Library to make fading leds a piece of cake
https://github.com/septillion-git/FadeLed

Go Up