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 8 kwi 2025, o 20:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 20 lip 2012, o 22:00 
    Offline
    Użytkownik

    Dołączył(a): 31 gru 2011
    Posty: 34
    Pomógł: 0

    Witam, próbuje w w jak najprostszy sposób napisać kod na atmege8, który będzie docelowo siedziała w arduino. Program ma ten za pomocą pilota IR powodować włączanie oraz wyłączenie komputera. Włączanie komputera odbywa się za pomocą zmostkowania 2 pinów przez 1s, wyłączenie zaś przez 4s. Naskrobałem tyle kodu, ale stanąłem na etapie funkcji włączających i wyłączających komputer.

    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.


    Kod może też poprawiony na C++, aby odrazu wgrać je do arduino. Proszę o pomoc, Bartek.

    PS Obsługa lcd tylko testowo, aby wyłapać odpowiednie kody przycisków pilota.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 lip 2012, o 22:08 
    Offline
    Użytkownik

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

    Dziś już trochę późno na duino , ale jutro ci zapodam .pde , kilka linijek :)

    _________________
    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: 20 lip 2012, o 22:10 
    Offline
    Moderator
    Avatar użytkownika

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

    Po pierwsze twój kod nie ma nic wspólnego z C++ i Arduino więc nie uruchomisz tego w środowisku Arduino za żadne skarby.

    Po drugie możesz za to spokojnie odpalić na każdym procku ATmega. Tylko skąd ty sobie wymyśliłeś że sprawdzanie kodu klawisza to np:

    Kod:
    if( !address == 13)


    toż to jakieś totalnie nieporozumienie. Masz książkę, masz tam żywe przykłady a ty wymyślasz coś w ogóle z kosmosu co nie ma prawa nigdy zadziałać :(

    address ???? toż to na stałe w pilocie RC5 od TV zawsze ma wartość = 0 - więc co ci przyszło do głowy sprawdzać czy ma wartość =13 ale do tego jeszcze jakaś negacja ! ......

    eeeeeh zajrzyj proszę do pierwszego lepszego przykładu z książki albo DVD i napisz to od nowa bo wygląda jakbyś pisał coś z pamięci czego nie widziałeś już z 5 lat

    command przechowuje klawisze, ale doczytaj sobie proszę o operatorach logicznych i co oznacza ! przed nazwą zmiennej w warunki IF i kiedy się go stosuje - toż to także masz w książce.

    u ciebie powinno być (podpowiem)

    Kod:
    if( command == 13 )


    .... ale dalej to już sam zajrzyj do źródeł i zaproponuj poprawną wersję

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    O! a jak chcesz w Arduino konkretnie - to Sun ci poda przykłady z kolei ;)

    _________________
    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: 20 lip 2012, o 22:15 
    Offline
    Użytkownik

    Dołączył(a): 31 gru 2011
    Posty: 34
    Pomógł: 0

    mirekk36 napisał(a):
    Po pierwsze twój kod nie ma nic wspólnego z C++ i Arduino więc nie uruchomisz tego w środowisku Arduino za żadne skarby.

    Po drugie możesz za to spokojnie odpalić na każdym procku ATmega. Tylko skąd ty sobie wymyśliłeś że sprawdzanie kodu klawisza to np:

    Kod:
    if( !address == 13)


    toż to jakieś totalnie nieporozumienie. Masz książkę, masz tam żywe przykłady a ty wymyślasz coś w ogóle z kosmosu co nie ma prawa nigdy zadziałać :(

    address ???? toż to na stałe w pilocie RC5 od TV zawsze ma wartość = 0 - więc co ci przyszło do głowy sprawdzać czy ma wartość =13 ale do tego jeszcze jakaś negacja ! ......

    eeeeeh zajrzyj proszę do pierwszego lepszego przykładu z książki albo DVD i napisz to od nowa bo wygląda jakbyś pisał coś z pamięci czego nie widziałeś już z 5 lat

    command przechowuje klawisze, ale doczytaj sobie proszę o operatorach logicznych i co oznacza ! przed nazwą zmiennej w warunki IF i kiedy się go stosuje - toż to także masz w książce.

    u ciebie powinno być (podpowiem)

    Kod:
    if( command == 13 )


    .... ale dalej to już sam zajrzyj do źródeł i zaproponuj poprawną wersję

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    O! a jak chcesz w Arduino konkretnie - to Sun ci poda przykłady z kolei ;)


    Cholera, tak to jest jak piszę się kod na kolanie. Tak to jest jak się bierze na szybko gotowy kod z płyty. Co do kodu i arduino, wiem że to nie ma nic wspólnego z C++, miałem na myśl "przeportowania" go na C++, aby można było wrzucić przez aplikacje do arduino, ale nie będzie problemu jeśli zaprogramuje atmege przez usbasp. Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lip 2012, o 12:12 
    Offline
    Użytkownik

    Dołączył(a): 31 gru 2011
    Posty: 34
    Pomógł: 0

    Witajcie, w nocy skleiłem coś takiego. Przyznać się muszę, że te funkcje włączające i wyłączające w if'ach od komend pilotów są wyssane z palca, bo za skarby nie wiem jak mam to zrobić. Dodam, że wczoraj to działało, ale dzisiaj już nie chcę. Proszę o pomoc.

    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: 21 lip 2012, o 12:53 
    Offline
    Użytkownik

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

    w zasadzie tak to mam 2 sprawy bo dopiero teraz zauważyłem .....

    gdzieś kupił arduino z M8 ??

    najpierw na duino zacznij od zdekodowania kodów swojego pilota

    np tak ...

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


    gdy już będziesz pewien którymi kodami co chcesz robić

    wystarczy wycięcie funkcji void decodeIR()

    i przerobienie drobne funkcji void loop()

    oczywiście mam na myśli użycie instrukcji swith ... case
    i to wszystko

    ------------------------ [ Dodano po: 19 minutach ]

    a zresztą ....

    masz rybę :)


    Przeanalizuj sobie przykłady z biblioteki IRremote .....
    hmmm ..... nie mogę już dodawać załączników do postów więc masz na droopboxie:

    https://www.dropbox.com/sh/n43aaqha4vlxvkz/oRnozN_kN7

    ja z niej nie korzystałem , ale tobie może się przydać i Ci pomóc :)

    _________________
    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: 21 lip 2012, o 13:26 
    Offline
    Użytkownik

    Dołączył(a): 31 gru 2011
    Posty: 34
    Pomógł: 0

    SunRiver napisał(a):
    w zasadzie tak to mam 2 sprawy bo dopiero teraz zauważyłem .....

    gdzieś kupił arduino z M8 ??

    najpierw na duino zacznij od zdekodowania kodów swojego pilota

    np tak ...

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


    gdy już będziesz pewien którymi kodami co chcesz robić

    wystarczy wycięcie funkcji void decodeIR()

    i przerobienie drobne funkcji void loop()

    oczywiście mam na myśli użycie instrukcji swith ... case
    i to wszystko


    Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lip 2012, o 13:32 
    Offline
    Użytkownik

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

    Bartek napisał(a):
    Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.


    To bardzo ciekawe co piszesz , bo przecież ja tu żadnej odmiany i wygody nie widzę przecież 168 to tylko nowsza i bogatsza wersja 8 :P

    _________________
    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: 21 lip 2012, o 13:34 
    Offline
    Użytkownik

    Dołączył(a): 31 gru 2011
    Posty: 34
    Pomógł: 0

    SunRiver napisał(a):
    Bartek napisał(a):
    Arduino kupiłem w wersji 168, ale wygodniej mi się pisze na m8, a dodatkowo wyczytałem, że zaprogramowaną atmege, mogę włożyć do arduino i wszystko będzie działać. Kod jak dla mnie przyjemniej piszę się w C, niż w środowisku arduino. Problemem jest w jaki sposób zrobić funkcje mostkującą te 2 piny. Pozdrawiam Bartek.


    To bardzo ciekawe co piszesz , bo przecież ja tu żadnej odmiany i wygody nie widzę przecież 168 to tylko nowsza i bogatsza wersja 8 :P


    Zawsze mam problem z ustawieniem fusebitów odpowiedzialnych za ten podzielnik częstotliwości taktowania procesora, który jest w 168. Tzn. ustawie to zgodnie z datasheet, ale układ nie działa tak jak powinien. Pozdrawiam Bartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lip 2012, o 13:45 
    Offline
    Użytkownik

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

    dlaczego nie użyjesz sobie MKCalkulatora ??? ja zawsze ustawiam 8< a zwykle jadę na 16Mhz <siła przyzwyczajenia> bez podziału zegara
    bo i poco jak do reszty mogę sobie użyć prescalera w sofcie :)

    moje fusy dla m168 zawsze tak wyglądają -U lfuse:w:0xFF:m -U hfuse:w:0xDF:m -U efuse:w:0xF9:m

    _________________
    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: 21 lip 2012, o 13:46 
    Offline
    Moderator
    Avatar użytkownika

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

    Bartek napisał(a):
    Zawsze mam problem z ustawieniem fusebitów odpowiedzialnych za ten podzielnik częstotliwości taktowania procesora, który jest w 168. Tzn. ustawie to zgodnie z datasheet, ale układ nie działa tak jak powinien. Pozdrawiam Bartek.


    W MkAvrCalculator - nawet nie trzeba się nad tym zastanawiać - jeden ruch palca i masz wszystko ustawione ;)

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    ooo Sun był pierwszy ;)

    _________________
    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 gru 2012, o 14:54 
    Offline
    Nowy

    Dołączył(a): 05 gru 2012
    Posty: 3
    Pomógł: 0

    Jakis czas temu zakupilem ksiazke pana Mirka. Probuje stworzyc na jej podstawie cos pozytecznego. Oczywiscie mam problem. Kod programu do odbioru RC5 wszystkim posiadaczom ksiazki znany, dodalem jedynie pare linijek. Program ma obslugiwac przekazniki, ten sam przycisk pilota ma zalaczony przekaznik wylaczyc, a niezalaczony zalaczyc. Niestety program nie dziala wg moich oczekiwan.

    Kod programu:

    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.


    Problem:

    Jesli uzywam przyciskow na pilocie 3 i 4 program wydaje sie dzialac prawidlowo. Ale chcialbym aby przelaczanie portu odbywalo sie jednym przyciskiem. Podlaczona dioda LED do portu sygnalizuje zmiane lecz wraca do poprzedniego stanu. Zauwazylem ze przycisniecie przycisku na pilocie na czas trzech migniec diody zmieni stan portu na przeciwny. Niby nic skomplikowanego ale nie moge sobie z tym poradzic. Poprosze o sugestie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 gru 2012, o 15:43 
    Offline
    Moderator
    Avatar użytkownika

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

    SUGESTIA ;)

    cieszę się, że jak napisałeś działa ci to gdy używasz 2 przycisków .... OK

    a teraz chcesz jeden przycisk do załączania wyłączania tego samego urządzenia, diody LED itp

    masz więc dwa rozwiązania, ale zanim je podam to polecam ci przypomnieć sobie jak działa nadawanie z pilota. Gdy nasz ludzki paluch wciśnie klawisz nawet na krótko, to i tak nasz paluch jest powolny i w międzyczasie pilot wypuści serię ramek podczerwieni oddzielonych odstępami zwanymi GAP. Tak więc do odbiornika niech w najgorszym przypadku dolecą dwie ramki - to już sam rozumiesz co się stanie, gdy napiszesz coś takiego

    Kod:
    if( 5==command ) PORTA ^= (1<<PA0);


    załóżmy że po kliknięciu klawisza nr.5 chcemy zmienić stan diody LED na przeciwny, a dioda podłączona do PORTA PA0

    pierwsza ramka zmieni stan czyli dioda zgaśnie ale ta druga znowu zmieni i dioda się zapali ;) .... jak niechcący nadlecą 3 ramki to uda ci się ją zmienić prawidłowo ale jak 4 ramki to znowu źle - więc trzeba byłoby wciąż myśleć i starać się SZYBKO klikać klawisz - co nieraz przy niektórych pilotach i grubych gumach jest ciężke do realizacji ;)

    więc:

    1. musisz albo sam wprowadzać dla każdego takiego IF'a dodać tzw własną maszynę stanów i zapamiętywać ostatnią operację żeby zareagować zawsze TYLKO na pierwszą ramkę która nadleci

    2. postarać się jednak o drugą książkę:

    http://atnel.pl/jezyk-c-pasja-programowania.html

    i poczytać w niej 1-szy rozdział , który dopiero opisuje POCZERWIEŃ od A do Z... ;) a prezentowane tam biblioteki są już nie DYDAKTYCZNE jak w pierwszej książce ale pełne niesamowicie potrzebnych gadżetów. Więc pomyśl sobie - taka biblioteka do obsługi RC5 i nie tylko RC5 przekazuje tobie poza command i address jeszcze taki tajemniczy parametr jak key_time. Wiesz co to jest ? To jest piękny licznik nadlatujących ramek OnLine, więc rozwiązanie twojego kłopotu jest OD RĘKI bez konieczności tworzenia oddzielnych maszyn stanu jak w punkcie wyżej, z tymi bibliotekami twój IF() mógłby wyglądać teraz tak:

    Kod:
    if( 5==command && !key_time ) PORTA ^= (1<<PA0);


    widzisz to? sprawdzamy pięknie teraz nie tylko czy wciśnięty klawisz nr 5 ale też czy to właśnie ramka nr. ZERO :) .... więc nie ma to szans już zareagować na 2-gą, 3-cią , 4-tą irt ;)

    co więcej - jakbyś chciał np aby jakaś opcja została załączona po dłuższym czasie np 3 sekund (tzn klawisz na pilocie trzeba przytrzymać 3 sekundy żeby coś przełączyć to napiszesz:

    Kod:
    if( 5==command && 12==key_time ) PORTA ^= (1<<PA0);


    czyli gdy klawisz 5 i ramka nr. 12 ... bo np 12 ramek nadleci w czasie 3 sekund ;) rozumiesz ? I teraz dla każdego klawisza oddzielnie możesz wykorzystywać wciąż tę samą zmienną key_time jak chcesz i jak ci się żywnie podoba.

    Takich bibliotek to ja już używam w swoich komercyjnych projektach - są przepięknie dopracowane a jeszcze opisane od podstaw jak je budować - modyfikować itp itd

    dlatego szczerze polecam drugą książkę i podczerwień w niej opisaną (mój temat konik) .... no ale jeszcze wiele innych ciekawych rzeczy jest.

    _________________
    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 gru 2012, o 16:51 
    Offline
    Nowy

    Dołączył(a): 05 gru 2012
    Posty: 3
    Pomógł: 0

    mirekk36 napisał(a):
    SUGESTIA ;)

    cieszę się, że jak napisałeś działa ci to gdy używasz 2 przycisków .... OK



    Tak, bo nic nie stoi na przeszkodzie zeby wlaczal sie i 4 razy, wiec dobrze ze napisalem "...wydaje sie dzialac prawidlowo".

    Niestety zakup nastepnego tomu ksiazki nie wchodzi w gre (narazie), gdyz pierwszy tom jak widac sprawia problemy. Sprobuje przeanalizowac Twoja odpowiedz i cos temu zaradzic, w ostatecznosci bede zmuszony uzywac dwoch przyciskow.

    Dziekuje za odpowiedz.

    Edycja:

    Udalo mi sie stworyc taki twor i znow wydaje sie dzialac poprawnie. Czy moga byc jakies z tym problemy?

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


    Jednak nie zawsze dziala jak powinno. Pomysle jeszcze nad tym.



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

    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