Wątek przeniesiony 2018-11-08 11:57 z Inne języki programowania przez Marooned.

Arduino działanie opkreslonej funkcji w okreslonym czasie

0

Cześć robie sobie mały projekt i stanołem przed pwenym problemem z którym nie potrafie sobie poradzić otóż mam 3 funkcje które sterują czterema przekaźnikami

1 Funkcja start przekaźnika 1 i 2
2 Funkcja start przekaźnika 3
3 Funkcja start przekaxnika 4

I z tym jest git, tyle że teraz muszę to uruchamiać w określonym czasie, i tu pojawia się problem mojej małej wiedzy w programowaniu.

Załozeniem jest aby:
funkcja 1: startowała w każdą sobotę o np 19:00 i sie wykonywała w całości,
funckja 2: startowała codziennie od 10 rano i trzymała przekaźnik do 17.
funkcja 3: startowała codziennie o np 17 na 30 minut

Próbowałem używać millis(); z tej ale to nie rozwiązuje mojego problemu gdyż tam mogę robić np włączenie przekaźnika za 10 minut ale już go nie zatrzymuje bo nie wiem jak odmierzyć w tym 60 minut aby nie przerywać liczenia pozostałych funcji







/*----------------------------------------------------------------------------------*/
unsigned long previousMillis = 0;        
const long interval1 = 60000;  //1 minuta
const long interval2 = 45000;  //45 sekund
const long interval3 = 30000;  //30sekund
const long interval4 = 15000;  //15sekund
/*----------------------------------------------------------------------------------*/








void setup()
{
//ustawienia przekaznikow
}



void loop()
{

/* automatyczna funkcja z odmierzaniem */

  unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= interval1) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;
    
   digitalWrite(przekaznik1, LOW);

    }
        if (currentMillis - previousMillis >= interval2) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;
       digitalWrite(przekaznik2, LOW);


    }
    
    
        if (currentMillis - previousMillis >= interval3) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;
       digitalWrite(przekaznik3, LOW);


    }
            if (currentMillis - previousMillis >= interval4) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;
       digitalWrite(przekaznik4, LOW);
       

    }
 
 
} 


Nie wiem czy tego milles uzywac czy tu ma jakiś switch case ma byc :(

0

Nie znam się na arduino, ale z tego co poszperałem masz bibliotekę o nazwie TaskScheduler

1 użytkowników online, w tym zalogowanych: 0, gości: 1