Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
20-03-2022, 02:53
(Ten post był ostatnio modyfikowany: 20-03-2022, 02:54 przez mateuszmilke97@gmail.com.)
Cześć.
Potrzebuje wyświetlać na lcd I2C rożne randomowe teksty z tablicy danych "char". Całość śmiga dobrze lecz chodzi o to że jeżeli tekst jest dłuższy niż szerokość LCD'ka nie wyświetla się reszta i stąd zwracam się o kolejną pomoc. Czy ktoś podpowie jak to napisać aby tekst kontynuował swoje wyświetlanie w kolejnej linijce jeśli jest dłuższy niż np 16 znaków?
Poniżej kawałek kodu odpowiedzialny za losowanie i wyświetlanie z tablicy.
lcd.clear();
lcd.home();
int textStartIndex = random(8);
lcd.print(textStart[textStartIndex]);
Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
niestety wyskakuje błąd troche zmodyfikowałem wartosci jesli chodzi o wyświetlacz (kolumy i szerokości) ale to nie ten problem poniżej komunikat kompilatora
lcd.print(textStart.substring(0,16));
^~~~~~~~~
Gra_syzbkosci_klikniec_v1_0:74:16: error: request for member 'length' in 'textStart', which is of non-class type 'char* [8]'
if(textStart.length() > 16){
^~~~~~
Gra_syzbkosci_klikniec_v1_0:76:25: error: request for member 'substring' in 'textStart', which is of non-class type 'char* [8]'
lcd.print(textStart.substring(0,16));
^~~~~~~~~
Gra_syzbkosci_klikniec_v1_0:77:16: error: request for member 'length' in 'textStart', which is of non-class type 'char* [8]'
if(textStart.length() > 32){
^~~~~~
Gra_syzbkosci_klikniec_v1_0:79:25: error: request for member 'substring' in 'textStart', which is of non-class type 'char* [8]'
lcd.print(textStart.substring(16,32));
^~~~~~~~~
exit status 1
request for member 'substring' in 'textStart', which is of non-class type 'char* [8]'
Liczba postów: 654
Liczba wątków: 3
Dołączył: Apr 2017
Reputacja:
51
Bo masz tablicę char[], a ja podałem przykład dla string.
Albo przekonwertuj zmienną, albo musisz napisać program wyliczający kolejne elementy tablicy i wrzucający je do odpowiedniej linii LCD.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.
Liczba postów: 76
Liczba wątków: 16
Dołączył: Sep 2021
Reputacja:
2
Udało mi się osiągnąć zamierzony cel lecz musiałem trochę zmodyfikować kod lecz dzięki Tobie zrozumiałem jak to działa dzięki !!! poniżej działający kod
lcd.clear();
lcd.home();
byte textStartIndex = random(11);
if (textStart[textStartIndex].length() > 0) {
lcd.setCursor(0, 0);
lcd.print(textStart[textStartIndex].substring(0, 16));
if (textStart[textStartIndex].length() >= 17) {
lcd.setCursor(0, 1);
lcd.print(textStart[textStartIndex].substring(16, 32));
}
}