Skocz do zawartości

Prośba o pomoc w napisaniu funkcji


SOYER

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(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
Link do komentarza
Share on other sites

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...

Link do komentarza
Share on other sites

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...

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.