SiaQ Napisano Styczeń 7, 2018 Udostępnij Napisano Styczeń 7, 2018 Witam. Mam problem odnośnie rozszerzenia pinów w Arduino. Podłączyłem wyświetlacz przy pomocy modułu I2C dla wyświetlacza LCD, wykorzystując przy tym bibliotekę LiquidCrystal_I2C.h, oprócz tego chciałem dodać kilka dodatkowych pinów przy użyciu modułu PCF8574. W momencie gdy w programie dołączę bibliotekę PCF8574.h, program wyrzuca błąd, że biblioteka ta zawarta jest (niby) w bibliotece LiquidCrystal_I2C.h. Jak rozwiązać ten problem, aby wszystko działało poprawnie i bezbłędnie? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 7, 2018 Udostępnij Styczeń 7, 2018 SiaQ, które konkretnie biblioteki używasz, skąd je pobrałeś? Jak dokładnie brzmi błąd wyświetlany w Arduino? Cytuj Link do komentarza Share on other sites More sharing options...
SiaQ Styczeń 7, 2018 Autor tematu Udostępnij Styczeń 7, 2018 LiquidCrystal_I2C.h - bibliotekę ściągnąłem ze strony, która podana była na Botlandzie (https://botland.com.pl/konwertery-pozostale/2352-konwerter-i2c-dla-wyswietlacza-lcd-hd44780.html) PCF8574.h - ta biblioteka była podana na jakiejś stronie, gdzie wykorzystywany był ten moduł (https://botland.com.pl/ekspandery-wyprowadzen/4455-modul-pcf8574-ekspander-wyprowadzen-mikrokontrolera.html?search_query=pcf8574&results=16) A błąd jaki wyskakuje to : Archiving built core (caching) in: C:\Users\Kuba\AppData\Local\Temp\arduino_cache_77816\core\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_3' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_4' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_5' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status Znaleziono wiele bibliotek w "LiquidCrystal_I2C.h" Wykorzystane: C:\Users\Kuba\Documents\Arduino\libraries\LiquidCrystal_I2C Niewykorzystane: C:\Users\Kuba\Documents\Arduino\libraries\jm_LiquidCrystal_I2C exit status 1 Błąd kompilacji dla płytki Arduino/Genuino Uno. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 7, 2018 Udostępnij Styczeń 7, 2018 SiaQ, w kodzie błędu jest mowa o tym, że masz wgraną dwa razy bibliotekę od wyświetlacza: Znaleziono wiele bibliotek w "LiquidCrystal_I2C.h" Wykorzystane: C:\Users\Kuba\Documents\Arduino\libraries\LiquidCrystal_I2C Niewykorzystane: C:\Users\Kuba\Documents\Arduino\libraries\jm_LiquidCrystal_I2C Sprawdź najpierw ten trop i usuń zbędny katalog 😉 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
SiaQ Styczeń 7, 2018 Autor tematu Udostępnij Styczeń 7, 2018 Po usunięciu biblioteki z folderu "libraries" wyskoczyło coś takiego : libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_3' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_4' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask': (.text+0x0): multiple definition of `__vector_5' libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status exit status 1 Błąd kompilacji dla płytki Arduino/Genuino Uno. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 7, 2018 Udostępnij Styczeń 7, 2018 SiaQ, a skąd tam się bierze cały czas jeszcze SoftwareSerial? Używasz go w programie? Cytuj Link do komentarza Share on other sites More sharing options...
SiaQ Styczeń 7, 2018 Autor tematu Udostępnij Styczeń 7, 2018 Wykorzystywałem go do podłączenia modułu GSM, który w sumie podłączyłem przy użyciu innej biblioteki (teraz moduł działa poprawnie, wtedy szwankował), ale mimo wszystko po usunięciu biblioteki SoftwareSerial.h błąd jest nadal taki sam jak powyżej. Dziwne i zarazem bardzo irytujące. Może to wina bibloteki PCF8574.h ? Masz może jakąś sprawdzoną do modułu, do którego link wrzuciłem w 2 poście? Cytuj Link do komentarza Share on other sites More sharing options...
SiaQ Styczeń 9, 2018 Autor tematu Udostępnij Styczeń 9, 2018 Do komunikacji Arduino z modułem GSM Sim800l, wykorzystuję bibliotekę ze strony producenta Sim800l.h, która wymaga również zastosowania biblioteki SoftwareSerial.h. Wszystko działa pięknie, do momentu gdy chcę wykorzystać ekspander wyprowadzeń PCF8574. Wrzucam do programu bibliotekę PCF8574.h, znalezioną gdzieś w internecie i wyrzuca błąd taki jak powyżej. Czemu coś takiego się dzieje? :/ Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Luty 22, 2020 Udostępnij Luty 22, 2020 Wykopaliska, też mam zamiar użyć pcf8574, też korzystam z softwareSerial do komunikacji z sim800l... Ktoś miał podobne problemy jak założyciel wątku? Cytuj Link do komentarza Share on other sites More sharing options...
kaczakat Luty 23, 2020 Udostępnij Luty 23, 2020 Ktoś miał, opisywał to na forum ArduinoPolska, zmienił bibliotekę PCF8574 na inną i tak rozwiązał problem. Jak tylko się przymierzasz to po prostu uruchom i sprawdź czy jest konflikt, może akurat od razu trafisz na zgodne. Większą pewność działania daje UART sprzętowy, np. MEGA ma 4, LEONARDO/MICRO ma jeden, ale "dodatkowy" - nieużywany do komunikacji z PC. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Luty 23, 2020 Udostępnij Luty 23, 2020 Akurat obsługa PCF8574 to pięć linijek na krzyż i można się obyć bez żadnej biblioteki - zależy co się ma zamiar robić (w większości przypadków wystarczą odpowiedniki read8 i write8). No - chyba że jest konflikt z Wire... 1 Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 23, 2020 Udostępnij Luty 23, 2020 Jak mówi ethanak zależy co ma się zamiar robić. Ja w jednym ze swoich projektów wykorzystałem 5 takich ekspanderów (pracujących jako wyjścia) i nie korzystałem z biblioteki 8574.h lecz z Wire.h. W setup oczywiście Wire.begin(), a później zapis do PCF8574 realizowałem jako: Wire.beginTransmission(adresPCF); Wire.write(bajt_danych); Wire.endTransmission(); i to wszystko - działa. 1 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Luty 23, 2020 Udostępnij Luty 23, 2020 (edytowany) Odczyt jest nawet mniej skomplikowany: Wire.requestFrom(adresPCF, (uint8_t)1); bajt_danych = Wire.read(); Trzeba tylko pamiętać, aby wcześniej wrzucić jedynki do bitów, które się będzie czytać. Nie mówiłem, że to 5 linijek? 🙂 Edytowano Luty 23, 2020 przez ethanak Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!