• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czar "0" z przodu...
#8
(09-02-2023, 21:58)kaczakat napisał(a): Można sobie użyć gotowej funkcji sprintf, np. taki kod:
Kod:
//sprintf - formatowanie do bufora  http://mikrokontrolery.blogspot.com/2011/02/printf-instrukcja-rodzina.html
/*
*  flash/RAM
* Sprintf 3646/223 - + 1300flash i bufor
kolejna linijka z Sprintf 3708/223
Skrótem 2340/201
Pelny z F 2460/199
Pelny bez F 2390/203

*
*/
uint32_t czasTeraz,czasPoprzedni,tik=10; //tik musi byc mniejszy niz 1000 i dzilic 1000ms na rowne czesci
uint8_t nTik,sekundy,minuty,godziny,dni; //liczniki tikow, sekund, itd.
bool fnTik,fsekundy,fminuty,fgodziny,fdni; //flagi zdarzen nowy tik, nowa sekunda,minuta, godzina, dzien
char napis[10];
void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED_BUILTIN,OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
czas();






if(fsekundy) {
sprintf(napis,"%03d:%02d:%02d",godziny,minuty,sekundy);
Serial.println(napis);


}

if(fnTik&&! (nTik%20)) digitalWrite(LED_BUILTIN,! digitalRead(LED_BUILTIN));//gdy nowy tik i co 20 tikow
}


void czas()
{
  czasTeraz=millis();
fnTik=fsekundy=fminuty=fgodziny=fdni=0;
if((uint32_t)(czasTeraz-czasPoprzedni)>=tik) //tan napisany warunek jest odporny na "klątwe 50 dni millis()"
{
  czasPoprzedni=czasTeraz;
  fnTik=1;
  nTik++;
  if(nTik>=(1000/tik))
  {
    nTik=0;
    sekundy++;
    fsekundy=1;
     if (sekundy>=60)
    {
      sekundy=0;
      minuty++;
      fminuty=1;
      if (minuty>=60)
      {
        minuty=0;
        godziny++;
        fgodziny=1;
        if (godziny>=24)
        {
          godziny=0;
          fdni=1;
          dni++;
   
        }
      }
    }
  }
}
}
W efekcie daje wydruk co 1s:
000:00:01
000:00:02
000:00:03
itd.



Bardzo, bardzo dziekuję. Jeszcze u mnie
nie zadziałało, ale pracuje nad tym Smile
 
Odpowiedź
  


Wiadomości w tym wątku
Czar "0" z przodu... - przez Lession - 09-02-2023, 15:45
RE: Dodawanie do czar "0" z przodu - przez Lession - 09-02-2023, 21:19
RE: Dodawanie do czar "0" z przodu - przez Lession - 09-02-2023, 21:34
RE: Czar "0" z przodu... - przez MadMrQ - 09-02-2023, 21:56
RE: Czar "0" z przodu... - przez Lession - 10-02-2023, 00:17
RE: Czar "0" z przodu... - przez kaczakat - 09-02-2023, 21:58
RE: Czar "0" z przodu... - przez Lession - 10-02-2023, 00:18
RE: Czar "0" z przodu... - przez Lession - 11-02-2023, 20:33
RE: Czar "0" z przodu... - przez Jarewa0606 - 12-02-2023, 01:37
RE: Czar "0" z przodu... - przez Lession - 12-02-2023, 11:04
RE: Czar "0" z przodu... - przez Lession - 12-02-2023, 15:38
RE: Czar "0" z przodu... - przez kaczakat - 12-02-2023, 21:19
RE: Czar "0" z przodu... - przez MadMrQ - 14-02-2023, 19:51

Skocz do:


Przeglądający: 1 gości