• 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
przechowywanie danych string - Arduino zapomina?
#1
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!
 
Odpowiedź
#2
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(".")
 
Odpowiedź
#3
(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ę!
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości