Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

(Bascom) źle działający program do atmegi8 obrót solara

13 Cze 2012 13:22 1014 3
  • Poziom 10  
    witam

    Mam problem z programem napisanym do obrotu solara.

    Program powinien załączać jeden z przekaźników od godziny 6.30 do 18.00 co 0,5godziny na 13 sekund. Drugi przekaźnik załączany jest o18.30 na 6minut (powrót solara)

    Wszystko działa dobrze z wyjątkiem godziny 7.00 następuje załączenie przekaźnika na wyświetlaczu zostaje jedna cyfra i przekaźnik zostaje na stałe włączony.

    Usunięcie godziny 7.00 z programu powoduje przesunięcie problemu na 7.30

    Zmodyfikowany został ten http://mirley.firlej.org/uniwersalny_wylacznik_czasowy projekt zamiast triaków zastosowałem układ wykonawczy z przekaźników i tranzystorów oraz przerobiony wsad do procka który coś źle działa.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 13  
    Bardziej zagnieżdżonej instrukcji IF to jeszcze nie widziałem.
    To znaczy, że o godzinie 7.30, 8.00, 8.30.... przekaźniki się załączają?
    Może za mało/dużo End If masz w programie.
    Rozważałeś instrukcję "CASE"?

    Spróbuj na początku tylko 3 warunki (6.30, 7.00, 7.30) i jak będzie działało, to dodawaj kolejne.
  • Poziom 27  
    Trochę dużo tu GOSUB, tak się nie pisze programów, może być tak że STOS nie wytrzymuje.
  • Poziom 30  
    Ten algorytm jest fatalnie opracowany. Warto wiedzieć że korzystanie z operatora AND w warunku w BASCOM zwiększa objętość programu - w powyższym przypadku DRASTYCZNIE zwiększa tą objętość.
    Czy nie można było tego napisać np. aby o każdej pełnej godzinie (której badanie też powinno polegać na wykrywaniu jej zmiany, a nie bezpośrednim sprawdzaniu konkretnej wartości) zerowany był jakiś licznik i na jego podstawie realizowane były by kolejne załączenia (sprawa o tyle prosta, że za każdym razem przesunięcie jest co 30min), a gdy nadejdzie pora powrotu po prostu warunki były by ignorowane. Badanie konkretnej godziny to wg mnie pomyłka. Ten program można napisać na 100 sposobów - wybrałeś chyba najgorszą możliwość... Z moimi wskazówkami powinien zajmować co najmniej 10x mniej miejsca niż obecnie i zawierać 10x mniej błędów.
    Pozdrawiam :)

    EDIT:
    A niech tam...dam Ci taki oto fragment, który pozwoli wywalić litanię warunków tylko musisz go nieco przystosować do reszty programu:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Powyższe załatwia całą sprawę Twoich założeń ruchu solara...