roxio wrote: czy dodanie do IF godz && min jeszcze jednego warunku && end_1d == LOW dla otwierania a && end_1g == LOW dla zamykania nie załatwi sprawy?
Prawdopodobnie NIE..
Jeżeli załóżmy zatrzyma silnik w dowolnym/przypadkowym miejscu (pomiędzy wyłącznikami krańcowymi) sterując z serial comm. i wybierając opcję: State = ‘2’ - to kolejne załączenie napędu nie będzie możliwe w żadnym kierunku.
Wystarczy popatrzec na ten fragment kodu:
Warunek ten będzie spełniany przez całą minutę podczas kolejnych rotacji pętli loop();
i powodował załączanie silnika, mimo że wyłacznik krańcowy wyłączajacy silnik może już miec stan=0; - proces ten będzie obserwowany dla przypadków gdy czas otwierania/zamykania rolety bedzie krótszy niż 1 min.
Wystarczyłoby do warunku ‘if ( ) ’ dopisac odczyt sekund, powiedzmy
&& SEC =< 10, co da 10- sekundowe okno akywności warunku na czas pracy, zaczym nastąpi aktualne wyłączenie silnika przez wyłącznik krańcowy, lub wartośc tą dobrac doświadczalnie.
e marcus