INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ausgabe entweder 0 oder 3
19.09.2015, 07:34 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2015 07:58 von Wampo.)
Beitrag #9
RE: Ausgabe entweder 0 oder 3
(18.09.2015 16:41)ardu_arne schrieb:  Hallo,

was genau funktioniert denn nicht bzw. was passiert und soll nicht passieren?

Du schreibst das Char Array sieht so aus:
Code:
char* TEMP[]={" "," "," "," "};
im Programm aus dem Anhang steht aber:
Code:
char* TEMP[]={" ","",""," "};

Ich weiß nicht was der Compiler aus den beiden "" macht. Wenn er das wegoptimiert hat das Array nur noch zwei Elemente. Mit lcd.print(TEMP[DisplayFirstLine + i]); greift man dann ins Nirwana wenn i=3 ist.

lg
Arne

Hey Arne,

sehr scharfsinnig Wink
Mit char* TEMP[]={" "," "," "," "}; bilde ich sozusagen nur das Menü, dieses kann auch 20 Sätze enthalten das wäre egal. Denn die Menügröße wird daraufhin mit
Code:
MenueItems = sizeof(TEMP)/sizeof(TEMP[0]);
und
Code:
for (int i=0;i<4;i++) {
    lcd.setCursor(15,i);
    lcd.print(TEMP[DisplayFirstLine + i]);
}

generiert.
Um noch kurz zu erläutern, das Menü wird auf 4 Zeilen angezeigt ist der Pfeil auf der 4ten Zeile und man Scrollt weiter runter rutscht das Menü eins nach oben und legt somit den nächsten Menüpunkt frei, ist das Ende vom ganzen Menü erreicht Springt der Pfeil wieder auf den ersten Menüpunkt.

Mit dem " " bewirke ich lediglich nur das mein Pfeil der mit lcd.write((byte)9); generiert wird, abgelöscht wird wenn ich auf ne neue Zeile gehe, da ich ja eine Leerzeichen im Array hab.
Wenn ich jetzt den hier "" (ohne Leerzeichen) schreibe dann bleibt der Navigationspfeil stehen und wird nicht abgelöscht wenn ich in eine andere Zeile gehe.

Wenn ich das Array mit nur zwei Zeichen fülle dann wird mein Pfeil auch nur auf Zeile 1 und 2 zur auswahl gesetzt.

Und jetzt kommt was er machen soll: Ich möchte das der Navipfeil nur zwischen Zeile 1 und 4 hin und her springt.
Die if anweisung von Hotsystem is zwar nicht verkehrt ABER: im hintergrund ist die Zeile 2 und 3 noch aktiv, wenn ich den Rotary Encoder drehe dann muss ich um von zeile 1 auf zeile 4 zu kommen auch dreimal drehen und das ist das was ich nicht möchte.


Aktuell wird der Encoder glaub ich auch etwas falsch benutzt.
Code:
void encoder(){
  
  if (turned)
  {
    if (up)
      move_up();
    else
      move_down();
    turned = false;
  }
  else if (fired)
  {
     if(digitalRead(PUSHP)==LOW){
     nr = CursorLine;}
   lcd.clear();
   print_menue();
   fired = false;
  }
}

void move_up() {
  if ((DisplayFirstLine == 0) & (CursorLine == 0)) {
    DisplayFirstLine = MenueItems-4;  
  }
  else if (DisplayFirstLine == CursorLine) {
    DisplayFirstLine--;
  }
  if (CursorLine == 0) {
    CursorLine = MenueItems-1;
  }
  else {
    CursorLine=CursorLine-1;
  }
  tone(BUZ_PIN, 1400,10);
  print_menue();
}
Gruß Wampo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.09.2015, 13:37
Beitrag #10
RE: Ausgabe entweder 0 oder 3
Hallo Wampo,

hattest du meine Anmerkung in Post #6 gesehen?
Ich denke du must es über die Anzahl Impulse des Encoders machen. Auswerten wenn er auf Zeile 1 steht und dann bei einem Impuls auf Zeile 4 springen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.09.2015, 17:59 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2015 18:05 von Wampo.)
Beitrag #11
RE: Ausgabe entweder 0 oder 3
(19.09.2015 13:37)hotsystems schrieb:  hattest du meine Anmerkung in Post #6 gesehen?

Ja hab ich gesehen. Das dumme is nur wenn ich den Encoder auslese und ihn zb mit rechts drehen einen wert hochzählen und links runterzählen lassen würde pro klick, dann muss ich meinen gesamten Code für ne menüführung übern haufen werfen.

Ich finde das mit dem navigationspfeil eben sau gut weil man sieht wo man ist.

Im grunde genommen will ich so eine Struktur aufbauen, nur leider machts bei mir nicht klick wies am besten geht. Die Pfeile stehen für die richtung in die man sich bewegen kann im Menü.

   

Ich weiß nicht ob es wirklich so schwierig ist diese Menüstruktur zu erstellen und sie mit einen Encoder durchzunavigieren oder ich es mir nur unnötig schwer mache.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2015, 13:16 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2015 13:17 von hotsystems.)
Beitrag #12
RE: Ausgabe entweder 0 oder 3
Ok, da ich nicht erkennen kann, wie du den Encoder ausliest, ist es schwierig weitere Tipps zu geben. Ich dachte nur, bei jedem aufwärtsdrehen bzw. abwärtsdrehen mitzählen und dann entsprechend den Wert ersetzen wenn die Menüposition die richtige ist.
Oder verwendest du für den Encoder eine Library?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2015, 13:57
Beitrag #13
RE: Ausgabe entweder 0 oder 3
Ich hab den gesamten Code oben per Download eingestellt. Wenn du willst kannst es dir mal anschauen.

Aber ich lese den Encoder via Interrupt aus und es wird ein unterprogramm ausgeführt wenn eben hoch oder runter gedreht wird
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  hilfe bei callback ausgabe per knopfdruck merz 5 173 15.04.2018 14:16
Letzter Beitrag: Tommy56
  RS 422 oder 485? AndyHoe 9 462 10.04.2018 18:51
Letzter Beitrag: Chopp
  MQTT ausgabe auf ili9341 wird flasch dargestellt merz 13 499 03.04.2018 11:30
Letzter Beitrag: merz
  Anfängerfrage zur Seriellen ausgabe??? merz 7 348 01.03.2018 22:06
Letzter Beitrag: hotsystems
  Mehrere Ausgänge mit einem Befehl auf High oder Low setzen dahans 1 515 10.01.2018 12:48
Letzter Beitrag: Tommy56
  Taster 1 mal drücken = LED 2 mal blinken oder aufblitzen gordolino 19 2.217 03.11.2017 15:14
Letzter Beitrag: ardu_arne
  Bluetooth vom Pc zum Arduino mit HC-06 oder HC-05 ? comfan 0 1.119 15.09.2017 08:25
Letzter Beitrag: comfan
  serial monitor, Ausgabe übereinander möglich?? silversurfer123 4 682 18.04.2017 19:19
Letzter Beitrag: silversurfer123
  mit if aus do-while oder while Schleife aussteigen Nafetz 6 971 05.12.2016 21:41
Letzter Beitrag: Pit
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 665 12.11.2016 20:29
Letzter Beitrag: Hannes

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste