Ich habe oben Sachen nachgetragen.
In Deinem Ursprungs-Code hast Du immer die Variable Cursor zur Ausgabe der Box verwendet, aber Du hast Cursor nie geändert, um die die Box für die nächste Zeile zu zeichnen.
MfG
Ich habe oben Sachen nachgetragen.
In Deinem Ursprungs-Code hast Du immer die Variable Cursor zur Ausgabe der Box verwendet, aber Du hast Cursor nie geändert, um die die Box für die nächste Zeile zu zeichnen.
MfG
Geändert von Moppi (02.01.2019 um 12:28 Uhr)
MMM, in der Loop habe ich dafür ein IF ELSE Konstrukt, wo der Wert für "Cursor" je nach IST-Position und Tastendruck wechselt....aber Du hast Cursor nie geändert, um die die Box für die nächste Zeile zu zeichnen
Die Koordinate der Box für Zeile 1 ist 8, da die oben links angegeben werden muss.
Die Schrift hat aber in der gleichen Zeile bei dem Font die 20, damit die mittig drin steckt.
Da müsste ich, sollte ich Variablen verwenden wollen, aus einer, eine zweite umrechnen lassen. Werde ich auch testen.
Achso entschuldige, nicht aufgepasst!
Also 20-8 = 12.
Code:u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,20-12,Bar1,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,20,"Wert 1 = "); // write something to the internal memory u8g2.setCursor(95, 20); u8g2.print(Bar1); // write something to the internal memory u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,40-12,Bar2,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,40,"Wert 2 = "); // write something to the internal memory u8g2.setCursor(95, 40); u8g2.print(Bar2); // write something to the internal memory u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,60-12,Bar3,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,60,"Wert 3 = "); // write something to the internal memory u8g2.setCursor(95, 60); u8g2.print(Bar3); // write something to the internal memory
Das ja, das stimmt. Aber für die Ausgabe nutzt das so nichts. Weil Du beim Schreiben in den Pixelpuffer immer alles neu schreibst, nachdem der Puffer gelöscht wurde.MMM, in der Loop habe ich dafür ein IF ELSE Konstrukt, wo der Wert für "Cursor" je nach IST-Position und Tastendruck wechselt.
MfG
Vielen Dank!
Ich habs nun verstanden. Ohne die Hilfe wäre das nicht geworden.
So:
geht es nun. Ich habe einen Pfeil vor dem aktiven Bargraph und alles läuft wie es soll.Code:u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_unifont_t_symbols); u8g2.drawGlyph(3,Cursor+12,0x2192); //Hier ist der Pfeil u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,8,Bar1,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,20,"Wert 1 = "); // write something to the internal memory u8g2.setCursor(95, 20); u8g2.print(Bar1); // write something to the internal memory u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,28,Bar2,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,40,"Wert 2 = "); // write something to the internal memory u8g2.setCursor(95, 40); u8g2.print(Bar2); // write something to the internal memory u8g2.setDrawColor(1); /* color 1 for the box */ u8g2.drawBox(10,48,Bar3,15); u8g2.setDrawColor(2); /* color 1 for the box */ u8g2.drawStr(25,60,"Wert 3 = "); // write something to the internal memory u8g2.setCursor(95, 60); u8g2.print(Bar3); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display delay(250);
Den Rest konnte ich so lassen.
Den Font und das Min Max des Wertes passe ich dann erstmal an...
Danke!
Prima, geschafft!
MfG
Super, nun habe ich noch einen EEPROM 24C16P in der Bastelkiste gefunden,
der jetzt die Werte des Drehencoders beim Drücken der Taste übernimmt.
Beim Einschalten werden die dann wieder ausgelesen und in die Variablen gesteckt.
So macht das Spass!
Nun die Frage dazu:
Die Speicherzellen des EEPROMs sollte man ja wohl "Im Kreis" nutzen, damit der länger hält.
Ist ein Siemens:
– Endurance 10"hoch"6 cycles1)
– Data retention 40 years1)
– ESD protection 4000 V on all pins
Ich werde den nicht ruinieren können. Ich weiß, eine SD-Card mit integriertem Controller nehmen...
Aber es geht hier ja ums lernen!
Deshalb trotzdem an die Profis, wie mache ich das mit der Speicherzellenausnutzung?
-Die Variable für die Adresse hochzählen?
-Aber wie lese ich dann am Start die Daten ab der "richtigen" (zuletzt gewählten) Zelle aus??
Da bin ich mit meinem Wissen am Ende.
Hallo Wolle62,
ich hatte die gleiche Frage und gute Antworten darauf bekommen.
https://www.roboternetz.de/community...-Flashspeicher
Für mich hat ein ganz einfacher Algorithmus gereicht. Nach Schreiben eine page die folgende komplette page mit einem Muster (hex ff durch Löschen) belegt. Und dann vor dem nächten Schreiben diese von Adresse Null aus gesucht, mit meinen Daten überschrieben und die nächste gelöscht. Also reihum alle Seiten nacheinander beschrieben.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Lesezeichen