Skocz do zawartości

Prośba o pomoc w napisaniu funkcji


Pomocna odpowiedź

Napisano (edytowany)

Cześć, chcę na podstawie godzin wschodu i zachodu słońca sterować lampami. Jednak dołożyłem offsetTime żeby dodatkowo móc ustawić przesunięcie tego czasu bardziej w "ciemniejszą stronę dnia", np o 40 minut.

Napisałem funkcję i o ile dla zachodu działa to znakomicie tak dal wschodu pokazuje bzdury. Nie potrafię zobaczyć błędu logicznego.


   if((minutesZ + offsetTime) > 59){
    minutyZ = ((minutesZ + offsetTime) -57);
    godzinyZ = (hoursZ +1);
   }
   else if((minutesW - offsetTime) < 1){
    minutyW = ((minutesW - offsetTime) +60);
    godzinyW = (hoursW -1);
   }

minutesZ, hoursZ, czas zachodu

minutesW, hoursW czas wschodu

wszystkie zmienne to int

Kto pomoże?

 

Edytowano przez SOYER
(edytowany)

Rozwiązanie banalne, ale od wczoraj nad tym siedziałem.

Po raz kolejny sprawdziła się metoda opisania komuś problemu i wtedy od razu sami widzimy rozwiązanie.

...else...

program sprawdzał minuty zachodu i ustawiał nową godzinę zachodu w.g. której ma się zapalać światło, ładnie wypisywał w konsoli nową godzinę zachodu...

a skoro to zrobił w tym if to już do else nie wchodził...:)) dlatego dla wschodu wypisywał bzdury 

void pobierzCzas() {
printRiseAndSet(50.0169,    18.8098,  +1,  suplaClock.getDay(), suplaClock.getMonth(), suplaClock.getYear());
  if (sekund10.available()) {
   if((minutesS + offsetTime) > 59){
    minutyZ = ((minutesS + offsetTime) -60);
    godzinyZ = (hoursS +1);
   }
    if((minutesR - offsetTime) < 1){
    minutyW = ((minutesR - offsetTime) +60);
    godzinyW = (hoursR -1);
   }
   if((clock1.getHour() >= godzinyZ) && (clock1.getMin() >= minutyZ)){
      night = true;
      Serial.println("godzina i minuta wyższa od zachodu i nizsza od wschodu");
    }
    else if((clock1.getHour() <= godzinyW) && (clock1.getMin() <= minutyW)){
      night = true;
      Serial.println("godzina i minuta wyższa od zachodu i nizsza od wschodu");
    }
    else{
      night = false;
      Serial.println("godzina i minuta NIE JEST wyższa od zachodu i nizsza od wschodu");
    }
    sekund10.restart();
  }
}

Zmylił mnie brak zainicjowania zmiennych minutyW i godzinyW jakąś wartością, więc wypisywał bzdury, a ja się zastanawiałem dlaczego źle liczy, a on tego wcale nie liczył, tylko wstawiał "coś" przy inicjacji.

Edytowano przez SOYER
(edytowany)

Zapytam jeszcze jak wyświetlić/zapisać do zmiennej String wartość tablicy char.

Mam

char buf[200] = {};

do której zapisuję jakiś ciąg znaków,

jak wypisać w Serial monitorze ten ciąg znaków, jak go zapisać do String, żeby móc go użyć w kodzie?

Edytowano przez SOYER
(edytowany)

Worek złota za link do czujnika ruchu zasilanego z 12V i zwracającego 3.3V.

Lub zasilanego z 12V i z wyjściami COM i NO lub NC.

Lub od bidy zasilany z 12V i wracający 12V, jakie  oporniki na obniżenie do 3.3?

Montaż na zewnątrz, w puszce lub bez. Jak będzie mały to jeszcze lepiej.

 Te małe mikrofalowe już mnie wkurzają.

🍻

Edytowano przez SOYER
2 minuty temu, SOYER napisał:

jakie  oporniki na obniżenie do 3.3?

transoptory najlepiej - masz przy okazji separację

Rozumiem, że HC-SR501 nie pasuje (ja bym go na zewnątrz też nie montował). Niestety, moja wiedza o czujnikach ruchu jest "nieco" zardzewiała, ale aledrogo na pytanie "czujnik ruchu PIR 12V" zwraca dość dużo wyników...

1 godzinę temu, SOYER napisał:

 Te małe mikrofalowe już mnie wkurzają.

🍻

Jakiego modelu używasz? I czemu Cię wkurzają? Pytam bo sam mam w planach na czasie użycie czegoś do wykrywania ruchu i mikrofalowe wydały mi się spoko...

Dwa zaczęły działać jak dotykowe, reagują po dotyku, inaczej nic nie widzą. Kolejny wysyła losowego HIGH, jak na pewno nic nie widzi, z zadziwiającą regularnością, jutro sprawdzę kolejnego...

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...