Forum: Mikrocontroller und Digitale Elektronik Arduino Display 2 zeilen


von marc (Gast)


Lesenswert?

Hallo,

Ich möchte an meinem Arduino eine Eingabe über Serial Monitor auf das 
Display geben. Was auch Funktioniert allerdings nur in der ersten Zeile
wie bringe ich dem bei das er nach 16 Zeilen und die 2. reihe rutschen 
soll

#include <LiquidCrystal.h>


  LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup(){
     // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);


   // initialize the serial communications:
   Serial.begin(9600);
 }

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();
     // read all the available characters
     while (Serial.available() > 0) {

        // display each character to the LCD
       lcd.write(Serial.read());
     }
   }
 }

von Cube (Gast)


Lesenswert?


von marc (Gast)


Lesenswert?

Naja die SUFU kann ich auch benutzen komm aber damit nicht weiter.
hab schon einiges versucht.

von Tom M. (tomm) Benutzerseite


Lesenswert?

marc schrieb:
> hab schon einiges versucht.

Dann versuch's doch mal mit LESEN. Ist ja alles schön dokumentiert, 
RTFM.

von Cube (Gast)


Lesenswert?

marc schrieb:
> Naja die SUFU kann ich auch benutzen komm aber damit nicht weiter.
> hab schon einiges versucht.

Dann ist wohl etwas schief gelaufen.

Auf der verlinkten Seite heißt es unter anderem:

> lcd.setCursor(0, 0); // top left
> lcd.setCursor(15, 0); // top right
> lcd.setCursor(0, 1); // bottom left
> lcd.setCursor(15, 1); // bottom right

Das bezieht sich direkt auf ein 2x16 Display so wie du eines hast. 
Insofern sollte doch alles klar sein, oder wo gibt es noch Probleme?

von Karl H. (kbuchegg)


Lesenswert?

Cube schrieb:

> Das bezieht sich direkt auf ein 2x16 Display so wie du eines hast.
> Insofern sollte doch alles klar sein, oder wo gibt es noch Probleme?


Ich denke das Problem besteht im nicht akzeptieren wollen, dass man halt 
die Anzahl der ausgegebenen Zeichen mitzählen muss, damit man im 
richtigen Augenblick mittels lcd.setCursor() in die 2.te Zeile wechseln 
kann.

von marc (Gast)


Lesenswert?

Hallo Cube,

Mit der secCursor funktion gebe ich ihm die Zeile in die er es schreiben 
soll. aber anders als bei Serial.print schreibt er nicht automatisch in 
der nächsten zeile weiter ! Und wenn ich die print Funktion nehme dann 
bringt er mir im Display nur Hex werte.

von marc (Gast)


Lesenswert?

Ok aber wie bringe ich dem bei das er nach 16 zeichen eine weitere Zeile 
nimmt ich muss doch die zeichen irgentwie mitzählen. um ihm dann zu 
sagen
lcd.setCursor(0, 1); // bottom left

von Karl H. (kbuchegg)


Lesenswert?

marc schrieb:
> Ok aber wie bringe ich dem bei das er nach 16 zeichen eine weitere Zeile
> nimmt ich muss doch die zeichen irgentwie mitzählen. um ihm dann zu
> sagen
> lcd.setCursor(0, 1); // bottom left

Schon mal was von Variablen gehört?
Die sind genau dazu gedacht, dass man sich dort drinnen Werte 
abspeichern kann, mit ihnen rechnen kann, sie vergleichen kann, etc.
1
//#############################
2
3
int AnzahlZeichen = 0;
4
5
//#############################
6
7
8
void loop()
9
 {
10
   // when characters arrive over the serial port...
11
   if (Serial.available()) {
12
     // wait a bit for the entire message to arrive
13
     delay(100);
14
     // clear the screen
15
     lcd.clear();
16
     // read all the available characters
17
     while (Serial.available() > 0) {
18
19
20
//#############################
21
22
       AnzahlZeichen = AnzahlZeichen + 1;
23
       if( AnzahlZeichen == 16 )
24
         ..... wechsle in die 2.te Zeile
25
26
//#############################
27
28
        // display each character to the LCD
29
       lcd.write(Serial.read());
30
     }
31
   }
32
 }

es hilft nichts:
Auch wenn einem die Arduino Libraries viel abnehmen, ohne Grundkentnisse 
geht es nun mal nicht. Du brauchst dringend Literatur. Mit dem 
Übernehmen von Code-Schnipseln aus irgendwelchen windigen Tutorien ist 
es nun mal nicht getan.

von marc (Gast)


Lesenswert?

Naja hab des jetzt genauso gemacht allerdings geht er immer direkt in 
zeile 2 und bringt gar keine zeichen mehr

von marc (Gast)


Lesenswert?

Nee passt jetzt klappt es war ein ; zuviel

Danke habt mir sehr geholfen.

Schönen Feiertag noch

MfG Marc

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.