• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
dane char i wysietlanie na LCD
#1
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]);
 
Odpowiedź
#2
Kod:
  lcd.print(tekstStart.substring(0,16));
  if(tekstStart.length() > 16){
    lcd.setCursor(0,1);
    lcd.print(tekstStart.substring(16,32));
  if(tekstStart.length() > 32){
    lcd.setCursor(0,2);
    lcd.print(tekstStart.substring(32,48));
  }
  }
 itp.itd.
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.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
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]'
 
Odpowiedź
#4
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.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#5
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));
}
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości