TavIR I2C_LCD -hez Függvénykönyvtár.

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
szala
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2013. november 28. csütörtök, 11:47

TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: szala »

Sziasztok.

Nemrég kezdtem az arduinós pályafutásomat és rögtön szeretnék is hozzá egy kis segítséget kérni.
A Webshopban megvásároltam az első arduino -mat (uno R3) és ha már ott vagyok rögtön gondoltam kipróbál a fent említett eszközt is.
Igaz még nem tartok a leckék sorába az i2c kezelésénél , de gondoltam már rasberry py-n volt egy kis tapasztalatom az i2c -vel , hát talán itt se fog nagyon megszívatni.

Feltettem az alábbi függvénykönyvtárat , mert ezt találtam az ic hez.
LiquidCrystal_I2C "http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/"

Bekötöttem az ic-t az alábbi módon .
Gnd - Gnd
Vcc - 5V
SDA - A4
Scl - A5

Lefuttatam az i2c_scanner -t
Megtalálta az 0x27 -en. Gondoltam innen már nagy baj nem lehet :)

Belőttem a hello world- ös mintát a fügvénykövtárbol.
Átírtam LiquidCrystal_I2C lcd(0x27,16,4);

Erre jött a meglepi.
Nem csinál az lcd semmit. Vagyis elindul inicializál.. Megjelennek rajta a kockák aztán semmi..

A függvénykönyvtár leírásában találtam egy érdekes részt.

#define En B00010000 // Enable bit
#define Rw B00100000 // Read/Write bit
#define Rs B01000000 // Register select bit

Ezekkel játszottam egy kicsit mert, PCF8574T ic van a lapon. Változást tudtam elérni , de müködést nem... Sajnos datashed olvasásban nagyon rossz vagyok, de ahogy én kivettem a t-s az megegyezik a simával nem? Csak a foglalat más.
Na mindegy arra jutottam hogy itt lehet valami galiba , de lehet hogy tévedek.
Sajnos meggyógyítani nem sikerült úgyhogy inkább fordulok a szakikhoz , hogy mi lehet a probléma :)
Tehát várnám a tippeket a problémára.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

A PCF8574 chippel a LCD bekötése 1000+2 féleképp lehetséges. Szerintem ezt nem sikerült eltalálni.
A másik ami lehet, hogy az LCD modul _nem_ 5V-ról jár, hanem 3.3V-ról csak.

Este tudom bemásolni, hogy melyikkel teszteltem...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

TavIR I2C_LCD vezérlő (PCF8574/PCF8574T) Arduino-00xx és 1.x.x alá.
http://shop.tavir.hu/index.php/lcd-modul-c-35
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
szala
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2013. november 28. csütörtök, 11:47

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: szala »

Köszi szépen.

Amit linkeltél abból a bitbucket -es működik.

https://bitbucket.org/fmalpartida/new-liquidcrystal


Köszönöm még egyszer.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

A sokféle PCF8574-es I2CLCD illesztő sokféle lábbekötéssel van megáldva...
A TavIR-es paraméterei:

Kód: Egész kijelölése

// set the LCD address to 0x27 for a 20 chars 4 line display
// 0x27 (4E) - PCF8574
// 0x3F (7E) - PCF8574A
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 6, 5, 4, 3, 2, 1, 0, 7, POSITIVE);  // Set the LCD I2C address 
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: SzLacus »

I2C mögé rakva szeretném használni az LCD-t. PCF8574 a felhasznált darab, amiből mindjárt még kettőt használok, be-kimenet célra.
A 8574-nek van A változata is, ami a család kódban mutat eltérést. Szeretném azt megoldani, hogy a setup futása során feltérképezem az I2C eszközöket, és azzal a családkóddal megszólítani az eszközöket, amit a felfedezéskor találok. Ez a be-kimeneteknél nem okoz problémát, de az LCD-nél igen.
A "LiquidCrystal_I2C lcd(pcfCim,colums,rows)" sornak még a setup előtt szerepelnie kell, amikor még nem tudom, melyik családkódú eszköz fog válaszolni.
Vagyis megelőzi a kordé a szamarat, ahogyan azt mondani szokták, ami nem jó.
Elvetemült dolgot fogok kérdezni. Van-e lehetőség "visszanyúlni". Elképzelésem szerint (ami nem biztos, hogy jó) az lcd majd csak az init() utasításnál kel életre, addig semmi nem történik vele, vagyis büntetlenül megadható a jó cím.
Ha nem, akkor is megoldható a feladvány, csak kevésbé tetszik, és nem tudom mekkora "pocsékolást" eredményez. Ha mindkét családkóddal definiálom az lcd-t, (mintha két lcd-m lenne) és a felfedezés eredményeként megismert címhez tartozót fogom a kódban megszólítani, akkor az összes lcd hívást (már az init-től kezdve) egy-egy if-el meg kell dupláznom, és szerintem működne.
A be-kimeneteknél nem ezt alkalmazom, hanem a felfedezésnél megtalált címet az eepromba mentem, és onnan veszem elő a későbbiekben. Pontosabban, csak a leg első bekapcsolásnál fut a hw felfedezés, aztán már a mentett címektől várok választ. Ezt szeretném az lcd-t kiszolgáló pcf-el is tenni.
Van-e valakinek tapasztalata a témában, vagy nekem elgurult a gyógyszerem, hogy a HW változatokat előre ki szeretném alakítani, nem pedig az adott hw-hez készíteni a sw-t.

A segítséget előre köszöni,
SzLacus
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

Honnan tudod, hogy melyiken lóg az LCD?
A címlekérdezést a Setup()-ban is meg lehet tenni. Ha a visszajövő válasz: hiba - nincs ott eszköz.

Az LCD hívásban a pcfCim lehet változó is, nem kell konstansnak lenni (de a változó Byte/Char legyen!).
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: SzLacus »

Az LCD-t történetesen a 2-es userdef című pcf mögött van, de hogy ezt sima vagy A-s pcf mögött lesz azt nem tudom, és szeretném felismeréssel megoldani.
Ezért definiálok egy publikus tömböt a három pcf-nek, ami értékmegadás nélküli. A setupban a felismerés fogja feltölteni a valósan megtalált címekkel. Az lcd definiálásában ennek a tömbnek a 2-es indexű eleme szerepel, de amikor a sor lefut, akkor még nullával van a tömb feltöltve, mert a setup elején lesz csak feltöltve a valódi értékekkel. Viszont a LiquidCristal sort nem tehetem a setupba, a felismerő rész utánra, mert a fordító nem fogadja el. Az lcd.init az már a felismerés után van, de ott nem kell címet megadnom, már nem törődik a felismert címmel, nem működik az lcd. Így aztán hiába töltöm fel a tömbömet a jó címekkel, a két ki-bemenetnek használt pcf működik, az lcd nem. Ha a tömb definiálásánál csak az lcdnek megadom a címét akkor működik. A be-kimeneteknek erre nincs szüksége, azok a felismerés utáni címre hallgatnak.
Megpróbálom ellenpróbaként a felismeréssel hamisra állítani a definiáláskor jól megadott ldc címet, hogy lássam tényleg a LiquidCristal sorban megadott cím az etalon.
Gyanítom, hogy jó marad, hiába változik majd meg rosszra a változó értéke.
Avatar
SzLacus
Tranzisztorgyógyász
Hozzászólások: 175
Csatlakozott: 2012. május 20. vasárnap, 6:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: SzLacus »

A megfejtés sokkal egyszerűbb, mint a rengeteg if az lcd hívások elé. Elegendő egy if a felismerő rész utánra, valahogy így.

Kód: Egész kijelölése

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

#define pcf8574 0x40 >> 1        // PCF8574/PCF8574P  alap cim olvasásra 0x40, írásra 0x41 Az utolsó bitet a könyvtár kezeli  
#define pcf8574A 0x70 >> 1       // PCF8574A/PCF8574AP  alap cim  olvasásra 0x70, írásra 0x71

LiquidCrystal_I2C lcd(pcf8574,colums,rows);      // 0x20 Alap típus családkóddal
LiquidCrystal_I2C lcdA(pcf8574A,colums,rows);    // 0x70  "A" típus családkóddal

void setup(){

  byte iicError;
  byte probalkozas = 4;
  byte cim = 0;
  byte kamuAdat = 0xAA;
  do
  {
    if (probalkozas > 2){
      cim = pcf8574;
    }else{
      cim = pcf8574A;
    }
    expanderWrite(cim, kamuAdat);              //írok a megcímzett pcf-be.
    probalkozas--;
  } while(iicError && probalkozas);              //Amíg sikeres lesz, vagy elfogy a próbálkozás

    if (!iicError && probalkozas < 3){            // Ha hibátlan volt az írás iicError == 0
      lcd = lcdA;
    }

  lcd.init();                      // initializáljuk az lcd-t a portbővítő mögött 

}

void loop() {

}


void expanderWrite(byte _cim, byte _data ) {
  Wire.beginTransmission(_cim);
  Wire.write(_data);
  iicError = Wire.endTransmission();
  return;
}

Remélem aránylag kevés hibával egyszerűsítettem ide a példát, a formázása csapnivaló, de talán érthető.
A lényeg, hogy definiálom mindkét címmel az lcd-t, természetesen külön néven, mintha két kijelzőm lenne.
Aztán a felfedezésben megszólítom az egyik címmel kétszeri próbálkozással, aztán a másik címmel. Amelyikre válaszol, ott vége a do-nak, és a használt változóban maradnak az értékek, amiből eldönthető, hogy melyik címre volt sikeres. Ha az elsőre, akkor minden lcd. kezdetű hívás a helyén van, ha pedig a második, akkor egyenlővé teszem a második címmel létrehozott lcd objektumot(???) az elsővel, így a továbbiakban megint csak lcd. hívással hívhatom, annak ellenére, hogy lcdA-nak hoztam létre. Így akármelyik családkódú pcf megy bele, működik. Ha sikerült ezzel ötletet adnom másnak, akkor már érdemes volt ide hozni a problémát.
grano
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2014. február 1. szombat, 20:08

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: grano »

Szisztok!
Egy kis segítséget szeretnék kérni.
I2C LCD-vel küzdök. (ebay-ról jött)
Eddig jópár lybrari letöltése után ezt kapom a fordítás során:

In file included from HelloWorld.pde:2:
C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:89: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'

A legutolsó könyvtár itt fentebb robert zip-jéből származik, a benne levő example "HelloWorld" fordítása is ez. W7 alatt küzdök, UNO R3, ill. NANO apróságokkal.

Az I2C scan a 0X27-en találja meg, PCF8574T IC van a nyákon.

Köszönöm előre is.

Üdv
Grano
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

Az EBAY alapú más lábkiosztású - így látatlanban. Vagy ki kell mérni, vagy a gyártótól kell elkérni a rajzot.
A pde-s állományt a Arduino-0023-ban próbáld ki.
grano
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2014. február 1. szombat, 20:08

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: grano »

robert:
esetleg egy 1.0-hoz való lybraryt tudnál linkelni?

A "más lábkiosztáson" mit értesz?
Az arduino-I2C interfész vagy az interfész-LCD közti lábkiosztást?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: Robert »

Chip-LCD kiosztás lehet más. Ez a fordítót nem zavarja.
1.0-val is mennie kellene. 1.0.5 vagy 1.0.4 verzióval.

De a neten kering fenn jópár. A legjobb szerintem a crystalLCD könyvtár, amiben az SPI, Shiftreg és a I2C-s illesztés is benne van. Az hogy honnan, passz.
grano
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2014. február 1. szombat, 20:08

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: grano »

Köszönöm, végül is találtam egy library-t amit le tudtam fordítani, de azzal sem jött össze. A ciklusokat a villódzásból lehetett látni, szóval az interface volt a ludas. Szerencse, hogy olyan "drága" volt .

Innen, az 1.2.1-es verzió működött:
https://bitbucket.org/fmalpartida/new-l ... /downloads
Az lcd elnevezés helyett a programban iLCD-t használ.

Köszönöm a segítséget.
tyler
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2014. augusztus 2. szombat, 19:53

Re: TavIR I2C_LCD -hez Függvénykönyvtár.

Hozzászólás Szerző: tyler »

grano írta:Köszönöm, végül is találtam egy library-t amit le tudtam fordítani, de azzal sem jött össze. A ciklusokat a villódzásból lehetett látni, szóval az interface volt a ludas. Szerencse, hogy olyan "drága" volt .

Innen, az 1.2.1-es verzió működött:
https://bitbucket.org/fmalpartida/new-l ... /downloads
Az lcd elnevezés helyett a programban iLCD-t használ.

Köszönöm a segítséget.
Itt nem értem, hogy mi volt a megoldás. Nekem is ugyanez a jelenség. 1.2.1 library-val próbáltam, de összevissza karakterek jelennek csak meg. Tudtok segíteni, hogy mit próbáljak?
Válasz küldése