Witam,
Po wstępnej dyskusji proponuję przyjąć poniższe założenia , aby tworzenie projektu nie trwało miesiącami :
- projekt wykonujemy , w postaci "modułów", którymi kolejno będziemy się zajmować od definicji po realizację-
- moduł musi być spójnym elementem - zarówno sprzęt jak też oprogramowanie, jego wykorzystanie , będzie albo
konieczne, albo opcjonalne ;
Schemat = ogólny , zawiera tylko niezbędne elementy , dodatkowe wyposażenie - jako opcja na oddzielnym schemacie
Oprogramowanie - podobnie , choć kolejność proponuję odwrócić - najpierw zbudować algorytm główny sterownika ,
chciałbym aby to była funkcja "main" w pliku main.c i wyrzucone z niej wszystko, co jest w istocie usługą przygotowującą dane, i tak:
- w osobnym pliku wszystkie funkcje czasówek
- w osobnym obsługa styków , sygnałów pomocniczych , ogólnie IO,
- w osobnym obsługa silnika -moment obrotowy, obroty itp.
// wszystkie potrzebne, a jeszcze nie stworzone funkcje deklarujemy jako
void funkcja(void) z pustym ciałem{} funkcje nazywamy zgodnie ze schematem/grafem algorytmów i tylko tymczasowo
- do czasu ich sformułowania mają prawo obecności w pliku main.c, po nabraniu ciała - wynocha do swojego pliku //
ps. wiem ,że to może mało dydaktycznie , ale zapewnia po zdeklarowaniu głównego algorytmu - wyartykułowanie potrzeb, i tworzenie usług - które niejako
same się definiują przez nazwę i brakujące oprogramowanie zdarzeń.
Teraz proponuję dokonać ostatecznego osądu poniższego schematu - pamiętamy iż ma zapewnić sprzętową informację o stanie bramy
bez wnikania jeszcze w szczegóły czy kolizja to przecięcie wiązki fotokomórki , czy uderzenie w przeszkodę, czy naciśnięcie przycisku bezpieczeństwa,
czy silnik będzie taki czy inny , dwa przekaźniki wystarczą do każdego silnika, regulację prędkości dopuścimy dopiero, gdy będziemy mieć sterowanie
standardowej bramy - powiedzmy garażowej, lub co kto tam za najprostszą-bezpieczną uważa.

Po zaakceptowaniu schematu rozpoczynamy dyskusję nad algorytmem, wiedząc z góry iż funkcja zamknij załatwi wszystko ,
wraz z poproszeniem pieska aby od bramy się odsunął

, - ciałem obdarzymy ją w stosownym momencie jak naszym zdaniem będzie na nie zasługiwała
Oto uzupełniony o ochronę przekaźników przed bumm..

algorytm sterowania bramą.
Założyłem , że zawsze da się uznać iż jeden z kierunków jest mniej kolizyjny ,
dlatego dla bramy
otwórz/zamknij wybrałem priorytet
otwieranie, dla
góra / dół będzie to zapewne
góra.
Oto schemat algorytmu :

Zapraszam do wytykania braków - i podejmowania prób zapisu algorytmu.