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 10 lip 2025, o 16:58


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 41 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 5 kwi 2012, o 09:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Chciałbym prosić o jakąś podpowiedź jak zrealizować sterowanie jasnością diody poprzez przyciski w trybie PWM.
    Zrobiłem już pierwsze ćwiczenie z książki z PWM'em. Jak zrobić żeby dioda zachowywała się tak, że gdy wcisnę przycisk do pewnego czasu i nagle puszczę, to dioda świeci z taką jasnością, przy której puściłem przycisk.
    Fragment kodu najmilej widziany, chciałbym żeby ktoś mnie naprowadził.. ;P
    Dziwnie to działa, bo jak puszczam przycisk to i tak dalej dioda się rozjaśnia.
    Mieszałem coś z "else" i negowałem pin diody, ale nic to nie dawało.

    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: 5 kwi 2012, o 09:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Zainteresuj sie innym rodzajem pętli :), bo petla for zawsze będzie tak działać.
    A najlepiej rozpisz sobie co własciwie się dzieje po wcisnieciu przycisku a wszystko okaże się jasne :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 09:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    ah, do... while. Spróbuję coś wykombinować..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 09:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Akurat za tą pętlą to ja osobiście nie przepadam ;). Ale to ten kierunek :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 12:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Wykombinowałem coś takiego:
    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.


    Na razie spróbujmy samo rozjaśnianie. Jakoś działa, ale trochę gorszy efekt dla oka niż przy pętli for.
    Co należałoby zrobić żeby po osiągnięciu i=255 - dioda ma się świecić ciągle, a pętla ma się już nie kręcić przy przyciśniętym przycisku?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 12:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Pokombinować z warunkiem while .... dla podpowiedzi " && "

    Edit:

    I może wywalić zmienną "i", a zamiast tego "pobawić" się rejestrem OCR ( tak mi teraz wpadło do głowy )

    Edit_1: Aż mnie świerzbi język żeby ci powiedzieć jak można to rozwiązać :) Ale twardy będę ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 12:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    daj proszę jeszcze jedną podpowiedź, ale bardziej trafiająca w sedno :P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 12:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    Jeśli się nie mylę chodziło o dodanie jeszcze jednego warunku do pętli while sądząc po tym && :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 12:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Sedno uchwycił kolega KoreX :)
    a dla jasnosci chodzi o
    Składnia: [ Pobierz ] [ Ukryj ]
    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: 5 kwi 2012, o 12:48 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    hmmm no tego ten teges ... ja bym to ...
    a dobra zanim podam swój kod poczekam jeszcze trochę bo można ..... a && to bardzo trafne spostrzeżenie :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 18:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Po ciężkich bojach zrobiłem 4 opcje:
    *załącz na max
    *wyłącz
    *rozjaśnić
    *ściemnić
    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.


    Chciałbym zobaczyć Wasze podejście do takiego zadania. Na pewno można to zrobić jakoś inaczej i lepiej.
    Każdy chętny kto nawet nie brał udziału w temacie, a chciałby przedstawić swoją koncepcję, to też mile widziane :).
    Nie mogłem już wykombinować żeby załącz/wyłącz zrobić na jednym klawiszu. Ukręciłem głowę, ale ostatecznie poddałem się i zrobiłem to na dwóch osobnych. XOR'em chyba to nie pójdzie... A może jednak, hm?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 18:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 paź 2011
    Posty: 307
    Lokalizacja: Lbt
    Pomógł: 8

    Moja koncepcja jest taki.
    Przyciskiem wywoływać zewnętrzne przerwanie, w którym będzie instrukcja iteracji dla zmiennej globalnej. Zmienna ta będzie zmieniać się w zakresie 0-1 i w zależności od tego w pętli głównej będzie warunek while dla 2 różnych wartości zmiennej-kolejno wykonywanie instrukcji rozjaśniania i ściemniania.
    Może się nie znam, ale ja bym kombinował w ten sposób :D

    _________________
    Ujemna delta to dopiero początek zabawy...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 19:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Koncepcja - miałem na myśli oczywiście działający kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 19:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    No to jeszcze drgania styków masz do wyeliminowania. I if'y są też całkiem fajne do on/off;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 19:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Fakt, brakuje eliminacji drgań. Do tej pory on/off robiłem tylko na if'ach i tutaj też próbowałem, i tak nie mogłem zrobić on/off na 1 przycisku. Pokaż Twoje wypociny, naprawdę jestem ciekaw innego podejścia :).
    A układ przetestowałem bez przycisków tylko na drutach na stykówce, bo najszybciej. ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 20:24 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    czemu masz problem z ifem do wyłączenia

    przecież wystarczy warunek if else if i zewnętrzne podciągnięcie pinu ze switchem do VCC (Aktywny LOW)
    i wtedy już się możesz bawić :)

    możesz też prosto zrobić na if- ach warunek ze zliczaniem naciśnięć :)
    1 włącza 2 wyłącza

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 20:54 
    Offline
    Moderator
    Avatar użytkownika

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

    SunRiver napisał(a):
    możesz też prosto zrobić na if- ach warunek ze zliczaniem naciśnięć :)
    1 włącza 2 wyłącza


    Dokładnie bo tymi pętlami while() w środku w ogóle blokujesz wszystko na maxa. Mi z kolei ciężko coś podpowiadać jak widzę w kodzie makra _BV() albo takie rzeczy: bit_is_clear(PINA,0).

    _________________
    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: 5 kwi 2012, o 21:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    mirekk36 napisał(a):
    Mi z kolei ciężko coś podpowiadać jak widzę w kodzie makra _BV() albo takie rzeczy: bit_is_clear(PINA,0).


    A co jest złego w tych makrach?

    Proszę o podpowiedź do tego warunku na zliczanie naciśnięć. Jak to mniej więcej należy zrealizować?

    Wydaje mi się, że w książce Mirka gdzieś coś podobnego opisane, ale nie mogę znaleźć.. ;P
    _____________________________
    EDIT.
    Znalazłem to o czym myślałem - str 125, kombinować coś w tym kierunku, robiąc funkcję z tym licznikiem, i teraz pomyślałem, że może coś dać z modulo2, żeby odróżnić wciśnięcie parzyste od nieparzystego, czy jednak nie tędy droga?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 kwi 2012, o 22:48 
    Offline
    Moderator
    Avatar użytkownika

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

    Wrangler napisał(a):
    A co jest złego w tych makrach?


    A co jest złego w przesunięciach bitowych ? np: (1<<PA0) ;)

    Złego w _BV() nie ma nic, ale mi się osobiście źle taki kod czyta, to wszystko.

    _________________
    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: 5 kwi 2012, o 23:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Nie no jasne, że przesunięcia są czytelniejsze.
    Ale np bit_is_clear(PINA,0) czy różni się czymś od !(PINA & (1<<PA0)) ?
    Mnie się to drugie makro nawet podoba, taki skrót, ale ja się nie znam.. ^^



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 13:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    I jak walczysz jeszcze ??



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 15:06 
    Offline
    Moderator
    Avatar użytkownika

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

    Widzę, że walka przeniosła się na elektrodę.... a tam jak zwykle zaczyna się reklama własnych blogów i podpowiedzi .....

    ale ok ....

    w takim przypadku nawet nie ma co myśleć i walczyć z jakimiś drganiami styków, a problem można rozwiązać w super prosty sposób że aż strach.....

    Wyjątkowo podaję przykład pomimo tego że kolega prezentuje kody pisane niezgodnie proponowanym przeze mnie stylem, przez co są jak dla mnie przynajmniej mało czytelne i dlatego jak mówiłem, nie jestem zbyt chętny pomagać i analizować takie kody na tym forum....

    Mam nadzieję, jednak że tym przykładem jak to może przejrzyście wyglądać zachęcę jednak kolegę do stosowania się do dobrych zasad programowania w C dla AVR ;)

    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.


    i niech mi ktoś powie, że tak napisany kod nie jest zdecydowanie bardziej czytelny i przejrzysty - a do tego działa w sposób hmm prawie nieblokujący - bo jak wspominałem wcześniej ten pomysł z tymi pętlami while() jako warunkami to było jakby lekkie nieporozumienie ..... na czas przyciskania klawisza BLOKOWAŁEŚ całą pętlę główną !!! a tymczasem nawet tak proste rzeczy można pisać w sposób nieblokujący jak widać. Dzięki czemu kod można szybko wzbogacić o kolejne np jakieś procesy współbieżne działające w tym samym czasie. I trzymanie wciśniętego klawisza nie będzie tego zbyt blokować

    a jak dojdziesz do ostatnich rozdziałów książki a szczególnie do rozdziału o "Podstawach systemów czasu rzeczywistego" to takie programy będziesz pisał bez żadnego polecenia _delay_xx() .... i tego ci życzę żebyś to załapał jak najszybciej .... tylko proponuję z doświadczenia pisać kody jak się należy bo sam na tym szybko polegniesz a mi się już nawet nie chce tu tłumaczyć dlaczego.

    _________________
    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: 6 kwi 2012, o 15:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Ech co to robi z człowkieka czytanie pewnej książki ;)

    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: 6 kwi 2012, o 15:32 
    Offline
    Moderator
    Avatar użytkownika

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

    Malutki_27 napisał(a):
    Ech co to robi z człowkieka czytanie pewnej książki ;)


    Ale za to jak się wygodnie czyta taki kod jaki napisałeś ;)

    _________________
    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: 6 kwi 2012, o 16:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    No dokładnie tak właśnie chciałem żeby mi to chodziło jak w Twoim kodzie Malutki_27. :)
    Mnie się nie udało... ;/
    W jakim celu jest "stan=2", można chyba było to pominąć?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 19:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Można, ale wtedy nie będzie działać w 100% jak powinno :)
    I teraz deczko nauki: powiedz dlaczego i jak to działa.
    Tak na zachętę powiem ze wymyślenie tego sposobu zajęło mi jakieś 3 godziny :| .
    Co prawda należy pamiętać o tym ze też się uczę programowania.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 19:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    A dlaczego zainicjalizowałeś zmienną "stan" zerem, a następnie w if'ach i tak zmieniałeś jej wartość?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 20:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Ojjj wyczuwam lenistwo :( jeżeli liczysz na to ze dostaniesz odpowiedź bez wysilenia swoich szarych komorek to się mylisz. Przesledz co się dzieje z ta zmienna w poszczególnych częściach programu, a odpowiedz kasynie się sama.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 20:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    No właśnie nie bardzo rozumiem :P.
    Usunąłem z Twojego kodu, co dla mnie było niejasne (w sensie zbędne) m.in. usunąłem inicjalizację "stan", po prostu zdefiniowałem zmienną, usunąłem również stan=2, i u mnie wszystko chodzi?
    Stąd moje pytanie po co, bo chodzi na obu wersjach, a tej Twojej pierwotnej jak wspomniałem nie rozumiem do końca, i po tym co usunąłem stało się jasne.
    Dam znać jak w 100% będę Ci w stanie napisać jak rozumiem Twój kod. :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2012, o 21:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    To podpowiem ci jeszcze tylko tyle, że ty używasz jako wlączników dwóch "drutów", a ja uzywam switchy ...



    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: 41 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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