• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
lcd na i2c i problem z print :|
#1
Witam

Mam dość dziwny dla mnie problem :| podłączyłem lcd przez konwerter na PCF8574T zaimportowałem bibliotekę sugerowaną przez Botland i przykład "SerialDisplay" działa poprawnie za to "Hello world" wyświetla tylko pierwsza literę. Dodając kolejne instrukcje lcd.print() na wyświetlaczu pojawiają się tylko pierwsze litery tekstu :| ma ktoś możne pomysł czym jest to spowodowane?
 
#2
Cześć.

U mnie też był problem z przykładami z tej biblioteki, pin podświetlenia się nie zgadzał. Jaki masz wyświetlacz, 2x16?
Poniżej masz kod, gdzie "Hello Word_i2c" działa prawidłowo.

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

#define BACKLIGHT_PIN 3

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// Creat a set of new characters
const uint8_t charBitmap[][8] = {
  { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
  { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
  { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
  { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
  { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
  { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
  { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
  { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
 
};

void setup()
{
  int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));

 // Switch on the backlight
 pinMode ( BACKLIGHT_PIN, OUTPUT );
 digitalWrite ( BACKLIGHT_PIN, HIGH );
 
 lcd.begin(16,2);               // initialize the lcd

  for ( int i = 0; i < charBitmapSize; i++ )
  {
     lcd.createChar ( i, (uint8_t *)charBitmap[i] );
  }

 lcd.home ();                   // go home
 lcd.print("Hello, ARDUINO ");  
 lcd.setCursor ( 0, 1 );        // go to the next line
 lcd.print (" FORUM - fm   ");
 delay ( 1000 );
}

void loop()
{
  lcd.home ();
  // Do a little animation by writing to the same location
  for ( int i = 0; i < 2; i++ )
  {
     for ( int j = 0; j < 16; j++ )
     {
        lcd.print (char(random(7)));
     }
     lcd.setCursor ( 0, 1 );
  }
  delay (200);
}
 
#3
Witam,

To jest problem z biblioteką LiquidCrystal_I2C, która nie działa dobrze w Arduino 1.6.6 i 1.6.7. Problem dotyczy chyba tylko wersji dla Windows. Przykład SerialDisplay działa ponieważ wypisuje pojedyncze znaki, lcd.print() nie działa poprawnie - wypisuje tylko pierwszy znak. Rozwiązanie tego problemu istnieje ale nie zostało jeszcze opublikowane. Opcje masz dwie:

1. Możesz u siebie wyedytować kod biblioteki. Tutaj jest link do poprawki: https://github.com/arduino/Arduino/issue...-156690585

2. Możesz sobie tymczasowo zainstalować Arduino IDE 1.6.5  i przeczekać do oficjalnej poprawki.

Pozdrawiam
 
#4
Dzięki Smile poprawka ziemianina4 zadziałała od razu Smile,

Pozdrawiam
 
#5
Zamykam. Smile
[Obrazek: Sygnatura1-w60.jpg]
 
  


Skocz do:


Przeglądający: 1 gości