Arduino Polska Forum
funkcja dla Tiny RTC w celu przechowania strnga z czasem - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: funkcja dla Tiny RTC w celu przechowania strnga z czasem (/watek-funkcja-dla-tiny-rtc-w-celu-przechowania-strnga-z-czasem)



funkcja dla Tiny RTC w celu przechowania strnga z czasem - hebdzik - 14-06-2020

Kod:
#include <DS1307RTC.h>
String showtime;

String czas;
void setup() {
  Serial.begin(9600);    // the SERIAL baud rate
  delay(5000);
  gettime();
  delay(100);
  Serial.println(showtime);
}

void gettime(){
  tmElements_t tm;
  showtime = " ";
 
  if (RTC.read(tm)){
    showtime = "Czas: ";
    showtime += tmYearToCalendar(tm.Year);
    showtime += "/";
    showtime += tm.Month;
    showtime += "/";
    showtime += tm.Day;
    showtime += ", ";
    showtime += tm.Hour;
    showtime += ":";
    showtime += tm.Minute;
    showtime += ":";
    showtime += tm.Second;
    showtime += " .";
  }
  else {
    if (RTC.chipPresent()) {
      showtime = "The DS1307 is stopped.  Please run the SetTime";
    } else {
      showtime = "DS1307 read error!  Please check the circuitry.";
    }
  }
  showtime = "blad RTC!";
}
problem w tym ze nie mogę przechować to w zmiennej showtime, ani nie moge zrobić żeby funkcja gettime() zwracała to na zasadzie return showtime. kod się wysypuje na Serial.println();


RE: funkcja dla Tiny RTC w celu przechowania strnga z czasem - Robson Kerman - 14-06-2020

Funkcja gettime() nie może nic zwrócić, ponieważ skonstruowałeś ją tak, aby nic nie zwracała.
Gdybyś napisał:

Kod:
String gettime(){
  String showtime =" ";
   //jakiś kod

   return showtime;
}

To wtedy by zwracała Stringa.
Następnie pozbądź się zmiennych globalnych.
Wyświetlasz wyniki np. tak:
Kod:
Serial.println(gettime());

I wywal te dalaye. To do niczego nie służy.


RE: funkcja dla Tiny RTC w celu przechowania strnga z czasem - hebdzik - 15-06-2020

(14-06-2020, 22:44)Robson Kerman napisał(a): Funkcja gettime() nie może nic zwrócić, ponieważ skonstruowałeś ją tak, aby nic nie zwracała.
Gdybyś napisał:

Kod:
String gettime(){
  String showtime =" ";
   //jakiś kod

   return showtime;
}

To wtedy by zwracała Stringa.
Następnie pozbądź się zmiennych globalnych.
Wyświetlasz wyniki np. tak:
Kod:
Serial.println(gettime());

I wywal te dalaye. To do niczego nie służy.

czyli tu był pies pogrzebany, nie void a String, tego nie wiedziałem. Własnie problem byl taki ze co wsadziłem return to wywalał błąd.

Co do zmiennych globalnych to jak inaczej je obejść jak ciągle wywala ze brak deklaracji zmiennych, dlatego tworze je jako globalne, jak je zaimplementować lokalnie na chwile żeby pamięci nie zjadały?


RE: funkcja dla Tiny RTC w celu przechowania strnga z czasem - Robson Kerman - 17-06-2020

(15-06-2020, 22:33)hebdzik napisał(a): Co do zmiennych globalnych to jak inaczej je obejść jak ciągle wywala ze brak deklaracji zmiennych, dlatego tworze je jako globalne, jak je zaimplementować lokalnie na chwile żeby pamięci nie zjadały?

Budujemy funkcje zwracające wartość. Wtedy zmienne żyją tylko na czas działania funkcji.
Wewnątrz funkcji możesz ograniczać zasięgi zmiennych klamrami.