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 w 2025? 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 12 kwi 2025, o 08:07


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 8 lut 2014, o 14:19 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Mam takie pytanie jedno do Was.
    Mam układ CD4051 sterowany przez kontroler. Dwa wejścia ADC odczytują stan z potencjometrów i na tej podstawie trzeba odpowiednio wysterować układ 4051 tak by osobno sterował dwiema sekcjami po 4 diody.
    Reasumując pokazuję prosty algorytm:
    - odczyt adc1
    - odczyt adc2
    - jeśli adc1 wynosi x to ustaw na wejściach danych układu 4051 dany adres do wyświetlenia stanu za pomocą pierwszych czterech diod
    - jeśli adc2 wynosi y to ustaw na wejściach danych układu 4051 dany adres do wyświetlenia stanu za pomocą drugich czterech diod

    I tu leży kłopot. Jeśli włącza mi poprawnie diodę z pierwszej czwórki to z drugiej już nie, albo wszystko się miesza i z drugiej czwórki wyświetla się dopiero jak ADC1 jest w odpowiedniej pozycji.
    Programu nie będę przedstawiał bo jest banalny i polega na sprawdzaniu ADC1 i ADC2 oraz odpowiedniej interpretacji wyniku na podstawie tych pomiarów za pomocą instruckji warunkowych If...then.

    Oczywiście piszę w bascomie. Nadmienię że dla prostego sprawdzania działania programu dodawałem też opóźnienia o różnej długości.

    Pytanie czy się da to ogarnąć w ten sposób który sobie wymyśliłem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2014, o 21:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Pokaż może jak to masz podłączone. Kod też by jednak było dobrze pokazać. Bo w tej sytuacji trudno cokolwiek doradzić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2014, o 21:48 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Podłączenie jest banalne. Podłączam na płytce EvbAVR04. Pinologia dowolna bo dowolnie można podłączyć na tej płytce jak na zestawie ATB. Sam kod na początku opierał się o wybór za pomocą If..then ale nie zdawało to rezultatu więc pomyślałem że zrobię to na select case. I jakoś poszło tylko mam migotanie.

    W tej chwili mam coś takiego:
    - skok do podprogramu adc_1
    - zdefiniowanie jaka zostanie przyjęta wartość select case w zalezności od pomiaru adc1
    - skok do podprogramu ustawienia danych na szynę układu 4051
    to samo w stosunku do adc2

    Kod wygląda jak poniżej i działa. Wszystkiemu winna była obsługa wyświetlania wyników ADC którą teraz zaremowałem.

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Teraz pytanie, jak zapobiec migotaniu podczas wyświetlania danych na wyświetlaczu ?
    Czy użycie timera i obsługa wszystkiego w przerwaniu coś pomoże ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 21:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Próbowałeś może zmniejszyć opóźnienia w podprogramach pomiar_adc?

    A nie myślałeś żeby zamiast 4051 zastosować jakiś rejestr przesuwny? Bo za pomocą 4051 możesz zaświecić tylko jedna diodę naraz. A żeby świeciły dwie to trzeba je włączać na przemian. A w rejestrze przesuwnym można zaświecać kilka diod naraz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 21:19 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Jeśli chodzi o zmniejszanie czasu trwania wait to działa nawet z wait1 ale jeśli nie obsługuję wyświetlania. Jeśli tylko chcę coś wyświetlić to zaczyna się migotanie.

    Co do rejestru to rzeczywiście chyba to będzie lepsze rozwiązanie. Gdzieś Mirek opisywał używanie rejestru. Co to był za rejestr ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 21:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    To był 74595. Poradnik jest u Mirka na blogu http://mirekk36.blogspot.com/2013/09/re ... stawy.html

    Gdybyś miał problemy z przełożeniem tego na bascoma to chętnie pomogę.

    Z rejestrów przesuwnych używałem też 4094. Dane wysyłałem w prościutkiej procedurze
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 22:03 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    A powiedz co znaczy ten kawałek kodu bo nigdy tego nie używałem:
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Rozumiem że zmienna Dane przyjmuje wartość zmiennej lokalnej Value, a po co parametr .i ? Co robi kropka oraz i ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 22:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Może trochę niefortunnie dobrałem tą nazwę. Poniżej trochę poprawione
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Data_in to wejście danych rejestru 4094.
    Linia
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    wystawia na to wejście kolejne bity zmiennej Value. Wystawianie rozpoczyna się od bitu nr 0 do bitu nr 7. Po każdym wystawionym bicie trzeba machnąć linią Clk aby ten bit został zapisany do rejestru. Po wysłaniu całego bajtu zmiana na linii Strobe powoduje, że wysłany bajt pojawia się na wyjściach rejestru.

    A co do tego zapisu
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    to w ten sposób można dostać się do poszczególnych bitów dowolnej zmiennej. Mamy np. zmienna bajtową Stan.
    Zapis
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    ustawi nam bit nr 0.
    A np. zapis
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    wyzeruje ostatni bit zmiennej.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2014, o 22:32 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Dzięki. Rozkmina jak złoto. Teraz czekam na gls'a w wersji lila-róż i muszę dokupić ATB Shield I/O



    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: 9 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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