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 13 mar 2025, o 13:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
    Autor Wiadomość
    PostNapisane: 21 lut 2015, o 10:07 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Witajcie.
    Dopiero zaczynam i jestem całowicie początkujący. Kupiłem ksiązke BB i po przeczytaniu teorii doszedłem do praktyki. Chciałem sobie poćwiczyć jak to bywa na początku z diodami i ze składnią programu. Na początku napisałem taki program:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Działa on tak jak chciałem. Ale pomyślałem sobie, żeby przetestować funkcje if. W związku z tym chciałem wstawić warunek
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Ale nie wiem gdzie jest bład bo program zachowuje się tak jakby nie widział tego warunku. Program wygląda tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Pomożecie mi zrozumieć co jest nie tak ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 10:19 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    Odpowiedz najpierw sobie co chciałeś osiągnąć i czy to na pewno nie działa?
    Pomyśl czy gołym okiem zauważysz różnicę świecenia diody przez 1s, a 1,1 s.

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 10:21 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Yyyy 1000ms to jest jedna sekunda, a 100ms to 0,1 sekundy więc wydaje mi się, że zauważę tą różnice :)

    Tak to chciałem napisać, że po 32 kroku prędkość świecenia i gaszenia diód wzrośnie 10 razy. Chyba, że jak sugerujesz to jest dodawane 1 + 0,1 sek , wtedy faktycznie nie zauważe.

    Rzeczywiście zamieniłem delay'e miejscami i program działa, ale nie tak jak ja chciałem .. Te wartości sie dodają a ja chciałem zeby sie tylko zmieniły.



    Ostatnio edytowano 21 lut 2015, o 10:35 przez aren, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 10:31 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2012
    Posty: 256
    Lokalizacja: Rumia
    Pomógł: 22

    Może tak

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

    _________________
    http://www.marcingibas.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 10:32 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    aren napisał(a):
    Yyyy 1000ms to jest jedna sekunda, a 100ms to 0,1 sekundy więc wydaje mi się, że zauważę tą różnice :)

    Tak to chciałem napisać, że po 32 kroku prędkość świecenia i gaszenia diód wzrośnie 10 razy. Chyba, że jak sugerujesz to jest dodawane 1 + 0,1 sek , wtedy faktycznie nie zauważe.

    Rzeczywiście zamieniłem delay'e miejscami i program działa, ale nie tak jak ja chciałem .. Te wartości sie dodają a ja chciałem zeby sie tylko zmieniły.


    Poczytaj o konstrukcji if...else.

    Zauważ, że ja Ci będę podsuwał tylko sugestie bez "gotowców" :).

    --
    Pozdrawiam.
    Grzegorz...

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

    Marcin_G napisał(a):
    Może tak

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


    Ojjj no to kolego grubo "pojechałeś".
    Skompiluj to i sam zobacz ile taki mały programik zajmie Ci pamięci.
    Temat _delay_ms(x) poruszany był tu już dziesiątki jak nie setki razy.

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 10:35 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Wybrnąłem z tego tak: ale nie wiem czy to dobry tok myślenia ...

    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 lut 2015, o 10:41 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    aren napisał(a):
    Wybrnąłem z tego tak: ale nie wiem czy to dobry tok myślenia ...

    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.


    No i proszę prosta konstrukcja zrozumiana, ale ja bym jeszcze coś zmienił:

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


    I już masz krótszy kod wynikowy.

    -------------------------------------------------------------------------------------------------------- EDIT
    Sorki z tym krótszym wynikowym to chyba przesadziłem, ale po prostu masz krótszy kod źródłowy.
    --------------------------------------------------------------------------------------------------------------

    Dodatkowo zobacz jak można zapisać jeśli w if wykonujesz tylko jedną instrukcję.

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 14:07 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2012
    Posty: 256
    Lokalizacja: Rumia
    Pomógł: 22

    Grzegorz... napisał(a):
    ... Ojjj no to kolego grubo "pojechałeś".
    Skompiluj to i sam zobacz ile taki mały programik zajmie Ci pamięci.
    Temat _delay_ms(x) poruszany był tu już dziesiątki jak nie setki razy.


    Może i grubo. Pytanie jednak, nie było o zoptymalizowanie kodu, ale o warunek "if" . Rozwiązanie które ja podałem jest jednym z możliwych do wprowadzenia od tak na szybko. Oczywiście Twoja odpowiedź z punktu widzenia zajętości pamięci jest o wiele rozsądniejsza, a i przy okazji kolega aren poznał do czego służy "else".
    Zresztą, jak jeszcze trochę poczyta BB to za chwilę odpuści sobie te "delaye" i zacznie używać timerów programowych :)

    _________________
    http://www.marcingibas.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 18:06 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    A możecie mi wytłumacyć czym się różni zapis:
    DDRD |= (1<<PD5);
    od
    DDRD = (1<<PD5);

    Nie mogę zrozumieć działania tej "pionowej kreski". Przecież sam znak równa się to też jest ustawienie bitu do DDRD ...

    Coś narazie cięzko mi idzie. Chyba na trzeźwo tego nie ogarne :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 18:26 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Dzięki - już rozumiem. A przecież czytałem o tym w książce ... Chyba za dużo chce na jeden raz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2015, o 18:31 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2012
    Posty: 256
    Lokalizacja: Rumia
    Pomógł: 22

    Jak już całą raz przeczytałeś, to proponuję przeczytać ją powtórnie :) Z własnego doświadczenia wiem że po drugim, a potem trzecim, czwartym ;) razie, wszystko staje się coraz bardziej zrozumiałe :)

    _________________
    http://www.marcingibas.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2015, o 00:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 cze 2013
    Posty: 988
    Lokalizacja: Byram, MS 39272
    Pomógł: 55

    ta jedna pionowa kreska wypadałoby dodać, że jest to po prostu bitowe LUB (OR). Dlatego nie taki zapis nie wpływa na inne bity. Proponuje poczytać o tym w BB lub tutaj http://arduino.cc/en/Reference/BitwiseAnd i obejrzeć jeden z poradników Mirka, w którym ponoć Mirek pokazuje jak to działa!

    I jeszcze zapamiętaj jedno
    a+=1 jest równoznaczne z a=a+1
    zatem
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

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

    _________________
    Pomysły na podpis - wyślij SMSa +1 769 243 0011



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 18:18 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Witajcie ponownie.
    Chyba jestem całkowity betonik z tego programowania. Przeczytałem książkę ksiązkę 1,5 razy. Doczytałem drugi raz do zajęć proaktycznych z diodami i przyciskiem. Przyszła pora poćwiczyć. Wymyśliłem sobie że:
    mam 8 diod i jeden przycisk. Chcę naciskając przycisk raz zapalić pierwszą diode.
    Naciskając drugi raz zapalić do pierwszej - drugą diodę (czyli świeci się pierwsza i druga).
    Naciskając trzeci raz zapalić do pierwszej i drugiej diody trzecią (czyli świeci się pierwsza i druga i trzecia) i tak aż do ośmiu.

    No i beton :( Nie mam pomysłu a może logicznego myślenia jak się za to zabrac ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 18:41 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    A czego nie rozumiesz?
    Jeśli jak zapalac kolejne diody to zainteresuj się tym tematem: http://mirekk36.blogspot.com/2012/10/ro ... skowa.html
    Do tego przeczytaj w BB jeszcze raz rozdział o operatorach bitowych.

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 19:17 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Właśnie chyba niczego nie rozumiem i przez to się zniechęcam :(
    Napisałem takie coś, żeby chociaż zmienić stan jednej diody po naciśnięciu przycisku. Niestety to też 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: 11 mar 2015, o 19:50 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    No a przecież w rozdziale "Obsługa klawiszy typu micro-switch" w BB masz tak wszystko pięknie opisane.
    1. W swoim programie nie podciągasz wejścia klawisza do VCC wewnętrznym rezystorem.
    2. Nie masz żadnej eliminacji drgań styków - nawet opartej o delay-e.

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 19:52 
    Offline
    Moderator
    Avatar użytkownika

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

    aren napisał(a):
    Napisałem takie coś, żeby chociaż zmienić stan jednej diody po naciśnięciu przycisku. Niestety to też nie działa ...

    Napisałeś też w pierwszym poście że masz Bluebooka - ale powiedz ty panie kochany - czy ty czytałeś tę książkę w ogóle? czy rzuciłeś ją w kąt ... i tworzysz na zasadzie - wyjdzie coś albo nie wyjdzie ?

    _________________
    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: 11 mar 2015, o 19:57 
    Offline
    Nowy

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    aren napisał(a):
    Witajcie ponownie.
    Chyba jestem całkowity betonik z tego programowania. Przeczytałem ksiązkę 1,5 razy. Doczytałem drugi raz do zajęć proaktycznych z diodami i przyciskiem.



    Panie Mirek to nie jest tak hop siup wszystko na raz zapamiętać. Dodam jeszcze, że oprócz książki oglądam też videoporadniki godzinami... ale jak widać na razie beton jestem

    Grzegorz...
    Dodałem te dwa puknty, które napisałeś, ale teraz nie wiem dlaczego świecą się dwie diody (PD0 i PD1), a klawisz nadal jest martwy ..

    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: 11 mar 2015, o 20:26 
    Offline
    Użytkownik

    Dołączył(a): 11 wrz 2013
    Posty: 709
    Zbananowany użytkownik

    Pomógł: 23

    Aż postanowiłem sprawdzić na podstawie kodu z 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.


    I działa.
    Ale poczytaj też to, bo jak przytrzymasz palucha za długo na klawiszu to zobaczysz ciekawy efekt :) : http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html

    --
    Grzegorz...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 21:05 
    Offline
    Moderator
    Avatar użytkownika

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

    aren napisał(a):
    Panie Mirek to nie jest tak hop siup wszystko na raz zapamiętać.

    Panie, ... a ty myślisz że ja albo ktoś to na pamięć wkuwa tego typu książki ? ;) ... to chyba tylko gieniusze co niektórzy z ele...

    Ale za to masz wyraźny ROZDZIAŁ w książce, no i pierwsze przykłady na DVD dołączonym do książki - gdzie w tytule jak BYK masz o obsłudze przycisków/klawiszy - to powiedz mi czy ktoś tu wymaga od ciebie "na pamięć" ? ... żebyś chociaż na przykładzie tych kodów albo te kody DOKŁADNIE spróbował i coś ci nie wychodziło - to wtedy - no można zrozumieć bo początkujący jesteś ....

    ale ty - piszesz kod w oderwaniu w ogóle od jakiegokolwiek przykładu nie tylko z książki ale z jakichkolwiek nawet kodów z netu .... Więc zrozum - nikt ci tu nie zarzuca niczego - KAŻDY rozumie właśnie że jesteś początkujący - ale na Zeusa .... no jak mówię otwórz właściwy rozdział albo otwórz pierwsze ćwiczenie z DVD i zacznij je przerabiać - a jak czegoś nie rozumiesz to zadaj pytania - OK ?

    i podobnie z kolejnymi ćwiczeniami - bo wtedy będzie o wiele łatwiej ci pomóc czy na coś naprowadzić - gdy będzie widać że idziemy tym samym tokiem rozumowania ... o to chodzi ;)

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

    aren napisał(a):
    ale jak widać na razie beton jestem

    Beton to jest ten kto może NIC nie robi - ty coś robisz - może trochę nieudolnie no ale cię naprowadzamy ;) .....

    tylko tak się zastanawiam - przyznaj się bez bicia - zaglądałeś do przykładów na DVD ? albo do przykładu obsługi klawisza w książce ? ale w takim sensie - że

    1. napisałeś swój kod tu na forum
    2. zajrzałeś do książki czy ew jest co najmniej podobnie jak w niej
    3. albo zajrzałeś do przykładu na DVD

    ??? zrobiłeś tak czy nie ? ;)

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

    Dołączył(a): 26 maja 2014
    Posty: 18
    Pomógł: 0

    Od wczoraj nastąpił mały progres. Napisałem coś takiego ale nie rozumiem dlaczego to działa inaczej niż sobie założył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.


    Myślałem, że pętla pierwsza pętla for zostanie wykonana jak nacisnę raz przycisk i zaświeci się pierwsza dioda. Jeśli puszcze przycisk to pętla zostaje przerwana i czeka na naciśnięcie przycisku. Gdy nacisnę drugi raz powinna się zaświecić pierwsza i druga dioda i czekać na kolejne moje naciśnięcie.

    Tymczasem . Jak tak naciskam to cuda wianki się dzieją z diodami. Raz świeci 7 diód, potem jedna, potem wszystkie (jakiś random się robi). Ale jeśli trzymam wciśnięty klawisz to diody zapalają się jedna po drugiej

    Wytłumaczy mi to ktoś. Proszę ...



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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