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

[Bascom] Jak dodać wschody i zachody słońca do kalendarza na DS1307 w Bascom?

slavcio2012 01 Sty 2016 08:24 1230 3
  • #1 15287495
    slavcio2012
    Poziom 15  
    Witam,
    Chciałbym mój kalendarz na DS1307 wzbogacić o załączanie urządzenia zgodnie z wschodem i zachodem słońca w necie wyszukałem niezbędne dane np.
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    za pomocą if raczej to odpada jak można to zrobić prościej ? :-)
  • #2 15287577
    pawlik118
    Poziom 32  
    Witam,
    Może takim sposobem, żeby ręcznie stworzyć bazę danych godzin i minut wschodów i zachodów (na oko na dzień mamy 4 bajty danych x 365 dni to daje 1,5k kodu, dość dużo wpisywania).
    Następnie bierzemy dany dzień roku (jest na to procedura w bascomie) i mnożymy x4 i odejmujemy 4, czyli Adres =( dzien_roku * 4 ) - 4, po czym wywołujemy od tego adresu 4 bajty danych z naszej 1,5k tablicy danych z użyciem lookup.

    To jest jakiś sposób na pozbycie się if-ów, jednakże proces wpisywania danych bardzo czasochłonny.

    Też to planuję kiedyś zrobić, ale chyba łatwiej byłoby zaimplementowac jakiś algorytm, coś w rodzaju http://electronics598.rssing.com/browser.php?indx=8435866&item=4216
  • #3 15287593
    ZbeeGin
    Poziom 39  
    Specjalna struktura w pamięci EEPROM (w wewnętrznej pełen rok się raczej nie zmieści) lub FLASH o stałym rozmiarze dla każdego wpisu, wyszukiwanie binarne i zestaw czterech warunków.
    Jeśli tablica będzie posortowana według klucza z datą to wyszukiwanie binarne będzie szybkie (max. 8 iteracji). Stąd będziesz miał już właściwy indeks (offset). Potem sprawdzanie czy urządzenie ma się załączyć tego dnia, porównanie godzin załączenia i wyłączenia z aktualną godziną, i odpowiednia akcja.

    Zastosowanie lepszego RTC (np. DS1305) z wbudowaną funkcją alarmów jeszcze bardziej uprościłoby program, bo sprawdzaniem daty i godziny mógłby zająć się sam RTC. Wpisywałoby mu się tylko dane ze struktury, resztę załatwią przerwania.
  • #4 15287633
    slavcio2012
    Poziom 15  
    ok więc zrobiłem to tak i działa :-)

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
REKLAMA