Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 31 lip 2025, o 12:16


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
    Autor Wiadomość
    PostNapisane: 11 lut 2016, o 10:26 
    Offline
    Nowy

    Dołączył(a): 02 sty 2016
    Posty: 6
    Pomógł: 0

    Witajcie,

    pilnie potrzebuję rady. Otóż, chcę wychwycić zmianę napięcia z czujnika odległości w bieżącym cyklu pomiarowym względem poprzedniego. Pomiar przeprowadzam w przerwaniu (zastosowałam programowy filtr dolnoprzepustowy aby odfiltrować zakłócenia i odchyłki pomiarowe i tym sposobem uśrednioną wartość pomiaru przekazuję i odczytuję w programie głównym), potrzebuję w jakiś sposób zapisać poprzednią wartość pomiaru lub ją utrzymać, i porównać z pomiarem bieżącym aby uchwycić różnicę napięcia. Następnie uaktualnić wskazania i względem poprzedniego pomiaru porównać z bieżącym, itd itd.. Mój projekt to robot który będzie w stanie zlokalizować potencjalną lukę pomiędzy obiektami/w ścianie, aby mógł do niej wjechać. Pomiar przeprowadzam z bocznego czujnika, z którego informacja o wychwyceniu takiego skoku napięcia będzie potencjalnym początkiem luki parkingowej.
    Czy ktoś mógłby mi doradzić w jaki sposób mam zapamiętać poprzednią wartość pomiaru?
    Czy powinnam to zapamiętać w przerwaniu czy już w programie głównym? Może zapisać wyniki do tablicy? Po odczytaniu w programie głównym wyników wykonuje się ponownie przerwanie, itd cały czas, może powinnam wychwycić że wykonało się przerwanie i na tej podstawie jakoś utrzymać wartość pomiaru a potem po wyjściu z przerwania tę wartość odczytać i porównać z bieżącym wynikiem? Nie bardzo wiem jak to zrealizować.
    Bardzo proszę o pomoc,
    Natalia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lut 2016, o 10:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 mar 2014
    Posty: 1475
    Pomógł: 167

    Ciężko się odnieść nie widząc jak to teraz zrealizowałaś. Czy przerwanie przekazuje zmierzoną wartość poprzez docelowa zmienną? Jak tak i nie chcesz tego zmieniać, to musisz przed przypisaniem nowej wartości w przerwaniu zapamiętać starą w dodatkowej zmiennej a dopiero później nadpisać zmienna z wynikiem. Tablica to raczej nie ma sensu, chyba, że potrzebujesz więcej niż aktualny i stary wynik. Prędzej daj strukturę z dwoma zmiennymi na wyniki (aktualny i stary) oraz ewentualnie dodatkową flagę ustawianą przez przerwanie przy dokonaniu pomiaru.

    Możesz zrobić tak, że przerwanie zawsze pisze do zmiennej A i ustawia flagę dla programu głównego. Program główny porównuje wartość A z B a następnie przepisuje A do B i kasuje flagę. W ten sposób przerwanie zawsze będzie zwracało wartość tylko w jednej zmiennej i nie będzie "backupowało" starej. O to zadba program główny. A jak nagle program główny będzie potrzebował historii, to zmieniasz tylko tę część dając zamiast B to B[] i po problemie :)

    --
    Pozdrawiam,
    Robert



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO