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.
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/809/a7e3ff424f319955b0c2c3d4e7f0c9fe.JPG)
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ął
![Zdziwiony :o](https://forum.atnel.pl/images/smilies/icon_e_surprised.gif)
, - 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..
![Zdziwiony :o](https://forum.atnel.pl/images/smilies/icon_e_surprised.gif)
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 :
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/809/4f7c032807ef7a2a0041c1783c34d632.JPG)
Zapraszam do wytykania braków - i podejmowania prób zapisu algorytmu.