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 17 maja 2025, o 02:40


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
    Autor Wiadomość
    PostNapisane: 30 mar 2013, o 11:51 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Mam podłączone czujniki Sharpa na wejściach ADC, czy program powinien być napisany tak, że po zauważeniu przeciwnika następuje przerwanie od ADC czy normalnie zrobić to pętlą if? Jeśli przez przerwanie ADC to proszę o jakieś porady jak to zrobić bo nigdy tego nie robiłem, czytam datasheet ale nie wiele mi to rozjaśnia całą sytuację



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 12:59 
    Offline
    Moderator
    Avatar użytkownika

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

    Przerwanie wcale nie jest konieczne. Ale czy myślisz że na wszystko jest jedna porada ? .... ;) to zależy od tego jak budujesz program, od potrzeb, od sytuacji itp itd. Bardzo ciężko na tak mega ogólnie postawione pytanie coś jednoznacznie podpowiedzieć.

    Gdybyś np pokazał jakiś swój fragment kodu i napisał - że masz z czymś tam kłopot - to pewnie dałoby radę lepiej coś podpowiedzieć.

    _________________
    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: 30 mar 2013, o 13:07 
    Offline
    Użytkownik

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

    w zasadzie mozna to zrobic tak :

    przykładowa funkcja obsługi sharpów:

    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 oczywiście w przerwaniu od timera skanowanie sharpów i linii .....

    oczywiście to przykład tylko :

    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.

    _________________
    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: 30 mar 2013, o 13:53 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    coś ten kod mi nie działa :/
    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.


    musiałem wyłączyć linijkę //sharp[0]=read_adc(); bo kompilator wyrzucał jakiś błąd, dlaczego? I za co jest odpowiedzialna ta komenda? Sharpy mam podłączone na PC4 i PC5



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 14:23 
    Offline
    Użytkownik

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

    pokazałem ci fragment obsługi .... wiec nie dziwne że nie zadziała ...
    pokazałem jak to zrobić w przerwaniu , ale nie dałem całego rozwiązania :)

    _________________
    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: 30 mar 2013, o 15:58 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    A mógłbyś napisać kod jak obsłużyć jednego sharpa? Tak jak mówiłem nie bardzo to rozumiem, stąd mój problem :-/ Na podstawie kodu może załapię o co chodzi ;-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 16:01 
    Offline
    Moderator
    Avatar użytkownika

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

    No ale Sun podał ci praktycznie gotowca ... jeśli nie możesz załapać na tej podstawie to jednak trzeba poćwiczyć troszkę język C, podstawową obsługę ADC przede wszystkim itp

    _________________
    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: 30 mar 2013, o 16:04 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    No właśnie obsługi ADC w języku C nie umiem, obsługiwałem wcześniej ADC ale przez Bascom'a, a to niestety całkiem co innego. Proszę Was o jakieś wskazówki i porady, bo w sieci nie ma zbyt wiele informacji na ten temat, a z Datasheetu nie wiele rozumiem bo jest po ang :-(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 16:06 
    Offline
    Moderator
    Avatar użytkownika

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

    ja mogę ci szczerze polecić rozpoczęcie nauki C z tą książką

    http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

    tam masz także sporo o ADC

    a niedługo ukaże się jeszcze Video poradnik do książki na temat ADC

    _________________
    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: 30 mar 2013, o 16:14 
    Offline
    Użytkownik

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

    mozna np tak :




    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.


    oczywiście sposobów jest wiele :)

    oczywiście ja sobie ułatwiłem poprzez :

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

    _________________
    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: 30 mar 2013, o 18:26 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Pani Mirku książka jest fajna, ale niesety nie przyjdzie mi teraz zamówienie przez święta :-/
    SunRiver wiem, że masz już mnie dosyć, ale to nadal nie działa. Nie wiem w końcu który kod powinienem wkleić żeby działał ten sharp w przerwaniu.. Mam go podpiętego na PC4



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 18:47 
    Offline
    Użytkownik

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

    ojjj... dlaczego miałbym mieć dosyć :)
    jak coś to na porcie C niema ADC :) ale jest na Porcie A :)

    jest jeszcze ważna sprawa jakiego masz sharpa bo są analogowe i cyfrowe :)
    jak masz cyfrowego to ADC nie jest potrzebne :)

    _________________
    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: 30 mar 2013, o 18:50 
    Offline
    Nowy

    Dołączył(a): 26 mar 2013
    Posty: 5
    Pomógł: 1

    Mówisz że dokumentacje Atmela są trudne do zrozumienia ? Przecież to jedne z najlepiej udokumentowanych procków, przykłady w C i Asm, ponad 300 stron na których jest wszystko opisane z przykładami. Poczytaj sobie dokumentacje HopeRF, zobaczysz dopiero co to znaczy że dokumentacje trudno zrozumieć ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 19:07 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    W atmega8 ADC jest na portach C :-) Sharp jest cyfrowy, podpięty pod PC4. Tak też się zastanawiałem dlaczego porównywanie skoro to odczyt cyfrowy :-) Więc czy jest sens robić przerwania od sharpów, czy lepiej cały program oprzeć na pętlach if? Jeśli przerwania to jak je zapisać bo przecież sharp nie jest ani na Timerze0 ani Timer1?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 19:24 
    Offline
    Nowy

    Dołączył(a): 21 sty 2013
    Posty: 14
    Pomógł: 0

    To ja postaram się wytłumaczyć :)
    Jeżeli czujnik jest analogowy, to tak jak piszesz potrzebny jest przetwornik ADC. Na przykładzie pokażę jak to zrobić.
    Po pierwsze w funkcji main wybieramy działanie przetwornika:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Ustawiliśmy przetwornik, czas na obsługę przerwania od niego, czyli moment w którym zakończy się pojedyńcza konwersja (którą wywołamy w pętli). W przerwaniu tym będziemy zapisywać do tablicy (w tym przypadku czteroelementowej) wyniki pomiarów, które mieszczą się w dwóch rejestrach osmiobitowych - traktuj je dla uproszczenia jako jeden rejestr ADCW.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Teraz czas na odczyt z tablicy tych pomiarów w pętli głównej. Sumujemy pomiary w zmiennej wynik i dzielimy ją przez 4 - ja tak często robię ze względu na duży rozrzut pomiarowy tych czujników, więc uśredniając kilka pomiarów dostaję dosyć stabilny wynik.

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


    Teraz najtrudniejsza sprawa, czyli przeliczenie zmiennej wynik na odległość - jest to kłopotliwe, gdyż trudno napisać prostą funkcję do tego, więc spróbuj wyświetlić sobie tą zmienną na LCD i jak się to uda to pokażę Ci co robię z tym dalej :)

    Aha - podłącz w tym ustawieniu sharpa do PC0



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 19:42 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Dziękuję za tak dokładny opis, ale mój sharp jest cyfrowy więc chyba nie dam rady tego zrobić na nim :-) ale kod mi się przyda jak będę podłączał analogowy czujnik do wykrywania białej lini, jednak póki co chcę podłączyć sharpy i je poprawnie uruchomić, żeby wziąć się za kolejną rzecz :-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 20:14 
    Offline
    Użytkownik

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

    Młody od tego trzeba było zacząć :) jaki jest twój sharp :)

    ale młody wróć do mojego kodu funkcja od sharpów zauważ że masz tam 1 analogowy na początki i 2 cyfrowe wystarczy wyrzucić odczyt analogowego (czujniki lini to inna zabawa)

    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.


    Funkcja ta wpisuje stan sharpów do tabeli np takiej

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


    to pozwala łatwo robić takie funkcje jak Atak czy czy inne:

    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.




    a potem można w petli głównej realizować całośc :

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

    _________________
    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: 30 mar 2013, o 20:58 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Coraz więcej zaczynam rozumieć, ale mam jeszcze kilka problemów:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Jako jazdawprzo powinienem ustawić porty z mostka a wartości (600,600) to wartość podawana na OC1A i OC1B?
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    co to jest ta wartość 1024?

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


    Jako co jest SHARP_PRZOD? skąd k>300000? Na jakiej podstawie zostanie to wyliczone?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 mar 2013, o 21:39 
    Offline
    Użytkownik

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

    Sharp[0] to sharp analogowy - wejscie analogowe przyjmuje wartości od 0 do 1024

    Sharp[1] i [2] to cyfrowe Lewy i Prawy
    wiec siłą rzeczy Sharp_przod to ??

    k się inkrementuje jak szukamy wroga 300000 to wartośc do jakiej jest ograniczone kręcenie się dookoła :)

    _________________
    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: 30 mar 2013, o 21:57 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Trochę to pozmieniałem, ale cały czas wyrzuca mi błędy:
    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: 1 kwi 2013, o 20:21 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Udało mi się rozgryźć te tablice i sharpy, ale mam pewien problem. Działanie każdego sharpa zapisuje do tablicy, ale chcąc odpalić silniki kiedy jednocześnie dwa widzą przeszkodę to nie działa, bo albo nie chodzi żaden, albo lewy, albo prawy, co bym nie wpisał w pętli if to nie działa...
    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: 2 kwi 2013, o 14:53 
    Offline
    Nowy

    Dołączył(a): 30 mar 2013
    Posty: 11
    Pomógł: 0

    Panowie, przejrzy ktos ten program i powie co powinienem zmienić?



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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