Close

Display 2004

Úvodní stránka Fórum Hardware Displeje Display 2004

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

    Dobrý den, mám mega 2560 a I2C display 2004 když nahraji do arduina sketch tak všechny čtverce se rozsvíti a data jsou vydělitelné jenom pod uhlem je to normální?
    Děkuji Roman

    #7340
    havala4
    Účastník

    //Please download the Arduino library!
    //The link:http://www.dfrobot.com/image/data/DFR0154/LiquidCrystal_I2Cv1-1.rar
    //DFRobot.com
    //Compatible with the Arduino IDE 1.0
    //Library version:1.1
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    #if defined(ARDUINO) && ARDUINO >= 100
    #define printByte(args) write(args);
    #else
    #define printByte(args) print(args,BYTE);
    #endif

    uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
    uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
    uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
    uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
    uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
    uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
    uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
    uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4};

    LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display(All jumpers should be connected!)

    void setup()
    {
    // Serial.begin(57600);
    lcd.init(); // initialize the lcd
    lcd.backlight();

    lcd.createChar(0, bell);
    lcd.createChar(1, note);
    lcd.createChar(2, clock);
    lcd.createChar(3, heart);
    lcd.createChar(4, duck);
    lcd.createChar(5, check);
    lcd.createChar(6, cross);
    lcd.createChar(7, retarrow);
    lcd.home();

    lcd.setCursor(0, 0);
    for(int i = 0;i < 20; i++) lcd.printByte(6);
    lcd.setCursor(0, 1);
    lcd.printByte(6);
    lcd.print(“ Hello world „);
    lcd.printByte(6);
    lcd.setCursor(0, 2);
    lcd.printByte(6);
    lcd.print(“ i „);
    lcd.printByte(3);
    lcd.print(“ arduinos! „);
    lcd.printByte(6);
    lcd.setCursor(0, 3);
    for(int i = 0;i < 20; i++) lcd.printByte(6);
    // lcd.clear();

    }

    void loop()
    {

    }

    #7341
    Aleš
    Účastník

    Otočit trimrem nepomůže?

    #7342
    havala4
    Účastník

    Díky za radu vše funguje jak má.

    #9425
    Axamith
    Účastník

    Ahoj, mám podobný problém, LCD 20×4, v podstatě základní kód, IC2.
    Displej ale jen svítí a zobrazuje vyplněné čtverce. Dokonce jen 20×2 místo 20×4, jako by sudé řádky chyběly. Nastavení jasu trimrem nepomůže, zobrazuje od úplně tmavých čtverců o prázdný displej.. Testováno po IC2, na přímo zatím ne. Svítí takto i při jen připojeném napájení, bez sběrnice. Je to normální? Foceno s vypnutým podsvícením.

    Attachments:
    #9428
    Vojtěch Vosáhlo
    Účastník

    Rozhodně by se šiklo info o vašem programu a I2C čipu displeje.

    #9436
    Axamith
    Účastník

    Typ čipu (jejda, tam je písmenek):
    PCF8574AT
    AQ0675
    1 21
    kn04203

    Program jsem zkoušel podle LCD Displej.
    Kód:

    // LCD displej pres I2C
    // navody.arduino-shop.cz
    
    // knihovny pro LCD přes I2C
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    // nastavení adresy I2C (0x27 v mém případě),
    // a dále počtu znaků a řádků LCD, zde 20x4
    LiquidCrystal_I2C lcd(0x27, 20, 4);
    
    void setup()
    {
      // inicializace LCD
      lcd.begin();
      // zapnutí podsvícení
      lcd.backlight();
      // vytisknutí hlášky na první řádek
      lcd.print("->arduino-shop.cz<-");
      // nastavení kurzoru na první znak, druhý řádek
      // veškeré číslování je od nuly, poslední znak je tedy 19, 3
      lcd.setCursor ( 0, 1 );
      lcd.print("--------------------");
      lcd.setCursor ( 0, 2);
      lcd.print(" Test LCD pres I2C");
      lcd.setCursor ( 19, 3);
      lcd.print("!");
      delay(2000);
    }
    
    void loop()
    {
      // nastavení kurzoru na devátý znak, druhý řádek
      lcd.setCursor(8, 1);
      // vytisknutí počtu sekund od začátku programu
      lcd.print(millis() / 1000);
    }

    V každém případě mi není jasné, jestli má displej zobrazovat 2 řádky ze 4, už jen při připojeném napájení (ten počet je taky takový divný). Trimrem jsem schopen regulovat jas, od úplně tmavých čtverců po čistě prázdný displej. Propojkou na I2C zapnout/vypnout podsvícení.

    #9438
    Axamith
    Účastník

    Přikládám foto čipu sběrnice. Ještě bych se rád zeptal, k čemu jsou piny A0, A1, A2 na desce sběrnice, viz. foto.

    Attachments:
    #9443
    Luke_CZ
    Účastník

    A, nahrej do arduina i2c_scanner, ten ti ukáže na terminálu připojená zařízení na I2C sběrnici, pokud tam máš jen ten LCD, tak uvidíš jeho adresu ve tvaru 0xXX (pokud ho máš tedy dobře připojený). Tuto adresu musíš zadat ve skeči v části LiquidCrystal_I2C lcd(0xXX, 20, 4)

    B, piny A0, A1, A2 jsou právě určeny ke změně adresy zařízení viz zde

    L.

    #9444
    Axamith
    Účastník

    Trefa do černého, byla to adresa. Už svítíme, zobrazujeme (já a displej) 🙂
    a hlavně se učíme.

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