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 9 kwi 2025, o 12:45


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
    Autor Wiadomość
    PostNapisane: 28 sie 2021, o 14:28 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Witam, chciałbym aby ktoś podpowiedział, jak jako początkujący podejść do tego tematu, wykonywania kilku procesów w tle. Np: robię sobie prosty wiatrak,sterowany PWM, może kręcić się wolno,srednio,maksymalnie,wlaczyc,wylaczyc. Zrobiłem to na klawiszach i zwykłej instrukcji IF. Chciałem, żeby servo mi też go obracało. No i tu się zaczyna właśnie problem :D Wiem, że temat bardzo często wałkowany, czytam że takie rzeczy robi się w przerwaniach itp. Piszą też o maszynach stanu ale trochę ciężko mi przejść przez ten gąszcz informacji. Wielozadaniowość jest poruszana w bluebooku ale pod koniec, jeszcze nie dotarłem tam, tzn czytałem trochę, ale jeszcze średnio to rozumiem. Pytanie, czy na tak poczatkowym etapie jestem w stanie to wg zrobić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 sie 2021, o 14:31 
    Offline
    Moderator
    Avatar użytkownika

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

    krawi92 napisał(a):
    Wielozadaniowość jest poruszana w bluebooku ale pod koniec


    Dokładnie i to w najprostszy możliwy i wiele mówiący sposób - łącznie z przykładowym kodem do tego

    krawi92 napisał(a):
    jeszcze nie dotarłem tam, tzn czytałem trochę, ale jeszcze średnio to rozumiem

    No niestety bez podstaw C ciężko - ale ... zacznij czytać ten rozdział na spokojnie i zacznij notować po KOLEI tego czego nie rozumiesz i takie gotowe pytania po kolei publikuj na forum - ale nie że w jednym wątku milion pytań - tylko jeden wątek - krótko jedno, dwa, max 3 pytanka

    _________________
    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: 29 sie 2021, o 06:46 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Troche odejdę od tematu, czytałem 2 cz art i drganiu styków i obsludze klawisza, w pewnym momencie powinien pojawić się kod, do którego potem odnosi się artykuł a żadnego kodu tam nie ma tylko dwie kreski.. Można wiedzieć czemu?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2021, o 10:11 
    Offline
    Moderator
    Avatar użytkownika

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

    być może korzystasz z jakiejś kociej przeglądarki niestety - bo normalnie wszystko widać, właśnie sprawdziłem - ja zawsze działam na google chrome

    Obrazek

    _________________
    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: 29 sie 2021, o 10:27 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 13 gru 2017
    Posty: 12
    Pomógł: 0

    W przeglądarce Mozilla Firefox też wyświetla się poprawnie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2021, o 18:47 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Ok, dziś na spokojnie usiadłem i skleiłem coś, co działa prawie tak jakbym chciał. Nie ma tu programowo wielozadaniowości, ale fizycznie mogę zmieniać prędkość silnika w trakcie obrotu servem itp. Wkleję kod, jak ja to sobie wymyśliłem.
    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.

    Jest tu dużo microswitchy, ale na razie nie chciałem się bawić w obsługę kilku instrukcji za pomocą jednego klawisza, ale będę starał się to poprawić. Jednak jest problem, za który nie bardzo wiem, jak się zabrać. Po wcisnieciu klawisza servo_on następuje obrót,raz w jedną raz w drugą. Gdy wciskamy servo_off to servo zatrzymuje się w danej pozycji i to jest OK, tak to ma wyglądać. Jednak gdy znowu wcisnę servo_on servo szybko się skręca do pozycji 0 i zaczyna się pętla od nowa. Nie jest to pożądany dla mnie efekt, ale rozumiem czemu tak się dzieje, bo pętla w funkcji liczy od 0 więc nic dziwnego, że się tak dzieje. Tylko teraz pytanie jak to zrobić, żeby po zatrzymaniu serva, pętla zaczeła liczyć od momentu zatrzymania? Tą wartość trzeba by zapamiętać i podstawić do pętli for. Nie bardzo wiem jak tu zakombinować.
    Ps. wiem, że pewnie forma tak napisanego programu jest tragiczna pewnie, ale nie mialem pomyslu jak pewne rzeczy rozwiązać. Jeśli chodzi o zmianę prędkości silnika w trakcie pracy serva pomyslalem o przerwaniach zewnętrznych, ale jak sobie pomyslalem, że jeden klawisz pod INT0,drugi pod INT1 a trzeci co, pod PCINT któryś ? Stwierdziłem, że chyba jednak nie tędy droga. :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2021, o 19:00 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Pokombinowałem trochę ze zmiennymi, żeby zapamiętać po wyjściu stan OCR1A, servo po zatrzymaniu i ponownym uruchomieniu wznawia ruch od miejsca zatrzymania, jednak działa to tylko w jedną stronę. Wszystko jest dla mnie zrozumiałe dlaczego, ponieważ funkcja rozpoczyna się od zwiększania wartości, dlatego obojętnie w którym miejscu wyjdę z funkcji, jej ponownie wywołanie spowoduje zwiększanie się wypełnienia. Ja główkowałem jak to zrobić, aby po wyjściu z funkcji w momencie zmniejszania się wypełnienia, gdy servo obraca sie w lewo, po ponownym jej wywołaniu kontynuować ten ruch w lewo, czyli jakby funkcja musiała się zacząć od środka(Wiem, namieszałem i sam widzę że to głupio brzmi) Dlatego zastanawiam się, czy w tak napisanym programie, w takiej formie jestem w stanie to zrobić.

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 02:46 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Podpowie coś ktoś? :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 07:18 
    Offline
    Moderator
    Avatar użytkownika

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

    krawi92 napisał(a):
    czy w tak napisanym programie, w takiej formie jestem w stanie to zrobić.

    Nie, bo to praktycznie wciąż programowanie liniowe ...

    poczytaj sobie o timerach programowych w Bluebooku

    _________________
    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: 4 wrz 2021, o 11:50 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Tzn tak, zrobienie timerow programowych w oparciu o sprzętowy timer ogarniam. Tylko wciąż mnie zastanawia jak zrobić jakby pauzę w programie. Myślałem o wykorzystaniu trybu pharse correct, który zlicza od 0 w górę i potem z góry na dół (przebieg trójkątny) nie musiałbym się bawić w jakieś pętle czy inkrementacje i dekrementacje wypełnienia. Jedyne co mi przychodzi do głowy co na chwilę wstrzymuje pracę to przerwanie.. Przerywa program, odkłada adres, wykonuje procedurę i wraca tam gdzie przerwał. Tu bym chciał zrobić podobnie. Z tym że przerwanie zwykle trwa bardzo krótko, a moje wstrzymanie pracy serva jest na nieokreślony czas.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 12:06 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Zapisuj wartość i kierunek. Tylko musisz trochę zmienić funkcję do serwa. Dodać warunek, który sprawdzi, czy ma się kręcić w prawo czy w lewo.
    Jak konkretnie, nie podpowiem, trochę zgubiłem się w Twoim programie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 16:21 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    No domyślam się. Sprawdzam tam dużo warunków bo dużo switchy jest heh. Ale faktycznie ogarnąłem, dodam zmienna do kierunku obrotu, z resztą sobie powinienem poradzić



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 16:55 
    Offline
    Moderator
    Avatar użytkownika

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

    krawi92 napisał(a):
    Tylko wciąż mnie zastanawia jak zrobić jakby pauzę w programie.

    To jest bodajże NAJGORSZY moment do przejścia dla początkujących - bo sobie wyobrażają, że timer programowy ma zastąpić DELAYA - a to w 100% nieprawda i ZŁA droga. Trzeba ABSOLUTNIE inaczej podejść do programowania - pisania kodu

    krawi92 napisał(a):
    Tzn tak, zrobienie timerow programowych w oparciu o sprzętowy timer ogarniam.

    Dlatego muszę powiedzieć, że jednak nie ogarniasz - i broń Boże nie ma to być przytyk! tylko zachęcenie do ćwiczenia z tymi timerami programowymi - bo czuję, że tak troszkę po łepkach nad tym tematem przeszedłeś - no i to pokutuje.

    ------------------------ [ Dodano po: 2 minutach ]

    Marhef napisał(a):
    trochę zgubiłem się w Twoim programie

    Przecież tu kolega autor leci na MAXA delajami okrutnymi w pętlach - dlatego ciężko to ogarnąć a autor niestety ugrzęźnie w tym na amen, chyba że zacznie jednak ostrzej ćwiczyć programowanie z użyciem timerów programowych

    _________________
    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: 4 wrz 2021, o 18:18 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Co mam rozumieć przez zmianę podejścia do programowania? Chciałbym sobie zaczac to powoli jakoś układać w głowie :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 21:04 
    Offline
    Moderator
    Avatar użytkownika

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

    No właśnie to, żeby nie traktować np timerów programowych jako delay. Przejrzyj parę przykładów z książki gdzie są one używane, a jak coś nawet nie będziesz wiedział to dopytaj tutaj.

    _________________
    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: 4 wrz 2021, o 21:33 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    W sumie jeśli chodzi o te timery programowe to nie myślałem o nich jako zamiennik delayow, bardziej to rozumiem jak takie np 2-3 niezależne procesy które wykonują się z określoną częstotliwością jaką ustalę. Ale postaram się przećwiczyć je dobrze. W BB jestem na etapie gruntownego czytania teorii bo od rozdziału funkcji no pewne rzeczy jeszcze sprawiają problem ze zrozumieniem :) a to w sumie podstawy podstaw



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 wrz 2021, o 22:54 
    Offline
    Moderator
    Avatar użytkownika

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

    No to teraz zamiast tych swoich pętli ;) zastosuj właśnie timer programowy

    _________________
    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 wrz 2021, o 22:45 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    No więc posłuchałem i trochę się douczyłem, postanowiłem na nowo napisać "sterownik" do wiatraka. Założenia jak poprzednio, sterowanie silnikiem DC(3 tryby szybkosci) sterowanie servem, obsluga 3 przycisków wlaczajaca silnik,servo, i wylaczajaca wszystko. Teraz użyłem już tylko 3 przycisków wykorzystując zwaną dumnie szumnie maszynę stanów. Rozbiłem projekt na 3 pliki, wykorzystałem strukturę i pola bitowe w ramach testu, jak to działa. Teraz wszystko działa tak jak chciałem. Wrzucam kod, żeby ktoś ocenił, lub nawet dla porównania z poprzednim. Chętnie wysłucham uwag co tu mogłem zrobić lepiej, co spaproszyłem itp. Będę miał jeszcze kilka pytań ogólnych ale to potem. Gdyby coś w kodzie było niejasne to napisze, czemu cos tak rozwiązałem.

    Main.c
    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.


    pwm.c

    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.


    pwm.h

    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.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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