logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8] [Atmega8][C] Jak dodać funkcję załączania przekaźnika o określonej godzinie?

mati852.5 27 Maj 2017 20:58 1443 7
REKLAMA
  • #1 16498656
    mati852.5
    Poziom 7  
    Witam,
    chciałbym przerobić projekt z tego linku https://www.elektroda.pl/rtvforum/topic900947.html
    Mianowicie zostawić odliczanie czasu i wyświetlanie go a dodać do niego funkcję w której o wpisanej "na stałe" godzinie w funkcji załączy przekaźnik.
    Przekaźnik jest 4 modułowy więc potrzebuje 4 wolnych pinów. Kod, który zmodyfikowałem wygląda następująco ale nie załącza przekaźnika o zaprogramowanej godzinie, stąd moje pytanie, gdzie dodać funkcję która o wskazanej godzinie będzie załączać przekaźnik :)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 16501096
    dondu
    Moderator na urlopie...
    Na przykład tam gdzie odmierzana jest każda sekunda, czyli w przerwaniu ISR(TIMER2_OVF_vect).
    Należy dopisać część porównującą zadane wartości sekundy minut i godzin odpowiednio z t.second, t.min i t.hour.
  • REKLAMA
  • #3 16501100
    maciej_333
    Poziom 38  
    Chyba najprościej byłoby to zrobić w przerwaniu od Timera 2. Potrzebny byłby warunek w stylu:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Odpowiada to godzinie 12:11:23. Należy dodać taki kod zaraz przy wyjściu z przerwania tj. po wszystkich warunkach. Pytanie kiedy ma być ten przekaźnik wyłączany ?[/code]
  • #4 16501203
    mati852.5
    Poziom 7  
    Przekaźnik miałby wyłączać się po 30 sekundach pp czym do przy następnej wyznaczonej godzinie załączyć kolejny przekaźnik z modułu. Ale to chyba wystarczy dobrać odpowiedni przedział czasowy w warunku if?
  • REKLAMA
  • #5 16501237
    maciej_333
    Poziom 38  
    mati852.5 napisał:
    Przekaźnik miałby wyłączać się po 30 sekundach pp czym do przy następnej wyznaczonej godzinie załączyć kolejny przekaźnik z modułu. Ale to chyba wystarczy dobrać odpowiedni przedział czasowy w warunku if?

    Nie wiem czy dobrze to zrozumiałem, ale jeśli o jakiejś godzinie ma się załączyć przekaźnika 1, potem o innej godzinie przekaźnik 2 i każdy z nich wyłączyć po 30 s, to można zastosować np. taki kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Taki kod powinno się powielić dla każdego z przekaźników.
  • REKLAMA
  • #6 16501554
    mati852.5
    Poziom 7  
    No prawie tak tylko można to zrobić jednym if i potem else if żeby zakończyć?
  • #8 16802205
    mati852.5
    Poziom 7  
    Teraz wszystko działa, przekaźnik załącza się i wyłącza o zaprogramowanych godzinach, dzięki za pomoc :)
REKLAMA