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
Zähler
08.10.2015, 19:10
Beitrag #1
Zähler
Hallo,
ich möchte einen Intervall Timer Programmieren soweit hat das mit Eurer Hilfe auch gut geklappt.
Leider hänge ich aber momentan an einem kleinen kosmetischen Problem.
Und zwar wenn der Arduino meine Bilder herunterzählt, tut er von 1000 auf 999 springen ich möchte aber das er mir 0999 anzeigt, sprich egal wie lang meine Zahl ist er immer das Tausenderformat nimmt.
Vor dem herunterzählen werden mir nochmals paar Daten angezeigt darunter auch die Bilderzahl, dort wird der wehrt immer korrekt angezeigt, z.b. 0099. beim Herunterzählen allerdings eben nicht.
Code:
analogWrite(led4, 25);
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Clip: ");
          lcd.print(Bilder / 30);
          lcd.setCursor(0, 1);
          if (Bilder < 1000) lcd.print("T");
          if (Bilder <  100) lcd.print("H");
          if (Bilder <   10) lcd.print("Z");
          lcd.print((Bilder) - (i + 1));      // Restbilder von
          lcd.print(" von ");
          if (Bilder < 1000) lcd.print("t");
          if (Bilder <  100) lcd.print("h");
          if (Bilder <   10) lcd.print("z");
          lcd.print(Bilder);                  // Gesamtbilder
das T H Z ist nur zum sehen ob er mir auch den wert anzeigt der er anzeigen soll,das wird später durch 0 ersetzt.

Hoffe Ihr versteht was ich meine und könnt mir helfen.
Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2015, 19:28 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2015 19:31 von Wampo.)
Beitrag #2
RE: Zähler
Hy,

vielleicht probierst du mal so etwas aus.

Code:
void printDigits(int digits){

  lcd.print(":");
  if(digits < 10)
    lcd.print('0');
  lcd.print(digits);
}

hab das mal eben aus einer LCD Uhr rausgeschnibbelt. Mit dieser Anweisung zeigt die Uhr nicht 1:5:4 an sondern 01:05:04

Der rest dazu sieht so aus
Code:
void digitalClockDisplay(){
  // digital clock display of the time
  lcd.setCursor(0, 0);
  lcd.print(day());
  lcd.print("/");
  lcd.print(month());
  lcd.print("/");
  lcd.print(year());
  lcd.setCursor(0, 1);
  lcd.print(hour());
  printDigits(minute());
  printDigits(second());
}

MfG Wampo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2015, 18:16
Beitrag #3
RE: Zähler
(08.10.2015 19:28)Wampo schrieb:  Hy,

vielleicht probierst du mal so etwas aus.

Code:
void printDigits(int digits){

  lcd.print(":");
  if(digits < 10)
    lcd.print('0');
  lcd.print(digits);
}

hab das mal eben aus einer LCD Uhr rausgeschnibbelt. Mit dieser Anweisung zeigt die Uhr nicht 1:5:4 an sondern 01:05:04

Der rest dazu sieht so aus
Code:
void digitalClockDisplay(){
  // digital clock display of the time
  lcd.setCursor(0, 0);
  lcd.print(day());
  lcd.print("/");
  lcd.print(month());
  lcd.print("/");
  lcd.print(year());
  lcd.setCursor(0, 1);
  lcd.print(hour());
  printDigits(minute());
  printDigits(second());
}

MfG Wampo

Ist das nicht im Grunde das selbe wie ich habe?
Hab eben überlegt ob es hilft zwischen jedes" IF Bilder <xx " ein" print Bilder" zu machen? ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2015, 18:40 (Dieser Beitrag wurde zuletzt bearbeitet: 09.10.2015 18:48 von HaWe.)
Beitrag #4
RE: Zähler
Leute, warum so umständlich?
Wir programmieren hier doch in C, und in C gibt es die Funktion sprintf(), die eine ganze Reihe von Variablen komplett zu einem string formatieren kann, sogar immer Zahlen 2-stellig samt führenden Nullen (ist year 2- oder 4-stellig? ) plus "vor/zwischen/dahinter-Zeichen" !

Code:
char sbuf[20];

lcd.setCursor(0, 0);
sprintf(sbuf, "%02d/%02d/%04d", day(),month(),year());
lcd.print(sbuf);

lcd.setCursor(0, 1);
sprintf(sbuf, "%02d:%02d:%02d", hour(), minute(), second());
lcd.print(sbuf);

wenn nicht in 2er- sondern in 4er-Länge mit führenden Nullen, heißt es eben "%04d" pro Variable.
das macht 1 zu 0001
23 zu 0023
456 zu 0456
und 6789 bleibt wie es ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2015, 01:01
Beitrag #5
RE: Zähler
(09.10.2015 18:40)HaWe schrieb:  Leute, warum so umständlich?
Wir programmieren hier doch in C, und in C gibt es die Funktion sprintf(), die eine ganze Reihe von Variablen komplett zu einem string formatieren kann, sogar immer Zahlen 2-stellig samt führenden Nullen (ist year 2- oder 4-stellig? ) plus "vor/zwischen/dahinter-Zeichen" !

Code:
char sbuf[20];

lcd.setCursor(0, 0);
sprintf(sbuf, "%02d/%02d/%04d", day(),month(),year());
lcd.print(sbuf);

lcd.setCursor(0, 1);
sprintf(sbuf, "%02d:%02d:%02d", hour(), minute(), second());
lcd.print(sbuf);

Tzja leider funktioniert das bei mir nicht, da ich "Bilder" nicht als funktion nutzen kann. "Bilder" ist ein int wert der aus Intervall und Dauer berechnet wird.

wenn nicht in 2er- sondern in 4er-Länge mit führenden Nullen, heißt es eben "%04d" pro Variable.
das macht 1 zu 0001
23 zu 0023
456 zu 0456
und 6789 bleibt wie es ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2015, 09:21
Beitrag #6
RE: Zähler
mein lieber Uwe,
du hast in deinem Titel und auch in deinem TOP nach einem "Zähler" gefragt, den du formatieren willst, und zwar auf 4 Stellen mit führenden Nullen.
Jetzt kommst du hier plötzlich mit "Bilder" an, was immer das sein soll, das hast du noch nicht mal erläutert.

Aber nur soviel:
- dein "Zähler" lässt sich wie beschrieben und gewünscht mit sprintf formatieren.
- auch alles andere, was du mit Serial.print schreiben kannst, lässt sich über sprintf formatiert schreiben - und noch viel mehr.
- wenn du bestimmte darüber hinausgehende Formatierungsprobleme hast, so lassen sie sich - wenn überhaupt, und in jedem Falle auch - mit sprintf lösen, denn sprintf ist die wohl mächtigste Formatierungsfunktion, die die Sprache C (oder die überhaupt irgendeine Sprache der gesamten Computer-Programmierwelt) überhaupt zu bieten hat .
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2015, 16:53 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2015 17:01 von Uwe1475.)
Beitrag #7
RE: Zähler
(11.10.2015 09:21)HaWe schrieb:  mein lieber Uwe,
du hast in deinem Titel und auch in deinem TOP nach einem "Zähler" gefragt, den du formatieren willst, und zwar auf 4 Stellen mit führenden Nullen.
Jetzt kommst du hier plötzlich mit "Bilder" an, was immer das sein soll, das hast du noch nicht mal erläutert.

Aber nur soviel:
- dein "Zähler" lässt sich wie beschrieben und gewünscht mit sprintf formatieren.
- auch alles andere, was du mit Serial.print schreiben kannst, lässt sich über sprintf formatiert schreiben - und noch viel mehr.
- wenn du bestimmte darüber hinausgehende Formatierungsprobleme hast, so lassen sie sich - wenn überhaupt, und in jedem Falle auch - mit sprintf lösen, denn sprintf ist die wohl mächtigste Formatierungsfunktion, die die Sprache C (oder die überhaupt irgendeine Sprache der gesamten Computer-Programmierwelt) überhaupt zu bieten hat .

Mein Lieber HaWe,
doch habe ich...im ersten Post steht ganz deutlich drin das es sich um einen Intervall Zähler handelt der Bilder herunter zählen soll, und beim Übergang von z.b. 1000->999 eben NICHT 0999 macht sondern 999.
und Dieses
Code:
sprintf(sbuf, "%02d:%02d:%02d", hour(), minute(), second());
lcd.print(sbuf);
Hatte ich dann so umgewandelt
Code:
sprintf(sbuf, "%04d", Bilder());
lcd.print(sbuf);
und dann hies es das man "Bilder" nicht als wehrt nehmen kann.

und wenn ich ihn so geschrieben habe wurden mir an der stelle anstelle der Zahlen für die Bilder nur wirre Zeichen ausgegeben
Code:
sprintf(sbuf, "%04d", Bilder);
lcd.print(sbuf);

ausser ich hätte natürlich eben bei der Schreibweise etwas falsch umgestellt. Hab auch mal im Netz näheres zu diesem Befehl gesucht doch nichts gefunden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2015, 17:01 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2015 17:08 von HaWe.)
Beitrag #8
RE: Zähler
mein lieber Uwe... Wink

WTF ist Bilder()? das hast du nirgends geschrieben
Du schriebst aber nur von Zähler formatieren - woher zum Teufel soll ich wissen was Bilder() ist ??

Was spricht im übrigen dagegen, Bilder() (was immer das sein mag) weiterhin so auszugen, wie du es bisher getan hast, und dann den formatierten Zähler wie beschrieben? Aber wenn Bilder() nicht der Zähler ist, was ist es dann ???

Aber sei doch mal so nett und erkläre, was das mit den ominösen Bilder() 's auf sich hat!
Und was dann stattdessen der Zähler ist.

wieso schreibst du außerdem oben nur Bilder, und unten Bilder() mit den Klammern??
Bilder() mit Klammern ist eine Funktion, Bilder ohne Klammer ist eine einfache Variable, wie z.B. eine int Zahl.
Die musst du aber doch irgendwo definiert haben, so oder so?

Aber wo?
Im Sketch steht nichts, sondern nur von einem "Zähler".

Hilfreich wäre aber sowieso, immer den kompletten Sketch zu sehen.
Komplett heißt: wirklich komplett, also alles. Alles alles, gewissermaßen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  "Nichtlineare" Zähler Turbo-S 13 670 20.07.2016 19:38
Letzter Beitrag: Turbo-S
  Hardware Zähler MasT3r-A 4 526 24.01.2016 21:33
Letzter Beitrag: ardu_arne
  Array mit Zähler steuern ferdi 20 1.603 19.11.2015 15:11
Letzter Beitrag: ardu_arne
  BCD Zähler 0-9999 peterunterhofer 6 1.345 06.03.2015 12:49
Letzter Beitrag: Foto-Ralf
  Zähler in verschiedenen Modi betreiben Nimes 2 662 25.09.2014 10:19
Letzter Beitrag: Nimes
Bug Zähler von 0 - 1023 mit Rotary Encoder....Wie??? Wampo 1 1.497 15.12.2013 13:48
Letzter Beitrag: Wampo

Gehe zu:


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