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.

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?

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
  mit if aus do-while oder while Schleife aussteigen Nafetz 6 124 05.12.2016 21:41
Letzter Beitrag: Pit
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 98 12.11.2016 20:29
Letzter Beitrag: Hannes
  Welche IDE? Arduini.cc oder .org Bilbo 1 209 17.10.2016 21:03
Letzter Beitrag: ardu_arne
  Ausgabe auf WIFI Console vom UNO WIFI MZ-Lurre 0 92 17.10.2016 11:33
Letzter Beitrag: MZ-Lurre
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 359 16.10.2016 14:07
Letzter Beitrag: Pit
  Programmspeicher auf i2c_EEPROM oder SD_Card erweitern? avoid 11 349 11.07.2016 15:46
Letzter Beitrag: avoid
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 744 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Servo und PWM Ausgabe F2Ingo 4 497 17.06.2016 14:53
Letzter Beitrag: F2Ingo
  IDE von .org oder .cc besser geeignet? Bit of Byte 4 451 01.03.2016 21:57
Letzter Beitrag: arduinopeter
  Pretzelboard oder C.Control Warmbronner 1 534 22.02.2016 20:14
Letzter Beitrag: hotsystems

Gehe zu:


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