• 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
funkcja dla Tiny RTC w celu przechowania strnga z czasem
#1
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();
 
Odpowiedź
#2
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.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
(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?
 
Odpowiedź
#4
(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.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości