Jak vytisknu řetězec a celé číslo na LCD? Tady je to, co jsem zkoušel:
int number = 2; int result = (number + number); lcd.print(number, DEC + " plus " + number, DEC + " equals " + result, DEC); A výsledkem je chyba. Když to zkusím:
lcd.print(number + "look"); nebo
lcd.print("1234 " + number); Pak je výsledek na LCD „34“, protože odstranila první dvě čísla!
Chci, aby se to vytisklo:
1234 2
Prosím pomozte! Děkujeme!
Odpovědět
 Metoda lcd.print() převezme řetězec nebo číslo jako argument, ale ne oba najednou. Použití operátoru + pro zřetězení není pro řetězce C nativní. Řetězce C jsou v zásadě uloženy jako ukazatele na první znak řetězce. Takže když jste zkusili lcd.print("1234 " + number) a dostali "34 ", s největší pravděpodobností se stalo, že jste posunuli kurzor směrem k prvnímu znaku "1234 " (tj. „1“) o number (tj. 2), čímž ukazatel ukazuje na  3.  znak v řetězci, čímž se vytvoří lcd.print() display "34 ". Chcete-li vytisknout něco, co obsahuje řetězce i celá čísla, nejjednodušším způsobem je převést každý kus na řetězec Arduino a poté je zřetězit pomocí operátoru +, jako jste to udělali dříve. 
 lcd.print(String("1234 ") + String(number)); lcd.print(String(number) + String(" plus ") + String(number) + String(" equals ") + String(result));  Zde je několik příkladů. Můžete také použít vytvoření dostatečně velké char vyrovnávací paměti a použít sprintf() z stdio.h k sestavení řetězec složený z celých čísel a řetězců. Podívejte se do učebnice o C / C ++, kde najdete další podrobnosti. 
Odpověď
Mám stejný problém a vytiskl jsem řetězec a celé číslo na stejném řádku pohybem kurzoru takto:
 lcd.setCursor(0, 0); <----------Column 0 , Line 1 lcd.print("This code failed"); lcd.setCursor(0, 1); <----------Column 0 , Line 2 lcd.print("Error Code = "); lcd.setCursor(13, 1); <-change the cursor for the INT. Column 13 , Line 2 lcd.print(int); Komentáře
- Co se stane pokud je první chybový kód řekněme 1234, pak další je 57 … na displeji se zobrazí " 5734 " správně?
Odpověď
Co je na tom špatného:
lcd.print(number, DEC + " plus " + number, DEC + " equals " + result, DEC); Je to počet parametrů a předpoklad, že plus zřetězí řetězcové literály.
lcd.print("1234 " + number); To dává „34“, když je číslo 2 Proč? Důvodem je to, že je to výsledek přidání 2 k ukazateli řetězcového literálu, tj. Řetězce začínajícího na znaku „3“. Místo toho použijte samostatné tiskové příkazy:
lcd.print("1234 "); lcd.print(number); Nepoužívejte řetězec k zřetězení řetězců. To je plýtvání SRAM, zpracováním a existuje riziko fragmentace haldy. Prostě špatný nápad v malých měřítcích vestavěných systémech, jako je AVR.
Abyste těmto chybám porozuměli, měli byste se vrátit zpět a přečíst si o řetězcích a řetězcových literálech v C / C ++ (ve srovnání s Javou :).
Na zdraví!
Odpověď
int a=0; float b=10.01; char str[16]; sprintf(str,"a=%d, b=%.2f, c=%d", a, b, 2); // use sprintf() to compose the string str lcd.print(str); Výstup bude „a = 0, b = 10.01, c = 2“