• 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
Dwie funkcje wykonywane w określonym czasie
#1
Cześć proszę o podpowiedź z moim kolejnym problemem, mam dwie funkcje jedna odpowiedzialna za prace przekaźników 1 i 2 z którą już poradziłem sobie (osobny temat na forum), oraz drugą która zwraca mi aktualny czas (data + czas) z RTC. 

Teraz się zastanawiam nad tym jak pobrać czas z tego RTC, tak aby jedna funkcja działa mi w każda sobotę miesiąca przez cały rok o np 19, a druga co dziennie o 14 włączała przekaźnik nr 3 na godzinę. A ostatnia włączała przekźnik nr 4 codziennei od 10 do 17.


Kod:
void obecnyCzas() {
DateTime now = RTC.now();

 
 lcd.init();
 lcd.backlight();
 lcd.setCursor(0,0);
 LCDprint2digits(now.hour());
 lcd.print(":");
 LCDprint2digits(now.minute());
 lcd.print(":");
 LCDprint2digits(now.second());
 lcd.setCursor(0,1);
 lcd.print(now.day());
 lcd.print("/");
 lcd.print(monthName[now.month()-1]);
 lcd.print("/");
 lcd.print(now.year());
 delay(5000);
}

To moja funckaja która na LCD wyświetla czas, oczywiście jak w przypadku mojego pierwszego posta nie bedę siedział z założonymi rekoma tlyko szukam rozwiązania.
 
Odpowiedź
#2
Poradziłem sobie z godzinami :Smileały czas wklepywałem kod w główną petle loop() co było błedem gdy wkolepałem kod w funkcję od zwracania z RTC czasu zadziałało lecz nadal nie wiem jak zrobić aby jedna z funkcji startowała tylko w sobote Sad

Poniżej kod jak to zrobiłem

Kod:
void obecnyCzas() {
DateTime now = RTC.now();

 lcd.init();
 lcd.backlight();
 lcd.setCursor(0,0);

 lcd.print("Godzina:");
 p2d(now.hour());
 lcd.print(":");
 p2d(now.minute());
 lcd.print(":");
 p2d(now.second());
 lcd.setCursor(0,1);
 lcd.print("Data: ");
 lcd.print(now.day());
 lcd.print("/");
 lcd.print(monthName[now.month()-1]);
 lcd.print("/");
 lcd.print(now.year());
 //sprawdzenie czasu i zapisanie minut do zmiennej int czasS
 int czasS = now.minute();
 lcd.init();
 lcd.backlight();
 lcd.setCursor(0,0);
 lcd.print("Godzina:");
 lcd.print(czasS);

 delay(500);

//wlaczanie lub wylaczenie danego przekaznika o danej godzienie lub minucie
if (czasS == 40){
 digitalWrite(p1, LOW);
 }
if(czasS ==45){
 digitalWrite(p1, HIGH);
 }


 
if (czasS == 42){
 digitalWrite(p2, LOW);
 }
if(czasS ==44){
 digitalWrite(p2, HIGH);
 }
}
 
oraz mam pytanie czy takie coś da się zapisać inaczej jakoś prościej Big Grin
Kod:
if (czasS == 40){
 digitalWrite(p1, LOW);
 }
if(czasS ==45){
 digitalWrite(p1, HIGH);
 }

 
if (czasS == 42){
 digitalWrite(p2, LOW);
 }
if(czasS ==44){
 digitalWrite(p2, HIGH);
 }
 
Odpowiedź
#3
Ok dałem sobie radę z dniami tygodnia Big Grin i teraz jak z tego brać tylko soboty wydaje mi się że char [] [] to tablica dwuwymiarowa :/


char DOW[][4]={"SUN","MON","TUE","WED","THU","FRI","SAT"};
DOW[now.dayOfTheWeek()]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości