ATNEL tech-forum https://forum.atnel.pl/ |
|
Program led shcody https://forum.atnel.pl/topic17047.html |
Strona 1 z 2 |
Autor: | Daro68 [ 12 gru 2016, o 01:09 ] |
Tytuł: | Program led shcody |
Proszę o pomoc próbuje napisać program do oświetlenia schodów ale nie umiem połączyć dwóch opcji oświecania i gaszenia w gore z oświecaniem i gaszeniem w dół : klawisz1_wcisniety - zapala ledy w górę klawisz2_wcisniety - gasi ledy w górę klawisz3_wcisniety - zapala ledy w dół klawisz4_wcisniety - gasi ledy w dół przy czym klawisz1 i klawisz3 są podłączone do jednego pinu tak jak klawisz 2 – 4 tam będą podłączone czujniki. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozd. |
Autor: | Sparrow-hawk [ 12 gru 2016, o 09:02 ] |
Tytuł: | Re: Program led shcody |
Dwa razy masz zadeklarowaną zmienną 'i'. Po co Ci 4 flagi i 4 funkcje do sprawdzania wejścia, skoro używasz tylko 2 pinów? Lepiej jedna funkcja, która zwróci stan jednego z dwóch pinów wejściowych. Skoro 1-3 & 2-4 są zwarte, to co decyduje o tym, że raz LEDY włączane są do góry, a innym razem w dół? Moim zdaniem, już bardziej z tego opisu powinny być zwarte 1-2 & 3-4. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Ten fragment ma zapalać/gasić diody? Bo jeśli tak, to czy nie lepiej zrobić to w postaci osobnych funkcji? Po drugie ten if to chyba zawsze będzie spełniony, więc beztrosko sobie inkrementujesz 'i'; Następnym razem, proszę sformatuj kod, który tu wstawiasz. W twoim kodzie brak też komentarzy, pomijając te ??????. A to mój przykład prostej funkcji gaszenia 8 diod. |
Autor: | Daro69 [ 12 gru 2016, o 10:11 ] |
Tytuł: | Re: Program led shcody |
Witam. No ja się przyznam że po przeczytaniu opisu i kodu, Tak się pogubiłem że się poddałem. |
Autor: | janusz17 [ 12 gru 2016, o 10:14 ] |
Tytuł: | Re: Program led shcody |
Szkoda, że nie napisałeś żadnego komentarza przy kodzie. Ciężko coś takiego analizować jak trzeba wszystkiego się domyślać. I też się zastanawiam po co cztery flagi do przycisków, skoro są podpięte po dwa równolegle do dwóch pinów. |
Autor: | Daro69 [ 12 gru 2016, o 10:15 ] |
Tytuł: | Re: Program led shcody |
Czy należy rozumować że są plany by: Czujki decydowały o ledach góra - dół, a wlaczniki o zalaczaniu i gaszeniu ? |
Autor: | Daro68 [ 12 gru 2016, o 17:54 ] |
Tytuł: | Re: Program led shcody |
Tak sobie to wymyśliłem mają być dwa czujniki ruchu jeden na dole drugi na górze a program miałby działać w ten sposób : klawisz1_wciśnięty (czujnik 1- dolny ) załącza ledy z dołu do góry i czeka na sygnał z czujnika 2 klawisz2_wciśnięty (czujnik 2- górny) gasi ledy z dołu do góry i kończy pierwszy program. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
klawisz3_wciśnięty (czujnik 2- górny ) załącza ledy z góry do dołu i czeka na sygnał z czujnika 1 klawisz4_wciśnięty (czujnik 1- dolny) gasi ledy z góry do dołu i kończy drugi program. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozd. |
Autor: | Daro69 [ 12 gru 2016, o 18:42 ] |
Tytuł: | Re: Program led shcody |
Aaa... teraz chyba trochę się rozjaśniło. Znaczy się że - klawisz=czujnik. może jakoś tak ? klawisz_1 to czujnik dolny klawisz_2 to czujnik gorny język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. wykorzystać cztery funkcje, a w nich przesuwać bity w zmiennej i przypisywać do wyjścia. |
Autor: | AsmGoth [ 12 gru 2016, o 20:15 ] |
Tytuł: | Re: Program led shcody |
Strasznie to skomplikowane, nie prościej oprzeć po prostu o funkcję czasową ? Cos w ten desen - przycisniecie przycisku na dole - podswietlasz pierwszy stopien, zwloka czasowa, podswietlasz drugi stopien, zwloka czasowa, podswietlasz n-ty stopien, zwloka czasowa, podswietlasz ostatni stopien, zwloka czasowa, gasisz stopien pierwszy, zwloka, drugi stopien, zwloka itp. Czasy mozesz sobie dobrac eksperymentalnie. Zreszta dolne stopnie mozesz zaczac gasic jak juz bedziesz np. w polowie schodow. To samo jak uruchomisz przycisk na gorze - tylko w odwrotnym kierunku. Troche bez sensu tyle klikac by podswietlic sobie schody Ja u siebie do czegos takiego dokladam dwie czujki ruchu, po co mam szukac wlacznika. Mozesz rowniez dolozyc mniejsza jasnosc w nocy aby nie dawalo po oczach jak dasz jakies super ledy. |
Autor: | Sparrow-hawk [ 12 gru 2016, o 20:33 ] |
Tytuł: | Re: Program led shcody |
W takim razie gdzie jest problem? |
Autor: | Daro69 [ 12 gru 2016, o 21:37 ] |
Tytuł: | Re: Program led shcody |
chyba właśnie o to chodzi koledze "Daro68", że tymczasowo do testów włącznik a docelowo czujki. |
Autor: | kicajek [ 12 gru 2016, o 22:17 ] |
Tytuł: | Re: Program led shcody |
AsmGoth napisał(a): Zreszta dolne stopnie mozesz zaczac gasic jak juz bedziesz np. w polowie schodow. ...a jak się rozmyśli i zacznie wracać? Pozdr. |
Autor: | AsmGoth [ 12 gru 2016, o 23:07 ] |
Tytuł: | Re: Program led shcody |
kicajek napisał(a): AsmGoth napisał(a): Zreszta dolne stopnie mozesz zaczac gasic jak juz bedziesz np. w polowie schodow. ...a jak się rozmyśli i zacznie wracać? Facet powinien być zdecydowany Cóż, dotrze na góre, nadusi włącznik i wróci na dół A tak serio to ja sobie nie wyobrażam takiego rozwiązania bez czujek A jeśli już mają być wyłączniki to dwa - tylko dołożyć sobie jakas zmienna typu stan - aby wykrywac czy diody sa on czy off i wtedy... 1 - jesli stan off - wylacznik1 lub wylacznik 2 wlacza swiatlo dol - gora lub gora - dol, ustawia stan on 2 - jesli stan on - wylacznik1 lub wylacznik 2 wylacza swiatlo dol-gora lub gora - dol, ustawia stan off cos na ksztalt wylacznika schodowego... Dokładnie tak jak Daro89 napisał.. Tyle ze jak sie teraz wczytalem to autor chce miec rownolegle przycisk i czujke na gorze i to samo na dole... po co te wlaczniki jak maja byc czujki ? |
Autor: | anshar [ 13 gru 2016, o 01:16 ] |
Tytuł: | Re: Program led shcody |
AsmGoth napisał(a): cos na ksztalt wylacznika schodowego... Jak już się nad tym pochyliłem to zamieszczę, a co mi tam. Pozdrawiam! |
Autor: | AsmGoth [ 13 gru 2016, o 09:03 ] |
Tytuł: | Re: Program led shcody |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Jest wczesnie rano, nie wiem czy dobrze zrozumialem - ale opcja 0 jest dosc "niebezpieczna" - jesli nadusi przycisk na dole i stwierdzi ze jednak nie wybierze sie na gore to bedzie musial zasuwac na gore by wylaczyc podswietlenie Z drugiej strony - idealne do wymuszania aktywnosci fizycznej ;P |
Autor: | Daro68 [ 13 gru 2016, o 21:10 ] |
Tytuł: | Re: Program led shcody |
Na początku chciałbym jeszcze raz wyjaśnić osobom które mnie źle zrozumiały klawisz = czujnik program testowałem na zestawie uruchomieniowym dlatego napisałem klawisz. Program który przedstawił kolega ‘anshar’ jest to ten efekt który chciałem uzyskać, ale z tego co widzę na moim etapie wiedzy mierzyłem trochę za wysoko , więc biorę się za analizowanie kodu który zamieścił kol. ‘anshar’. Fajny kod i dużo nauki przedemną . Jeśli mogę jeszcze mogę spytać co oznacza „enum” język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Pozd. |
Autor: | Daro69 [ 13 gru 2016, o 21:25 ] |
Tytuł: | Re: Program led shcody |
Daro68 napisał(a): Jeśli mogę jeszcze mogę spytać co oznacza „enum” język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Od tego momentu stałe: key1_on =0 key2_on =1 key1_off =2 key2_off =3 można się nimi posługiwać zamiast wartości np. nr 0 , 1 , 2 , 3 Daro68 napisał(a): język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Od tego momentu istnieje zmienna keys_state = 2 . (key1_off) |
Autor: | anshar [ 13 gru 2016, o 21:35 ] |
Tytuł: | Re: Program led shcody |
AsmGoth napisał(a): Z drugiej strony - idealne do wymuszania aktywnosci fizycznej ;P No jak ktoś lubi... to sobie pobiegnie, światła wyłączy, poczeka chwilę, światła włączy i zbiegnie na dół by je sobie wyłączyć. Świetna gimnastyk z samego rana! Daro68 napisał(a): Program który przedstawił kolega ‘anshar’ jest to ten efekt który chciałem uzyskać, Bardzo mi miło. Daro68 napisał(a): Jeśli mogę jeszcze mogę spytać co oznacza „enum” Enum to typ wyliczeniowy, masz wszystko pięknie opisane w BB (Podstawy języka C, Typy wyliczeniowe enum, str84-86 w twardej oprawie. ------------------------ [ Dodano po: kilkunastu sekundach ] Daro69 napisał(a): Od tego momentu istnieje zmienna keys_state = 2 . (key1_off) Dokładnie tak! Prawda, że łatwiej? |
Autor: | anshar [ 14 gru 2016, o 19:30 ] |
Tytuł: | Re: Program led shcody |
Poniżej wersja druga, trochę poprawiona: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
@Daro68 Daj znać czy ci się podoba i czy rozumiesz co się tutaj dzieje w tym kodzie. W razie czego pytaj. |
Autor: | Daro68 [ 14 gru 2016, o 20:23 ] |
Tytuł: | Re: Program led shcody |
Dziękuje za podpowiedz dotyczącą ‘enum,’ zajrzałem do BB i wszystko się wyjaśniło . Mam jeszcze jedno pytanie program ma obsługiwać 16 schodów więc co lepiej zastosować rejestr przesuwny 74HC595 albo samo atmege np. 32 i port PC + PD. Pozdrawiam. |
Autor: | czarekgr [ 14 gru 2016, o 20:26 ] |
Tytuł: | Re: Program led shcody |
Daro68 napisał(a): Proszę o pomoc próbuje napisać program do oświetlenia schodów ale nie umiem połączyć dwóch opcji oświecania i gaszenia w gore z oświecaniem i gaszeniem w dół : klawisz1_wcisniety - zapala ledy w górę klawisz2_wcisniety - gasi ledy w górę klawisz3_wcisniety - zapala ledy w dół klawisz4_wcisniety - gasi ledy w dół A może lepiej nie 4, ale 2 przyciski? Jak się się nie świeci to przycisk zapala, a jak się świeci to gasi. |
Autor: | anshar [ 14 gru 2016, o 22:59 ] |
Tytuł: | Re: Program led shcody |
Szczerze to myślałem, że ty to piszesz tak do testów, do nauki. Daro68 napisał(a): program ma obsługiwać 16 schodów Jak ma wyglądać to oświetenie? Napisz coś więcej, bo tak to trochę wróżenie z fusów. Ma to być jedna zwykła dioda led na każdy ze schodów czy ma ich być więcej? |
Autor: | AsmGoth [ 14 gru 2016, o 23:05 ] |
Tytuł: | Re: Program led shcody |
16 schodow czy 16 stopni ? chyba stopni Jakie diody ? bo wydajnosc pradowa za duza nie jest z takiego avra a jedna raczej bedzie marnym swiatlem ;P |
Autor: | Daro68 [ 15 gru 2016, o 22:20 ] |
Tytuł: | Re: Program led shcody |
Kolego ‘anshar’ trochę zostałem zaskoczony twoim kodem ponieważ moim celem było najpierw lepsze poznanie ‘C’ a potem napisanie własnego kodu ale kod już jest z czego się bardzo cieszę , a teraz pochylam się nad i analizuje choć nie które miejsca muszę dobrze przetrawić. Ogólnie kod jest dla mnie zrozumiały mam jaszcze problem gdzie co rozmieścić jaki nawias ale widzę już małe postępy. A co się tyczy schodów to : taśma led 30cm x 16 stopni = około 5m/ 2A , zasilanie 12V i myślałem nad układem ULN2803. Pozdrawiam. |
Autor: | anshar [ 15 gru 2016, o 22:58 ] |
Tytuł: | Re: Program led shcody |
Jakiś tam kod jest, ale dla tylko 8 diod. Ty przecież potrzebujesz dla 16, prawda? Proponuję zatem, gdy już ten kod przetrawisz to przerób go sobie na 16 diod, albo dla wprawy napisz od podstaw nowy i wtedy potraktuj moje rozwiązanie jako przykład, jao jedno z wielu. Przecież to samo można napisać na wiele sposobów. Pewnie dużo prościej i czytelniej. Nie bardzo rozumiem o jakim rozmieszczeniu jakich nawiasów piszesz. O co kaman? Co do ULN2803 to będziesz potrzebował ze dwie takie sztuki dla 16 listew diodowych. Myślę, że to ma szanse działać. Faktycznie nie powinienem ci tego kodu dawać, no ale jak już napisałem to szkoda, by się takie arcydzieło zmarnowało! Pozdrawiam. ------------------------ [ Dodano po: 2 minutach ] Byłbym zapomniał. W razie czego dla 16 diod już mam napisany. |
Autor: | Daro68 [ 16 gru 2016, o 00:51 ] |
Tytuł: | Re: Program led shcody |
W moim przypadku gotowce są uzupełnieniem BB mam wtedy szerszy zakres wiedzy zawartej w nim i lepiej mogę zrozumieć. Na początku BB jest tam dużo teoria i dla osoby uczącej się od zera jest to pewien kłopot. Wspomniałeś coś o kodzie na 16 stopni no i właśnie problem jak dodać np. port PC do portu PD żeby diody zapalały się kolejno (podpowiedz mile wskazana) . Wracając do twojego kodu takie rzeczy jak np.switch,if,endif mogę zobaczyć ich zastosowanie i rozmieszenie w programie jest to bardzo cenne i jeszcze jedno różnica między if i endif Pozdrawiam. |
Autor: | anshar [ 16 gru 2016, o 02:12 ] |
Tytuł: | Re: Program led shcody |
Daro68 napisał(a): różnica między if i endif Znowu odeślę ciebie do BB, bo tam wszystko jest. W twardej oprawie na str.141 masz podrozdział 3.6.6. Dyrektywy kompilacji warunkowej. Jest to bardzo proste, zobacz... W kodzie mam na przykład: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Jest to dyrektywa preprocesora, wszędzie gdzie wystąpi teraz LED_SLOW_DOWN automatycznie zostanie podstawiona tam wartość 1. Mam nadzieję, że to dla ciebie jasne. Dalej: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Chodzi o to, że pisząc ten kod, nie wiedziałem, czy chcesz aby diody się zapalały/gasiły z tą samą prędkością czy życzysz sobie, by stopniowo zapalały/gasily się wolniej. Dlatego masz opcję do wyboru gdy wpiszesz 1, czyli spowolnienie zapalania/gaszenia diod, a gdy 0 (może być w tym przypadku dowolna cyfra, byle nie była równa 1) to będą się zapalać/gasić bez spowolnienia, z tą samą prędkością. W eclipsie działa to tak, że linia/linie kodu, które są niektywne, nie są brane pod uwage do kompilacji programu, są wyszarzone. Od razu widzisz, które linie kodu zostaną skompilowane, a które nie. Fajne?! Daro68 napisał(a): Wspomniałeś coś o kodzie na 16 stopni no i właśnie problem jak dodać np. port PC do portu PD żeby diody zapalały się kolejno (podpowiedz mile wskazana) Interesuje nas tak na prawdę funkcja void leds( uint8_t choice, uint8_t reset) Powołałem tam zmienną statyczną i z każdym wywołaniem tej funkcji inkrementuję tą zmienną o 1, i++; Mamy 8 diod, więc ta zmienna powinna przyjmować wartości od 0 do 7, prawda? Dlatego na końcu dałem if(i<8) i++; czyli inkrementuję tą zmienną tylko wtedy, gdy jest mniejsza od 8. Teraz chcemy mieć 16 diod, więc ta zmienna musi przyjmować wartości od 0 do 15. Czyli damy warunek if(i<16) i++; Dalej w kodzie mamy: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. A tak na prawdę to jest to: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. OK, diody na porcie A zapalają się po kolei. Dodajemy kolejne 8 diod, tym razem na porcie D. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. No dobra, tylko, że jak tak zrobimy to owszem diody będą się zapalały ale na dwóch portach jednocześnie (równolegle), a my chcemy, by zapały się po kolei, no to jak już się pewnie domyślasz musimy dać jakiegoś if'a, bo przecież diody mają się zapalać dopiero dla naszego i większego od 7, czyli: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. A po co jest jeszcze i-8? Inkrementujemy naszą zmienną i od 0 do 15, a nasze wyświetlanie z przesunięciem bitowym działa prawidłowo dla i w zakresie od 0 do 7, a nie od 8 do 15, dlatego odejmuję jeszcze 8. Proste? Identycznie trzeba zrobić dla zapalania diod od prawej do lewej i dwóch pozostałych do gaszenia, no może nie do końca tak samo, bardzo podobnie. |
Autor: | mczarny [ 16 gru 2016, o 09:13 ] |
Tytuł: | Re: Program led shcody |
cześć Kolega anshar się napracował i pięknie wytłumaczył jak działa kod, ale ja poszedłbym w kierunku rejestrów przesuwnych i wtedy w miejsce zajętych dwóch portów (16 pinów) korzystamy tylko z trzech pinów do transmisji SPI. Wiem - wywraca to kod do góry nogami ale przy okazji można nauczyć się czegoś nowego a sam sposób jak to zrobić jest w BB - str.312 pozdrawiam |
Autor: | AsmGoth [ 16 gru 2016, o 09:35 ] |
Tytuł: | Re: Program led shcody |
Jeśli sterownik ma działać tylko do tego celu to nie ma co dokładać dodatkowej elektroniki bo portów i tak nie zabraknie. A przybędzie dodatkowy punkt/element potencjalnej awarii Co innego jeśli będziemy chcieli te porty wykorzystać jeszcze do innych celów i będzie nam ich brakować. Bo tak możemy zaraz dojść do tego, że można dorzucić CAN, modbus czy inny RS-485 i sterować tym czym sobie zapragniemy choćby włącznikiem dzwonkowym przy furtce gdy dom jest w trybie "Dziecko spi", zeby dzwonek nie dzwonił tylko LEDy na schodach zrobiły nam kilkukrotna "linijke diodowa" informując, że listonosz najnowszy numer Atnel Mikroprocesory przyniósł |
Autor: | anshar [ 16 gru 2016, o 10:49 ] |
Tytuł: | Re: Program led shcody |
mczarny napisał(a): Wiem - wywraca to kod do góry nogami E tam, wcale nie wywraca, drobna modyfikacja i proszę mamy po SPI: |
Autor: | wat1970 [ 17 gru 2016, o 12:45 ] |
Tytuł: | Re: Program led shcody |
Szanowny Kolego Daro68 sterownik schodów zrobisz fajnie na układzie WS2803, układy można łączyć szeregowo więc ilość schodów od 1 do miliona. Występuje w obudowie DIP. Jeden układ obsłuży 18 szt schodów na każdym wyjściu masz PWM 8-bitowe. Czyli sterowanie robisz ładnie z efektem rozjaśniania/ściemniania. Układ jest prosty w oprogramowaniu, popędzisz go Atmega 8 lub ATtiny lub czymkolwiek co ma w nazwie mikrokontroler. Tu masz jakiś pierwszy lepszy przykład z sieci : http://www.jarzebski.pl/arduino/kompone ... s2803.html. Mnie żona nie pozwoliła wieszać na schodach elektroniki dlatego sterownik schodów pozostaje tylko w sferze marzeń |
Strona 1 z 2 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |