LCD met i2c werkt niet juist

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 44
Geregistreerd: 02 Aug 2015, 21:22

Re: LCD met i2c werkt niet juist

Berichtdoor bruu » 20 Dec 2015, 17:14

Ik heb de library gedownload en ge-installeerd en jouw sketch in de uno geupload en het werkt perfect.
Ik kan ook tekst die ik invoer met de seriele monitor op het display zetten.( zie foto's)
Het lijkt erop dat het probleem gezocht moet worden bij het display.
Is dat hd44780 compatible? Elders op dit forum heb je al aangegeven dat je andere aansluitpunten moest gebruiken om het display te laten werken.
Misschien moet je ook aansluitpunten tussen de i2c module en het lcd display verwisselen.
Henk
Bijlagen
i2clcdtest2.jpg
i2clcdtest2.jpg (50.84 KiB) 4948 keer bekeken
i2clcdtest1.jpg
i2clcdtest1.jpg (30.46 KiB) 4948 keer bekeken

Advertisement

Berichten: 19
Geregistreerd: 28 Nov 2015, 15:46

Re: LCD met i2c werkt niet juist

Berichtdoor Royy » 21 Dec 2015, 16:53

ik snap er niks van, ik heb nu 2 schermpjes waarvan 1 het er wel doet, en de ander niet.
de gene die het wel doet is van de conrad set, waarbij ik dus in een andere sketch een en ander moest aanpassen om hem werkend te krijgen, en het scherm dit ik dus in combinatie met de i2c heb besteld werkt niet.
ik had die van de conrad niet geprobeerd omdat ik er vanuit ging dat die niet zou werken vanwege die andere setup, maar die blijkt nu dus wel gewoon te werken.

onderstaand foto's van beide schermpjes, de eerste werkt wel en de 2e dus niet, ik zie wel uiterlijke verschillen maar weet niet precies waar ik naar moet kijken, jullie wel denk ik?

http://myalbum.com/album/nXoaC4vC4LyP
http://myalbum.com/album/PmTUugQGPUeq

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: LCD met i2c werkt niet juist

Berichtdoor nicoverduin » 21 Dec 2015, 19:05

Ik heb geen idee hoe je dit voor elkaar hebt gekregen..... Ik gebruik die schermpjes al jaren. Zowel de mag niks kosten types als de duurdere varianten en op een legio verschillende processoren. Nooit problemen...En je ziet een ander hetzelfde eigenlijk doen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 19
Geregistreerd: 28 Nov 2015, 15:46

Re: LCD met i2c werkt niet juist

Berichtdoor Royy » 21 Dec 2015, 19:19

ik heb ook geen enkel idee, maar ik ben al heel erg blij dat het nu werkt!

nu alleen nog even kijken hoe ik het voor elkaar ga krijgen dat de achtergrond verlichting continu blijft branden, nu gaat de verlichting heeeel kort even uit als ik de tekst verander, alsof hij bij het lcd.clear() verhaal ook de achtergrond verlichting uitschakelt en direct weer in schakelt.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: LCD met i2c werkt niet juist

Berichtdoor nicoverduin » 21 Dec 2015, 23:45

Ik begin het spoor een beetje kwijt te raken......
De geeetech variant is een gewone lcd met de standaard driver. Maar de code die jij aangeeft werkt niet met die library. Dan had je compiler errors gekregen. Tenminste als je versie 1-1 gebruikt.
Het gaat al mis bij de constructor.
De .h van de geeetech lib bevat:
cpp code
//DFRobot.com
#ifndef LiquidCrystal_I2C_h
#define LiquidCrystal_I2C_h

#include <inttypes.h>
#include "Print.h"
#include <Wire.h>

// commands
#define LCD_CLEARDISPLAY 0x01
#define LCD_RETURNHOME 0x02
#define LCD_ENTRYMODESET 0x04
#define LCD_DISPLAYCONTROL 0x08
#define LCD_CURSORSHIFT 0x10
#define LCD_FUNCTIONSET 0x20
#define LCD_SETCGRAMADDR 0x40
#define LCD_SETDDRAMADDR 0x80

// flags for display entry mode
#define LCD_ENTRYRIGHT 0x00
#define LCD_ENTRYLEFT 0x02
#define LCD_ENTRYSHIFTINCREMENT 0x01
#define LCD_ENTRYSHIFTDECREMENT 0x00

// flags for display on/off control
#define LCD_DISPLAYON 0x04
#define LCD_DISPLAYOFF 0x00
#define LCD_CURSORON 0x02
#define LCD_CURSOROFF 0x00
#define LCD_BLINKON 0x01
#define LCD_BLINKOFF 0x00

// flags for display/cursor shift
#define LCD_DISPLAYMOVE 0x08
#define LCD_CURSORMOVE 0x00
#define LCD_MOVERIGHT 0x04
#define LCD_MOVELEFT 0x00

// flags for function set
#define LCD_8BITMODE 0x10
#define LCD_4BITMODE 0x00
#define LCD_2LINE 0x08
#define LCD_1LINE 0x00
#define LCD_5x10DOTS 0x04
#define LCD_5x8DOTS 0x00

// flags for backlight control
#define LCD_BACKLIGHT 0x08
#define LCD_NOBACKLIGHT 0x00

#define En B00000100 // Enable bit
#define Rw B00000010 // Read/Write bit
#define Rs B00000001 // Register select bit

class LiquidCrystal_I2C : public Print {
public:
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
void clear();
void home();
void noDisplay();
void display();
void noBlink();
void blink();
void noCursor();
void cursor();
void scrollDisplayLeft();
void scrollDisplayRight();
void printLeft();
void printRight();
void leftToRight();
void rightToLeft();
void shiftIncrement();
void shiftDecrement();
void noBacklight();
void backlight();
void autoscroll();
void noAutoscroll();
void createChar(uint8_t, uint8_t[]);
void setCursor(uint8_t, uint8_t);
#if defined(ARDUINO) && ARDUINO >= 100
virtual size_t write(uint8_t);
#else
virtual void write(uint8_t);
#endif
void command(uint8_t);
void init();

////compatibility API function aliases
void blink_on(); // alias for blink()
void blink_off(); // alias for noBlink()
void cursor_on(); // alias for cursor()
void cursor_off(); // alias for noCursor()
void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight()
void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar()
void printstr(const char[]);

////Unsupported API functions (not implemented in this library)
uint8_t status();
void setContrast(uint8_t new_val);
uint8_t keypad();
void setDelay(int,int);
void on();
void off();
uint8_t init_bargraph(uint8_t graphtype);
void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end);
void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end);


private:
void init_priv();
void send(uint8_t, uint8_t);
void write4bits(uint8_t);
void expanderWrite(uint8_t);
void pulseEnable(uint8_t);
uint8_t _Addr;
uint8_t _displayfunction;
uint8_t _displaycontrol;
uint8_t _displaymode;
uint8_t _numlines;
uint8_t _cols;
uint8_t _rows;
uint8_t _backlightval;
};

#endif


Echter in jouw voorbeeld staat:
cpp code
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Nergens komt deze constructor voor in de lijst van mogelijke functies.
Heb jij nu soms verschillende varianten van die I2C libraries in jou folder staan? Of nog erger ook in de ide libraries?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 19
Geregistreerd: 28 Nov 2015, 15:46

Re: LCD met i2c werkt niet juist

Berichtdoor Royy » 22 Dec 2015, 00:19

Ik heb geen enkel idee, hoe kom ik daar achter??

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: LCD met i2c werkt niet juist

Berichtdoor nicoverduin » 22 Dec 2015, 00:39

in de folder mijn documenten/Arduino/libraries staan al je gebruiker libraries. Als je de libraries die je download niet daar hebt neergezet, maakt hij alleen gebruik van libraries die in de IDE staan. Als je ze in het verleden daar hebt gezet, dan kun je beter een herinstallatie van de IDE beginnen omdat je in feite daar na installatie helemaal vanaf moet blijven.
Als je verschillende hebt gedownload, dan weet de compiler niet welke hij moet gebruiken en zou het zo maar eens kunnen dat je een library wel download maar dat hij consequent de oude blijft pakken. Dan kun je de oude beter eerst verwijderen en dan de juiste gebruiken.
Mocht je gebruik maken van de Arduino/Eclipse IDE dan kun je de wel juiste selecteren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 30 gasten