Ich stehe vor einem Problem. Das ganze Projekt sollte eigentlich recht einfach sein, aber ich komme einfach nicht weiter.
Gegeben: reed-sensor am Gaszähler, zwei Taster für "mode" und "set" und nen LCD + status LED. Die Signale des Gaszählers bekomme ich und auch auch der Zählerstand am Display wird aktualisiert. Nun wollte ich es etwas verbessern und den Startwert ohne PC anpassen. Also einen "mode" Taster an nen Digitalen Port und gleich noch einen "set" Taster angeschlossen. Ich schalte mit dem "mode" zeichenweise weiter und mit "set" soll +1 erhöht werden. So sollte dann der Startwert des Zählerstandes eingegeben werden.
Das Positionieren des Counters geht ohne Probleme, aber wie kann ich an einen LONG jede einzelne Stelle ändern ? ich dachte an substring, aber das kann ich in keiner Referenz finden. Notdürftig habe ich dann die Tausender Stelle +1000, die hunderter +100 u.s.w aber das ist Mist, da ich ja z.b. nach 9500 + 1000 = 10500 und nicht 0500 bekomme.
schwer zu erklären aber ich hoffe es hat für mich einer einen Tipp.
Wieso willst du einzelne Ziffern der Ausgabe ändern?
Gib doch den Long als Ganzes aus! Du kannst das LCD dann trotzdem wesentlich schneller aktualisieren als es das Auge verkraftet.
Wenn du nur jede Zehntelsekunde die Anzeige aktualisierst kann das Auge so gerade folgen. Wie lange brauchst du um dein Display vollständig zu aktualisieren? Dürfte deutlich weniger sein.
Gruß
pi
Ja das ausgeben ist nicht das Problem, aber das ändern des Counters. Also Einstellen des Startwertes. long counter ist 5 stellig, ich will aber nicht bei 00000 anfangen sondern den aktuellen Zählerstand am Gaszähler über zwei Taster einstellen. 1. Taster "mode" für das selektieren der Stelle, und ein zweiter Taster der beim betätigen die jeweilige Stellen erhöht. Prinzip wie ein Zahlenschloss .-)
Ja das ausgeben ist nicht das Problem, aber das ändern des Counters. Also Einstellen des Startwertes. long counter ist 5 stellig, ich will aber nicht bei 00000 anfangen sondern den aktuellen Zählerstand am Gaszähler über zwei Taster einstellen. 1. Taster "mode" für das selektieren der Stelle, und ein zweiter Taster der beim betätigen die jeweilige Stellen erhöht. Prinzip wie ein Zahlenschloss .-)
da ich ja z.b. nach 9500 + 1000 = 10500 und nicht 0500 bekomme.
warum prüfst du nicht etwa so:
if(zahl_davor + 1000 >= 10000){zahl_danach = zahl_davor-9000;}
..?
und genau das hatte ich probiert, aber erst nach deinem beitrag mitbekommen, dass 9001-9000=1 ist und das ohne ein clear() an der ersten Stelle steht, und dann natürlich ein 1001 steht. die Kontrollausgabe über serial. machte mich stutzig
lcd.setCursor(0,0);
lcd.print(zaehler);
if ( (zaehler+1000) > 10000 )
{
zaehler = zaehler - 9000;
Serial.println(zaehler);
}
else
{
zaehler = zaehler + 1000;
Serial.println(zaehler);
}
Vielen Dank für den Denkanstoß ! und einen schönen Abend.
du meinst also,dass wenn z.B. die zahl nur 3 stellen hat, die anzeige um eine stelle verschoben wird, bzw die erste null fehlt?
mein vorschlag ist dieser:
if (zaehler < 1000 && zaehler > 99)
{
Serial.println("0"+zaehler);
}
habs nicht ausprobiert und weiss deshalb nicht obs funktioniert...