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 15 lip 2025, o 10:19


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
    Autor Wiadomość
    PostNapisane: 24 mar 2019, o 16:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    Witam. Na wstępie powiem że zastosowałem bibliotekę Mirka
    już wiem że napewno enkoder jest wykrywany ponieważ gdy zrobiłem tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    To matrix po wciśnięciu przycisku reaguje i wyświetla mi string który się przesuwa przez chwilę jest czysty ekran(no właśnie dlaczego tylko dak długo?) i godzina faktycznie zmienia się na 21

    Natomiast sam obrót czyli funkcja ja sobie ją nazwałem enkoderek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Obrót w prawo zmienia mi godzinę na 15 i odwrotnie na 20stą tylko teraz do sedna

    Pokręcenie w prawo powoduje mi że wyświetla mi się "G-1"
    ....i następnie gdy dalej kręcę enkoderem(przeskakują zapadki) to ta wartość 1(jeden) nie zmienia się jak było to na wyświetlaczu lcd w poradniku Mirka tylko ta wartość stoji w miejscu. Gdy zaś przestanę kręcić ,a matrix dalej kontynuuje sekwencję wyświetlania warstw czyli godzina/data/cisnienie/temperatura/itd. i znowu pokręce o jedną zapadkę to do porzedniej cyfy dodaje się tylko 1 czyli mam 2. itd.itd. Mi chodzi o to aby ta cyfra odświeżała się na żywo wraz z pokręcaniem

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Ostatnio edytowano 25 mar 2019, o 20:33 przez RadekB86, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 mar 2019, o 13:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 gru 2014
    Posty: 88
    Pomógł: 2

    Nie mam 100% pewności, gdybym mógł sprawdzić praktycznie ale obecnie nie mogę , domyślam się że:
    Cytuj:
    wyświetla mi string który się przesuwa przez chwilę jest czysty ekran(no właśnie dlaczego tylko dak długo?)

    wynika z długości (szerokości) napisu jaki określiłeś (ekran wirtualny) wpisując wartość x=290.
    O ile się nie mylę to długość tekstu w pikselach "Ustawianie czasu" wynosi:
    - litery 15 --> 15x5 (4 pixele litera + 1 pixel spacja) łącznie długość tylko znaki 75 pixeli,
    - 1 spacja 3 pixele,
    cały napis 75+3=78 pixeli.

    Tekst ma się wysuwać z prawej --> w lewo trzeba uwzględnić długość bufora ekranu +32pixele, łącznie 78+32=110.
    Wpisałeś aż 290 pikseli szerokość i taki duży utworzyłeś "wirtualny ekran" który jest przewijany pixel za pixelem w momencie gdy znaki schowają się po lewej stronie matrycy nadal przewijany jest pusty ekran aż x=290, przesuwanie pustych znaków zajmuje trochę czasu stąd efekt "przez chwilę jest czysty ekran(no właśnie dlaczego tylko tak długo?).
    Zmniejsz x np. do 120 i zobacz.

    /------------------------------------------------------------------------------------------------

    Oczywiście to co wyżej obliczałem jest ściśle powiązane z setCurrentFont( &font5x8FontInfo ); dla innej czcionki obliczenia będą inne .

    /------------------------------------------------------------------------------------------------

    Czy wcześniej praktycznie i teoretycznie zajmowałeś się obsługą enekodera ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 mar 2019, o 16:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    W sumie nie o to pytam ale jak najbardziej mój błąd z ilością z tym warunkiem ;x>-290;

    Bardziej chodzi mi o to co opisałem na samym dole

    Cytuj:
    Czy wcześniej praktycznie i teoretycznie zajmowałeś się obsługą enekodera ?


    Co masz na myśli? Jedyne co robiłem to próby z obsługą na lcd-ku 2x16 jak w mirkowym poradniku. tam działa to tak jak oczekuję czyli zmienna cały czas z każdym "tryknięciem zapadki" zmienia swoją wartość.

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 mar 2019, o 17:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 gru 2014
    Posty: 88
    Pomógł: 2

    Chodził mi o to czy od razu wskoczyłeś do oceanu czy najpierw zapoznałeś się z obsługą enkdera, skoro znasz podstawy nie będę podpowiadał jak go uruchomić w większym projekcie bo zakładam, że to wiesz.
    Spróbuję wieczorem więcej pomóc, podpowiem (nie wiem czy dobrze) starałbym się ograniczyć działanie kodu do fragmentu, który nie działa i dojść dlaczego, a następnie stopniowo włączać to co wyłączyłem.
    Użyj debugera dioda led, podłącz RS232 dane na terminal, pułapki programowe.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 mar 2019, o 18:06 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    napisz czy używasz przerwań do obsługi enkodera czy w pollingu?



    Ostatnio edytowano 26 mar 2019, o 10:59 przez tonygryps, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 mar 2019, o 19:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    tonygryps napisał(a):
    napisz czy używasz przerwań do obsługi enkodera czy w pulingu?

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

    Tylko co ma to do rzeczy? przecież napisałem że moment wykrywania czy w lewo czy w prawo pokręcanie jest wykrywany po zapisaniu odpowiedniej godziny no nie wiem... :roll:

    ------------------------ [ Dodano po: 41 minutach ]

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


    Coś dziwnego się stało nagle zaczęło działać tak jak oczekiwałem ;) Kurcze okazało się że to wszystko przez ohydnego delaya xD

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 09:41 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    widzisz a ma to do rzeczy i to bardzo dużo bo jeśli działa w pollingu to kod wykonuje się w pętli while i jak są opóźnienia w w pętli to masz taki efekt jak miałeś a jak działa w przerwaniu to każde pokręcenie wywołuje przerwanie i wykonanie kodu przerwania. Polecam Ci obejrzeć poradnik Mirka o przerwaniach gdzie to świetnie tłumaczy.



    Ostatnio edytowano 26 mar 2019, o 10:59 przez tonygryps, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 10:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    tonygryps napisał(a):
    napisz czy używasz przerwań do obsługi enkodera czy w pulingu?
    Przepraszam za czepianie się i nie wnoszenie niczego do tematu, ale sprawdzanie stanu w pętli głównej nosi nazwę pollingu, nie pulingu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 10:57 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    masz rację przepraszam za moją literówkę już poprawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 12:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    A co jest według was lepszym rozwiązaniem na przerwaniach cz w poolingu? Dodam że jeden pin z przerwania zewnętrznego mam wykorzystany na rtc ds3231(atmega328p PD2) i czy to by się wiązało z ustawieniem jakichś priorytetów dla przerwania z enkodera?

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 13:38 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    w rodzinie Atmega nie ma priorytetów przerwań naprawdę polecam ci ten poradnik .
    https://www.youtube.com/watch?v=J82_Zop9cjE

    ------------------------ [ Dodano po: 6 minutach ]

    z resztą na m328p masz przerwania od pcint i to prawie na każdym pinie więc ich nie brakuje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 mar 2019, o 21:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1978
    Lokalizacja: Lipsko
    Pomógł: 125

    Cytuj:
    A co jest według was lepszym rozwiązaniem na przerwaniach cz w poolingu?

    Wszystko zależy od sytuacji chociaż ja wszelkie enkodery wolę badać cyklicznie w przerwaniach od timera i to czasem po kilka tys. imp/s na dowolnym pinie procka. Robię tak z prostej przyczyny - restrykcje czasowe... Mam dzięki temu pełną kontrolę nad pozostałymi blokami w przerwaniach gdzie wywołanie przerwania zewnętrznego (które ma wyższy priorytet) mogło by mi narobić szumu.

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 kwi 2019, o 17:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    po dodaniu biblioteki mirkowej do enkodera mam mały warning :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jak kliknę ponownie kompilację (czasami za kolejnym ...i kolejnym razem) to komplilacja przechodzi i program działa zgodnie z oczekiwaniami jak temu zaradzić ?

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 04:59 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    to zajrzyj do pliku nagłówkowego biblioteki i zobacz jakie argumenty powinna zawierać twoja funkcja wywoływana przez callback i takie do niej dodaj

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 14:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    Nie bardzo rozumiem to dlaczego udaje się to skompilować za jednym razem ,a za innym nie?

    Może wkleję całą consolę.

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

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 14:24 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    ciężko ci pomóc bo skaczesz z tematu na temat a każdy jakby bez związku ze sobą - więc sorki ale ja dalej nie dam rady

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 14:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    W konsoli masz odpowiedź na swoje pytanie. Funkcje spodziewają się argumentów innych niż w deklarowanej funkcji. Masz to w linijkach 94 i 101.
    A dlaczego raz się kompiluje a innym razem nie? Obstawiam, że kompilator dokonuje niejawnego rzutowania typów. Ale to tylko moje przypuszczenie, nie jestem na 100% pewien.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 16:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    Miałeś rację ale jeszcze mam jakieś inne warningi :( ?

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

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2019, o 19:30 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    poczytaj konsolę linia 64 i 68 masz nie zadeklarowane funkcje (najpewniej używasz te funkcje w jakiś folderze projektu i nie masz inkluda do folderu gdzie jest kod źródłowy )



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2019, o 13:51 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Zrób takie doświadczenie - po pierwszej nieudanej kompilacji zrób clean projectu i ponownie skompiluj. Pójdzie czy nie pójdzie? :)))



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2019, o 14:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    micky napisał(a):
    Zrób takie doświadczenie - po pierwszej nieudanej kompilacji zrób clean projectu i ponownie skompiluj. Pójdzie czy nie pójdzie? :)))

    Obrazek
    NIE IDZIE

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2019, o 15:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 paź 2013
    Posty: 501
    Lokalizacja: Siedlce
    Pomógł: 9

    zubik napisał(a):
    Masz niezadklerowaną funkcje mdelay

    ------------------------ [ Dodano po: 1 minucie ]

    W folderze bmp180


    Kurcze okazało się że nie dodałem pliku nagłówkowego w bmp180 :oops: kurcze pewnie gdyby nie to że za którymś razem mi to zadziałało to bym sam się tego dopatrzył xd ale wstyd... :lol: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

    _________________
    Ucz się ucz ,bo po to tutaj jesteś...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 kwi 2019, o 16:29 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    I zapamiętaj, że tylko przy pierwszej kompilacji są pokazywane warningi (chyba, że zrobisz clean - po to zasugerowałem, żebyś zrobił clean i kompilację). Jest to o tyle ważne, że potem błędnie zakładasz, że jest ok, skoro po drugiej kompilacji warningów już nie ma.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO