Close

Připojení displeje 1602 s převodníkem I2C

Úvodní stránka Fórum Vaše projekty Arduino Připojení displeje 1602 s převodníkem I2C

  • Toto téma obsahuje celkem 22 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel Jerry a poslední změna proběhla před 7 roky a 10 měsíci.
Aktuálně je na stránce zobrazeno 23 příspěvků - 1. až 23. (celkem z 23)
  • Autor
    Příspěvky
  • #10309
    Jerry
    Účastník

    Zdravím, už nějakou dobu se marně snažím zprovoznit zmiňovaný displej. Displej a převodník jsem si letoval sám po kontrole téměř pod mikroskopem opraveny dva skoro stuďáky. Zkoušel jsem už asi pět knihoven a na žádné se to nespustilo. Adresu převodníku 0x3F jsem získal pomocí zde uvedeného testovacího programu.Po zapnutí displeji svítí podsvícení a po nastavení trimru všech 16 tečkovaných obdélníčků ale pouze v prvním řádku. Po kompilaci se program nahraje displej zhasne jednou problikne (myslím posvícení) obdélníčky zůstanou jak byly ale bez podsvícení a nic se neděje. V každém programu se to chová trochu jinak, ale písmenka to rozhodně neukazuje.Zkoušeno na dvou UNO a jednom NANU pokaždé stejné Nemáte prosím někdo podobnou zkušenost. Díky za každou radu.

    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
     
    // vytvoří objekt lcd a nastaví jeho adresu
    // 0x3F a 16 zanků na 2 řádcích
    LiquidCrystal_I2C lcd(0x3F,16,2);  
     
    void setup()
    {
      lcd.init();// inicializuje displej
       
      lcd.backlight(); // zapne podsvětlení
      lcd.print("Ahoj lidi..."); // vypíše text
    }
     
    void loop()
    {
    }
    
    
    
    

    //POZOR – na verzi Arduino IDE 1.0.5 většinou nejde přeložit,
    // prosím, použijte novější verzi 1.0.6, děkuji.
    //

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

    //nastavíme adresu a typ displeje
    LiquidCrystal_I2C lcd(0x3F,20,4); // nastavení adresy (0x3F) je důležité!!!

    void setup()
    {
    lcd.init(); // initializace lcd

    // Vypíšeme nějaké texty na jednotlivé řádky, adresace je od 0, ne od 1.
    lcd.backlight();
    lcd.setCursor ( 0, 0 );
    lcd.print(“ http://www.santy.cz „);
    lcd.setCursor ( 0, 1 );
    lcd.print(“ Test LCD 2004 I2C „);
    lcd.setCursor ( 0, 2 );
    lcd.print(“ Arduino-Home „);
    lcd.setCursor ( 0, 3 );
    lcd.print(“ http://www.santy.cz „);
    }

    void loop()
    {
    }`

    Díky

    #10310
    ArduXPP
    Účastník

    Už se to tu psalo, stačí otočit trimmer. Je ze zadu u toho převodníku.

    #10311
    Jerry
    Účastník

    Myslím že ne psal jsem v textu že trimr jsem nastavil že rastr svítí je to vidět i na videích. Je to v podstatě na max.

    #10313
    ArduXPP
    Účastník

    Tak ještě zkusit tohle – http://playground.arduino.cc/Main/I2cScanner

    #10314
    ArduXPP
    Účastník

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

    // vytvoří objekt lcd a nastaví jeho adresu
    // 0x20 a 16 zanků na 2 řádcích
    LiquidCrystal_I2C lcd(0x20,16,2);

    void setup()
    {
    lcd.init();// inicializuje displej

    lcd.backlight(); // zapne podsvětlení
    lcd.print(„text“); // vypíše text
    }

    void loop()
    {
    }

    Místo 0x20 se dopíše co ukázal skener

    #10316
    Jerry
    Účastník

    To jsem taky již psal v textu. Převodník nalezen adresa změněna na 0x3F. Pokud se zadá jakákoli jiná adresa modul nereaguje vůbec.

    #10317
    ArduXPP
    Účastník

    Tak pak ještě vyzkoušet tenhle kod :

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

    #define I2C_ADDR 0x3F
    #define BACKLIGHT_PIN 7
    #define En_pin 4
    #define Rw_pin 5
    #define Rs_pin 6
    #define D4_pin 0
    #define D5_pin 1
    #define D6_pin 2
    #define D7_pin 3

    #define LED_OFF 0
    #define LED_ON 1
    LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

    void setup()
    {
    lcd.begin (16,2); // initialize the lcd
    // Switch on the backlight
    lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);
    lcd.setBacklight(LED_ON);
    }

    void loop()
    {

    // Reset the display
    lcd.clear();
    delay(1000);
    lcd.home();

    // Print on the LCD
    lcd.backlight();
    lcd.setCursor(0,0);
    lcd.print(„Hello, world!“);
    delay(8000);
    }

    Musí se použít knihovna tahle https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads .

    #10318
    Jerry
    Účastník

    Díky vyzkouším

    #10319
    Jerry
    Účastník

    Nevím proč je tam definovaných tolik pinů a hlásí mi to chybu při kompilaci

    #10320
    Kysa
    Účastník

    Nevím jestli jsem dobře pochopil, který kód je v arduinu. Protože pokud je to

    //POZOR – na verzi Arduino IDE 1.0.5 většinou nejde přeložit,
    // prosím, použijte novější verzi 1.0.6, děkuji.
    //

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

    //nastavíme adresu a typ displeje
    LiquidCrystal_I2C lcd(0x3F,20,4); // nastavení adresy (0x3F) je důležité!!!

    void setup()
    {
    lcd.init(); // initializace lcd

    // Vypíšeme nějaké texty na jednotlivé řádky, adresace je od 0, ne od 1.
    lcd.backlight();
    lcd.setCursor ( 0, 0 );
    lcd.print(“ http://www.santy.cz „);
    lcd.setCursor ( 0, 1 );
    lcd.print(“ Test LCD 2004 I2C „);
    lcd.setCursor ( 0, 2 );
    lcd.print(“ Arduino-Home „);
    lcd.setCursor ( 0, 3 );
    lcd.print(“ http://www.santy.cz „);
    }

    void loop()
    {
    }`

    tak tady se používá display 4×20 znaků.

    #10321
    Jerry
    Účastník

    IDE mám 1.8.0.

    #10322
    Kysa
    Účastník

    O IDE nejde. skuste toto

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

    //nastavíme adresu a typ displeje
    LiquidCrystal_I2C lcd(0x3F,16,2); // nastavení adresy (0x3F) je důležité!!!

    void setup()
    {
    lcd.init(); // initializace lcd

    // Vypíšeme nějaké texty na jednotlivé řádky, adresace je od 0, ne od 1.
    lcd.backlight();
    lcd.setCursor ( 0, 0 );
    lcd.print(„Test“);
    lcd.setCursor ( 0, 1 );
    lcd.print(„LCD“);
    }

    void loop()
    {
    }

    #10323
    Jerry
    Účastník

    Chyba při kompilaci deky

    #10324
    Jerry
    Účastník

    já už ani nevím pořádně co tam mám za knihovnu a kde je pořádně vymazat už jsem jich nahrál asi 11 a mám v tom neskutečnej guláš

    #10326
    Jerry
    Účastník

    A proč po zapnutí svítí jen první řádek ? To tak má být nebo už tady je něco špatně ?
    No nic koupím jiný a uvidím tohle není normální. Díky

    #10328
    Vojtěch Vosáhlo
    Účastník

    No něco je určitě špatně ale proč hned kupovat nový displej? Zkuste odpájet i2c převodník a řídit displej přes piny na něm. Alespoň zjistíte kde je chyba.

    #10329
    Chucky77
    Účastník

    Tak s tím jsem se taky přál. Teď už mě to jede. A mám i dva stejný převodníky na jednom UNU. Jen u jednoho jsem změnil adresu. Večer když tak mohu postnout knihovny i program.
    Knihovny originální jsou v program files, uživatelské pak v dokumentech.
    Ondřej

    Odesláno z mého Lenovo P70-A pomocí Tapatalk

    #10333
    posjirka
    Účastník

    a co zkusit nechat zapnout a vynout podsviceni lcd? to taky jede na prevodnik a pokud ani to nepojede je spatne knihovna nebo prevodnik. udelej proste jednoduchy blik program. kdyby toto fungovalo tak nektere lcd jsou citlive kdyz nemaji volne piny uzemnene. je otazkou jak je to reseno na prevodniku….

    #10334
    posjirka
    Účastník

    predpokladam ze mas spravne propoje mezi arduinem a prevodnikem.

    #10336
    Jerry
    Účastník

    Zapojení jsem zkusil i přehodit ale to nereaguje vůbec

    #10340
    Chucky77
    Účastník

    Ten program co máš v prvním příspěvku funguje dobře. Není asi důvod zkoušet něco jiného.
    Mám IDe 1.6.12 a knihovny přikládám. Zkus vymazat všechny co k liquid I2c máš a zkusit to znovu.
    Obvykle jsou v C:\Users\ doplnit \Documents\Arduino\libraries

    V knihovně
    LiquidCrystal_I2C.cpp
    je změna z 0 na 1 v této části kódu

    #define printIIC(args) Wire.write(args)
    inline size_t LiquidCrystal_I2C::write(uint8_t value) {
    send(value, Rs);
    return 1;

    Tak hodně zdaru.
    Ondřej

    #10348
    Jerry
    Účastník

    Díky jak bude čas zkusím

    #10352
    Jerry
    Účastník

    Ondro díky moc. Knihovnu jsem ani měnit nemusel jen jsem přepsal řádek
    return 0; na 1 a displej funguje. Moje více něž týdenní trápení skončilo. Nevím jestli je to chyba i ostatních knihoven (ale asi ano protože jsem jich postahoval fůru), ale důležitý je, že se to vyřešilo a snad to pomůže i dalším se stejným problémem. Ještě jednou díky 🙂

Aktuálně je na stránce zobrazeno 23 příspěvků - 1. až 23. (celkem z 23)
  • Pro reakci na toto téma se musíte přihlásit.