• 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
Zmiana stanów logicznych oświetlenia
#1
Cześc Wam Smile
Tworzę projekt w którym można za pomocą aplikacji ustawić godzinę włączenia i wyłączenia oświetlenia. Ta część programu działa mi bardzo dobrze. Do tego chciałbym aby za pomocą dwóch przycisków w aplikacji (P1 - Świt, P2 - zmierzch) można było włączać i wyłączać oświetlenie manualnie. Na początku programu użyłem dwóch zmiennych: boolean swit = false; boolean zmierzch = false;. Następnie wstawiłem w kodzie w miejscu odbioru danych z bluetooth że w momencie odebrania wiadomości  ,,swit"  stan zmiennej swit zmieni się na true a zmiennej zmierzch na false. Tak samo z wiadomością do zmiennej zmierzch tylko z odwrotnym wynikiem.  Arduino fajnie odbiera wszystko z aplikacji przez bluetooth tylko problem jest ze stanami lampki. Kiedy lampka pracuje w przedziale czasowym ustawionym w aplikacji i nagle wyłączę ją za pomocą przycisków i włączę to następnie jeżeli minie zadany czas świecenia to ona dalej świeci. Tak samo jest kiedy  chciałbym ją włączyć w momencie kiedy jest wyłączona i czeka na czas włączenia, jeżeli ją włączę a potem wyłączę to w momencie kiedy jest czas żeby się automatycznie zaświeciła to tego nie zrobi. 

Próbowałem wielu metod, kilka było nawet prawie trafnych(coś zawsze nie do końca działało), próbowałem tablic prawdy, ale to na nic. Chciałbym zmieniać stany lampki tak żeby w trakcie jej pracy lub w momencie kiedy nie pracuje, manualnie włączać i wyłączać lampkę.

Czy jest ktoś, kto mógłby mi trochę podpowiedzieć, naprowadzić?
Kod funkcji timera odpowiadającego za załączenie i wyłączenie lampki o odpowiedniej godzinie wygląda tak:

//poczatkowa deklaracja zmiennych typu boolean (początek programu)

     boolean swit = false;
     booleand zmierzch = false;

//część programu w której arduino odbiera informacje z aplikacji

if (wiadomosc.length() > 0) {
     if(wiadomosc == "swit"){             //odwraca stany swit i zmierzch
          swit = true;           
          zmierzch = false;
     }
     if(wiadomosc == "zmierzch"){       //odwraca stany swit i zmierzch
          swit = false;
          zmierzch = true;
     }


// Własna FUNKCJA TIMER 1  (już poza pętlą loop)


boolean timer( int timerPin, byte hOn, byte mOn, byte sOn, byte hOff, byte mOff, byte sOff, byte timerStatus) {

  if  (timerStatus == 0) {
    digitalWrite(timerPin, OFF);
    return false;
  };

  boolean state = false;
  long tOn = (long(hOn) * 3600) + (long(mOn) * 60) + long(sOn);
  long tOff = (long(hOff) * 3600) + (long(mOff) * 60) + long(sOff);

  if (tOn < tOff) {
    if (currentTimeSec >= tOn && currentTimeSec < tOff) { 

//czyli jak czas jest wiekszy od momentu wlaczenia lampki i momentu wylaczenia lampki, przedzial w ktorym jest         wlaczona lampka
      state = true;
    }
  }

  if (tOn > tOff) {
    if (currentTimeSec >= tOn && currentTimeSec <= 86399) {
      state = true;
    }
    if (currentTimeSec >= 0 && currentTimeSec < tOff) {
      state = true;
    }
  }

   if(swit == true){       //jezeli swit jest true to zmienia sie stan state lampki na true czyli ma swiecic. 
     state = true; 
 }

  if(zmierzch == true){    //jezeli zmierzch jest true to zmienia sie stan state lampki na false i powiina nie swiecic
     state == false;
 }


  if (state) {
    analogWrite(led, jasnosc); // wejscie pwm jest deklarowane na pin leda o okreslonej jasnosci rownej 0
    jasnosc += wypelnienie;
    if (jasnosc > 255) //jesli jest powyzej 255, to ustalamy spowrotem 255
      jasnosc = 255;
    return true;   //zwraca wartosc state na true
  }
  else {
    analogWrite(led, jasnosc); // wejscie pwm deklarowane na pin led o jasnosci rownej 0
    jasnosc -= wypelnienie;
    if (jasnosc < 0) //jesli spadlo nam ponizej zera, to wracamy na wartosc 0.
      jasnosc = 0;
    return false;   //zwraca wartosc state na false
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Zmiana stanów logicznych oświetlenia - przez Krzaczek - 24-11-2019, 19:35

Skocz do:


Przeglądający: 1 gości