Arduino Polska Forum

Pełna wersja: przechowywanie danych string - Arduino zapomina?
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Kod:
if (rtc.getSecond()%2==0){
    char secondCheck[]=":";
    Serial.println(secondCheck);
  }
  else{
    char secondCheck[]=".";   
    Serial.println(secondCheck);
  }

Serial.println(secondCheck);
Witam!
Mam problem i już nie wiem gdzie pukać ... Potrzebuję zachować wartość tekstową zależnie od warunku if. string jest zachowywany ale tylko do końca komendy if. potem jest pusty. Co robię nie tak i jak mogę to poprawić? Potrzebuję ją ustawić w komendzie if a wykorzystać dalej w kodzie.
Kawałek kodu jaki mi sprawia problem wraz z wydrukiem na port szeregowy oraz wynik z portu szeregowego:

.


.


.


:


:


:


:


:
jak widać jak wysyłam na szeregowy w ramach komendy if to wartość secondCheck jest poprawna. Ale jak to samo zrobię już po else to wartość jest pusta - stąd puste entery powyżej.

Prośba o skierowanie mnie na właściwy trop!
Jeżeli zmienna jest deklarowana pod if to tylko tam jest jej zasięg. Po wyjściu z pętli przestaje istnieć.
Aby została zachowana musi mieć przedrostek static - np. static char secondCheck[]

W twoim wypadku najprościej przenieść deklarację zmiennej przed ifa, ale pytanie po co ta zmienna tam w ogóle jest?
Kod:
char secondCheck[]

if (rtc.getSecond()%2==0){
    secondCheck[]=":";
    Serial.println(secondCheck);
  }
else{
    secondCheck[]=".";  
    Serial.println(secondCheck);
  }

Serial.println(secondCheck);

Nie prościej napisać po prostu:
Kod:
Serial.println(".")
(19-01-2023, 21:38)MadMrQ napisał(a): [ -> ]Jeżeli zmienna jest deklarowana pod if to tylko tam jest jej zasięg. Po wyjściu z pętli przestaje istnieć.
Aby została zachowana musi mieć przedrostek static - np. static char secondCheck[]

W twoim wypadku najprościej przenieść deklarację zmiennej przed ifa, ale pytanie po co ta zmienna tam w ogóle jest?
Kod:
char secondCheck[]

if (rtc.getSecond()%2==0){
    secondCheck[]=":";
    Serial.println(secondCheck);
  }
else{
    secondCheck[]=".";  
    Serial.println(secondCheck);
  }

Serial.println(secondCheck);

Nie prościej napisać po prostu:
Kod:
Serial.println(".")

No jasne! Głupek ze mnie. Takie proste a ja to przegapiłem ... W złym miejscu deklarowałem zmienną ... Bardzo dziękuję!