Igaz, nem az a projekt, amit először kigondoltam, de ez sem rossz, szóval most azt csináltam meg, amit ML rámsózott még az előző végén: irányítsam a gépről a kijelzőt.
Hasonlót már csináltam korábban, amikor számot kellett megjeleníteni a ledes kijelzőn, úgyhogy tudtam onnan puskázni. A tegnapi kódolást fejlesztettem kicsit tovább, a "serial.available" kellett ahhoz, hogy összehozzam a gépet az LCD-vel, utána kellett egy "int" ahhoz, hogy a kiírható karaktereket tudjam számolni, a "while"-on belülre írt "if" arra való, hogy amikor az "i++" (leütött karakterek száma, annyiszor futott le a ciklus) eléri a 17-et (beírható karakterek száma 16, tehát az annál eggyel nagyobbnál), akkor jön a kurzor új sorba helyezése.
Vigyázat, a setCursor paraméterei (oszlop, sor)! Nem értettem, miért kezdi a következő sorban egy karakterrel beljebb, ha úgy írtam, hogy (1,1)...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
void loop() { // when characters arrive over the serial port... if (Serial.available()) { // wait a bit for the entire message to arrive delay(100); // clear the screen lcd.clear(); int i = 0; // read all the available characters while (Serial.available() > 0) { i++; if (i==17) { lcd.setCursor(0, 1); } // display each character to the LCD lcd.write(Serial.read()); } delay (5000); // clear the screen lcd.clear(); } } |
Sőt, még azt is beleírtam, hogy öt másodperc után törölje a szöveget :) Először picit megkavarodtam, és a "while"-on belülre hoztam össze, azzal viszont csak annyit értem el, hogy a karaktereket írta öt mp-enként, de amúgy ezt is egész jól megoldottam :) Ha valakinek kedve támad hozzá, itt van a kész mű.
E.