No ale informacje o tym, że jest pożar mogę odebrać po TCP/IP gdzie muszę mieć ciągle załączony prosty serwer www do tego aby wystawić rest API.
Tak jak już wcześniej napisałem widzę tu możliwość zastosowania przerwań na zasadzie połączenia wszystkich wejść pod IN0 lub IN2. Przerwań chcę użyć do tego aby w priorytecie nasłuchiwać wciśnięcia przycisków. W momencie jak na dowolnym wejściu zmieni się stan to mogę uznać to aktywuje przerwanie. W tym momencie serwer WWW przerwie prace na co najmniej 100ms bo tyle trwa włączenie pojedynczego przycisku. Gdybym miał jeden przycisk do obsługi to sprawa byłaby prosta. Przerwanie trwałoby 1/10 sekundy. Ale w tym samym czasie lub chwilę potem kolejne osoby mogą wciskać przyciski lub je przetrzymywać.
Mogę oczywiście zrobić jakieś mechanizmy żeby ignorować długie wciskanie, ale skąd będę wiedział, że w tym samym czasie ktoś inny nie wcisnął innego przycisku skoro pod IN1 będę miał zmostowane wszystkie sygnały z wejść.
Poniżej wrzuciłem schemat - aby łatwej było zrozumieć o co chodzi. Na przykładzie 3 włączników
microswitch
Tak jak już wcześniej napisałem widzę tu możliwość zastosowania przerwań na zasadzie połączenia wszystkich wejść pod IN0 lub IN2. Przerwań chcę użyć do tego aby w priorytecie nasłuchiwać wciśnięcia przycisków. W momencie jak na dowolnym wejściu zmieni się stan to mogę uznać to aktywuje przerwanie. W tym momencie serwer WWW przerwie prace na co najmniej 100ms bo tyle trwa włączenie pojedynczego przycisku. Gdybym miał jeden przycisk do obsługi to sprawa byłaby prosta. Przerwanie trwałoby 1/10 sekundy. Ale w tym samym czasie lub chwilę potem kolejne osoby mogą wciskać przyciski lub je przetrzymywać.
Mogę oczywiście zrobić jakieś mechanizmy żeby ignorować długie wciskanie, ale skąd będę wiedział, że w tym samym czasie ktoś inny nie wcisnął innego przycisku skoro pod IN1 będę miał zmostowane wszystkie sygnały z wejść.
Poniżej wrzuciłem schemat - aby łatwej było zrozumieć o co chodzi. Na przykładzie 3 włączników
microswitch