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:
(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:
No jasne! Głupek ze mnie. Takie proste a ja to przegapiłem ... W złym miejscu deklarowałem zmienną ... Bardzo dziękuję!