LCD problem - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Reszta producentów (https://forum.arduinopolska.pl/dzial-reszta-producent%C3%B3w) +--- Dział: Oprogramowanie (https://forum.arduinopolska.pl/dzial-oprogramowanie) +--- Wątek: LCD problem (/watek-lcd-problem) Strony:
1
2
|
LCD problem - zak - 06-04-2022 Witam mam problem z LCD, pracuje poprawnie na pinach PB6 i PB7 a potrzebuje na PB10 i PB11, stm32f103. Kod: #include <Wire.h> RE: LCD problem - kaczakat - 06-04-2022 Tu ktoś napisał, że pokazany sposób działa: https://forum.arduino.cc/t/stm32-blue-pill-board-trying-to-use-i2c2-with-the-i2c-lcd-library/620360 . RE: LCD problem - zak - 08-04-2022 Widziałem to wcześniej, jakoś mi nie nie wyszedł ten kawałek - " Here is the modified “LiquidCrystal_I2C.cpp” file.", "I placed inside the sketch folder ". Ta osoba była na forum ostatnio 10 miesięcy temu. RE: LCD problem - kaczakat - 08-04-2022 W którym miejscu poległeś? Masz ten zmodyfikowany plik (pliki, całą bibliotekę) wrzucić do katalogu szkicu i podać ścieżkę do biblioteki z "" apostrofami. Potem przy kompilacji potwierdź oczami, czy do kompilacji wzięło zmodyfikowany plik, trzeba włączyć wszystkie komunikaty podczas kompilacji (i wgrywania ewentualnie) w ustawieniach programu Arduino IDE. Druga sprawa, to CORE dla STM, są różne, ja mam ze dwa, ale może być więcej. W przykładach do danego CORE, po wybraniu płytki maple mini, mam I2c_scanner_wire, jest w nim opcja zakomentowana: //TwoWire WIRE2 (2,I2C_FAST_MODE); //#define Wire WIRE2 Użyj tego i znajdź na magistrali adres LCD, potem przełącz sprzęt na drugi I2C, zrób zmiany w szkicu pod drugi I2C i potwierdź, że to działa. Dopiero potem można działać ze zmodyfikowaną biblioteką z nadzieją, że wszystko zagra. RE: LCD problem - zak - 08-04-2022 Po wprowadzeniu zmiany w programie LCD działa tak samo jak do zmian, Kod: void setup() { po dodaniu zmodyfikowanego kodu do foldera mam error: Arduino: 1.8.13 (Windows 10), Board: "Generic STM32F1 series, BluePill F103C8, STM32CubeProgrammer (SWD), Enabled (generic 'Serial'), None, Low/Full Speed, Smallest (-Os default), Newlib Nano (default)" WARNING: library LiquidCrystal_I2C-1.1.2 claims to run on avr architecture(s) and may be incompatible with your current board which runs on stm32 architecture(s). LCD_forum_3:5:18: error: 'I2C_FAST_MODE' was not declared in this scope; did you mean 'IS_UART_MODE'? 5 | TwoWire Wire2 (2,I2C_FAST_MODE); | ^~~~~~~~~~~~~ | IS_UART_MODE C:\Users\Galinka\Documents\Arduino\LCD_forum_3\modyfied_cpp.ino:7:9: error: redefinition of 'TwoWire Wire2' 7 | TwoWire Wire2 (2,I2C_FAST_MODE); | ^~~~~ C:\Users\Galinka\Documents\Arduino\LCD_forum_3\LCD_forum_3.ino:5:9: note: 'TwoWire Wire2' previously declared here 5 | TwoWire Wire2 (2,I2C_FAST_MODE); | ^~~~~ C:\Users\Galinka\Documents\Arduino\LCD_forum_3\modyfied_cpp.ino:7:18: error: 'I2C_FAST_MODE' was not declared in this scope; did you mean 'IS_UART_MODE'? 7 | TwoWire Wire2 (2,I2C_FAST_MODE); | ^~~~~~~~~~~~~ | IS_UART_MODE exit status 1 'I2C_FAST_MODE' was not declared in this scope; did you mean 'IS_UART_MODE'? This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences. RE: LCD problem - kaczakat - 08-04-2022 Ale to co pokazałeś to jakieś żarty, masz dwa x setup i dwa x loop. RE: LCD problem - zak - 08-04-2022 z pojedynczymi to samo RE: LCD problem - kaczakat - 08-04-2022 Pisałeś, że wgrywasz do domyślnego I2C i dziala, sprawdź czy typowe dla Twojej płytki przykłady się kompilują. Wszystko powinno działać OK na tym poziomie (nawet bez wgrywania). To co pokazujesz na obrazku to nie jest wgrana biblioteka do katalogu projektu. Ikonka sugeruje, że jest plik typu ino, a powinny być dwa, .cpp lub .c i .h lub .hpp, możesz po prostu cały katalog biblioteki skopiować do katalogu projektu i #include "TenKatalog/LiquidCrystal_I2C.h". Czyli w katalogu projektu mają być trzy pliki, np: projekt.ino LiquidCrystal_I2C.h LiquidCrystal_I2C.cpp Wyciągnąłem z pudła moją płytkę blupille, ja używam ją jako maple mini i kod wgrywam przez USB STM32duino bootloader , USB poza wgrywaniem robi za dodatkowy port COM. Obawiam się, że masz inny CORE niż ja, ja mam taki stary/pierwszy wgrywany ręcznie do katalogu hardware w Arduino tam gdzie szkice, musisz przejrzeć przykłady swojego CORE, a nawet głębiej gdzieś w hardware znaleźć bibliotekę wire, jak jest używana/zdefiniowana druga I2C. To przykładowy skaner, działa bez problemu u mnie na podstawowych pinach I2C, w komentarzach jest opisane jak należy przejść na alternatywne piny dla I2C pierwszy lub sprzętowy I2C drugi. Ale u mnie to nie działa, bo biblioteka tego nie ma w sobie. Ale z mojego pliku wire wyczytałem, że trzeba dodać dwie linijki, te które są z komentarzem po polsku. Jak je zakomentujesz to działa na pinach pierwszego I2C, a aktywne przełącza sią na drugie I2C. Sprawdziłem, że wykrywa z tym LCD na I2C drugim. Kod: // -------------------------------------- Początek pliku .cpp: Kod: // Based on the work by DFRobot I szkic z przykładowym Hello world. Kod: //YWROBOT RE: LCD problem - zak - 09-04-2022 Skaner znalazł na PB10/PB11 adres 0x27. cpp z linku " Tu ktoś napisał " nie kompiluje się RE: LCD problem - kaczakat - 09-04-2022 Jeśli zadziałał Ci kod scanera ode mnie, to nie bierz biblioteki z tego linka w #2, ani tamtego rozwiązanania, tylko tą swoją, która już Ci zadziałała na pierwszym I2C, ją skopiuj (dwa pliki .cpp i .h) do katalogu projektu, w nich edytuj .cpp jak pokazałem w #8. A komunikaty z #5 pokazujesz, że nie zrobiłeś jak Ci napisałem, masz tam plik C:\Users\Galinka\Documents\Arduino\LCD_forum_3\modyfied_cpp.ino zamiast swojej biblioteki. No i jest to typowa biblioteka z managera bibliotek, u mnie w Arduino I2C pokazana jako w ogóle niekompatybilna z STM. [attachment=1215] Stosowane rozwiązanie musi być zgodne z posiadanym core i używaną biblioteką. |