LCD + I2C jak zrobic Afr/voltomierz + pasek - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: LCD + I2C jak zrobic Afr/voltomierz + pasek (/watek-lcd-i2c-jak-zrobic-afr-voltomierz-pasek) |
LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 08-02-2017 Witam Mam lcd 16x2 podłączone przez i2c do UNO. Zrobiłem sobie wczesniej wskaznik afr http://forum.arduinopolska.com/watek-chwilowe-spalanie-benzyny-komp-pokladowy teraz kombinuje żeby dodac to niego pasek który bedzię obrazował stan. Czyli w linii pierwszej wskazanie afr np AFR:14,7 w 2 linii pasek. Dokładnie takie cos jak w filmiku niżej. Kilka kodów znalazłem niestety żadnego nie udało mi sie dostosować żeby działał. https://www.youtube.com/watch?v=4zbBaQPvBC0 Docelowo jak się uda dodać ten pasek, to w dalszych planach bedzię opcja zmiany wskazan na wyświetlaczu, czyli na głowym startowym ekranie, beda wyswietlane wskazania, sondy szerokopasmowej, temp spalin, doładowanie, po nacisnięciu przycisku na LCD pokarze sie tylko AFR (szerokopasmowa) plus pasek, następne wciśnięcie, turbo + pasek, nastepne temp spalin + pasek itd... ale narazie skupmy sie na pasku RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - namok - 08-02-2017 (08-02-2017, 16:49)Kuter_tm napisał(a): Witam Użyj funkcji map aby przeskalować wartość afr. RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 08-02-2017 To wiem że map, ale nie wiem jak tego użyć. tzn wiem ze musze zdefiniować znaki Np Kod: byte k1[8] = { //kreska1z5 i tak dalej zeby było 5 kresek ale nie wiem jak zrobić żeby mi to zaczelo działać. NIe widze nawet szczerze na czym mam sie wzorować zeby to zrobic pod siebie ;/ RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - namok - 08-02-2017 Najpierw zrób aby wyświetlał się w tym miejscu dowolny znak, abyś widział że to działa. Reszta potem. RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 08-02-2017 To jest proste. Wystarczy lcd.print ("k1") i pokarze mi kreske jedna. Nie mam teraz jak sprawdzic. No ale raczej tak. Wysłane z mojego SM-N910F przy użyciu Tapatalka No tak żeby bylo jeszcze ciekawiej na laptopipe wysypał mi sie program arduino. Jakis problem z java... Nic sie nie aktualizowało, nic nowego nie instalowałem i bum. Jakies pomysły? Java i arduino przeinstalowane RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 15-02-2017 Zero pomysłów? Wysłane z mojego SM-N910F przy użyciu Tapatalka RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - namok - 15-02-2017 (15-02-2017, 11:02)Kuter_tm napisał(a): Zero pomysłów?Przecierz dostałeś odpiwiedź: Cytat:Użyj funkcji map aby przeskalować wartość afr.Tyle ile wynosi wartość przeskalowana tyle razy masz wyświetlić znak. RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 15-02-2017 No super. Sam sobie mogłem napisać użyj funkcji map tyle widziałem. Czy jak bym wiedział jak jej użyć to bym pytaj?! Nie wiem jak ja napisać żeby działala. Skąd wziąć sygnał, tzn wiem a0, ale jak to zrobić żeby miało ręce i nogi. Wysłane z mojego SM-N910F przy użyciu Tapatalka RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - namok - 15-02-2017 (15-02-2017, 12:52)Kuter_tm napisał(a): No super. Sam sobie mogłem napisać użyj funkcji map tyle widziałem. Czy jak bym wiedział jak jej użyć to bym pytaj?! Nie wiem jak ja napisać żeby działala. Skąd wziąć sygnał, tzn wiem a0, ale jak to zrobić żeby miało ręce i nogi.Zacznij od przeczytania jak działa ta funkcja a potem przejrzyj przykłady które, o dziwo, są zamieszczone w opisie funkcji. RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - Kuter_tm - 15-02-2017 Znalazłem cos co wykorzystałem. Nie do konca rozumiem o co w nim chodzi, a chodzi o to zeby rozumiec i sie nauczyc dlaczego tak a nie inaczej. Kod ma tez problem, jak wsadze go do kodu głownego gdzie mam jeszce w wierszy piwerwszym inne rzeczy pasek głupieje, wiem że napewno chodzi tu o delay(150) bez opóźnienia działa dobrze - prawie, bo tez potrafi zostawic cos za soba. Wyglada on tak #include <Wire.h> #include <LiquidCrystal_I2C.h> uint8_t bar0[8] = { to kapuje bo tu definiujemy znaki w tym przypadku linie 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; uint8_t bar1[8] = { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}; uint8_t bar2[8] = { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}; uint8_t bar3[8] = { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C}; uint8_t bar4[8] = { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E}; //uint8_t bar5[8] = { // 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}; int i,j=0; LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); lcd.createChar(0, bar0); ---------------------- tu je nazywamy lcd.createChar(1, bar1); lcd.createChar(2, bar2); lcd.createChar(3, bar3); lcd.createChar(4, bar4); } void loop() { pasek(analogRead(A0),1,16); -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków } void pasek(int data, int row, int lcd_size) -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków { j = map(data, 0, 1023, 0, (5 * lcd_size)+16); --- tu nie lapie wyswietlacz ma 80 znaków, zapisane w tej postaci dochodzi do konca zapisane w postaci (data, 0, 1023, 0, 80) jest problem dochodzi do 13 pola i = j / 6; - nie wiem lcd.setCursor(i,row); --- ustawia kursor, row to wiersz 2 i poczatek. Dlaczego nie działa jak napisze (0,1) lcd.write(j % 6); --- wyswietla nasz pasek ale co znaczy zapis dlaczego % i 6 Jeszcze jedno. Mam zdefiniowane paski uint8_t bar0[8] mam je poźniej nazwane jako 1,2,3,4,5 i gdzie one sa umieszczone dalej w kodzie w PASKU? i = j / 6; lcd.write(j % 6); ?? } |