Wpis z mikrobloga

Hej mireczki z #programowanie i #arduino

Niedawno zacząłem się bawić arduino, nie mam doświadczenia ani z programowaniem w C++ ani z elektroniką, ale programuję ogólnie dużo w pracy, tyle, że bardziej w środowisku web/frontend. To tyle jeśli chodzi o wstęp, teraz do rzeczy ( ͡° ͜ʖ ͡°)

Napisałem sobie dla rozrywki taki sterownik lampek led schodowych, i mam pytanie czy coś tu jest #!$%@?? Jeden z czujników (lub może wcale tu nie chodzić o czujnik, tylko o jakąś anomalię w kodzie albo spięcie przewodów, ni wim) powoduje że jeden z biegów lampek (dokładnie dwie na górze, patrz schemat, może je zapalić tylko ostatni czujnik nr 2, lub nr 1, zależy w którą stronę się idzie :) ) zapalają się samoczynnie raz na jakiś czas, czasem jest to raz na kilka godzin, czasem 2-3x w krótkim odstępie czasu (np 10min), no wydaje się że jest to totalnie losowe. Chciałbym aby na mój kod zerknął jakiś ekspert i ocenił czy czegoś nie zdupczyłem, szczególnie chodzi mi o używanie millis(), Co prawda nie dodałem żadnego zabezpieczenia przed przekręceniem się licznika, ale wydaje mi się że to nie jest problemem bo unsigned long starcza na jakieś 50 dni ( ͡° ͜ʖ ͡°) a akcja z zapalaniem dzieje się prawie codziennie. No nie wiem, jak się nie uda poprawić to chyba to wyjebię i zrobię proste zapalanie wszystkich lampek na każdy czujnik.

KOD: https://gist.github.com/lukKowalski/afe598a4834ad06ea37542965ce57538

Na obrazku prosty schemat rozmieszczenia lampek i czujników
źródło: comment_1605599867KE9W1R5swR3e04lQuMNXjs.jpg
  • 11
@fuuYeah:
The pir sensor is known to give false positives due to power fluctuations and EM interference. Try to put sensors as far as possible from radio module and add a decent size capacitor as close as possible to vcc pin of the the pir sensor.

Ja kojarzę, że chyba te lepsze czujniki powinny mieć pokrętło do regulacji czułości. Nie wiem jak to jest realizowane sprzętowo ale możesz dorzucić tak jak
@echelon_: ten na pewno nie ma takiego pokrętła, ale wiem o czym mówisz, rozwiązanie z dłuższym sygnałem wydaje się ok, ale jak to zrobić aby nie blokować pozostałych? Początkowe założenie było takie, że wszystko działą niezależnie i można uruchamiać wiele czujników na raz, każdy wyzwala swój bieg w odpowiednim kierunku i nie blokują się nawzajem. Czekanie jakimś delayem na długi sygnał to popsuje. Co mi przychodzi do głowy to czytanie w
@fuuYeah: Masz bardzo ładną strukturę na lampkę. Dorzuć może licznik do każdej lampki która robi problemy. Wiem, że problem może leżeć w czujniku ale przerzućmy rozwiązanie na lampkę bo masz tam już strukturkę. Jeśli czujnik jest HIGH do licznika w lampce +1, jeśli LOW -1. Jeśli np. wartość licznika osiągnie wartość 3 to zapal lampkę. Jeśli to rozwiąże problem to przerzuciłbym to rozwiązanie na czujnik żeby kod był ładniejszy.
@echelon_: a więc zrobiłem takie coś: https://gist.github.com/lukKowalski/afe598a4834ad06ea37542965ce57538/revisions

W międzyczasie spaliłem ardiuno :/ i musiałem kupić nowe nano he he, anyway, okazuje się, że te czujniki działają tak, że przy uruchomieniu puszczają napięcie przez ok 8s i nie da się z tym nic zrobić, tak działa ta płytka z czujnikiem więc wychwytywanie kilku (w moim przypadku 3) uruchomień i triggerowanie na niewiele się tu zda bo pierwsze uruchomienie ustawia pin na HIGH