TavIR I2C_LCD -hez Függvénykönyvtár.
TavIR I2C_LCD -hez Függvénykönyvtár.
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.
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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...
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...
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
TavIR I2C_LCD vezérlő (PCF8574/PCF8574T) Arduino-00xx és 1.x.x alá.
http://shop.tavir.hu/index.php/lcd-modul-c-35
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
Amit linkeltél abból a bitbucket -es működik.
https://bitbucket.org/fmalpartida/new-liquidcrystal
Köszönöm még egyszer.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
A sokféle PCF8574-es I2CLCD illesztő sokféle lábbekötéssel van megáldva...
A TavIR-es paraméterei:
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
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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
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
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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!).
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!).
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
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.
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;
}
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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
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
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
A pde-s állományt a Arduino-0023-ban próbáld ki.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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?
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?
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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.
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.
Re: TavIR I2C_LCD -hez Függvénykönyvtár.
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?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.