Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 22:07


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: 12 gru 2016, o 01:09 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.

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

Pozd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 09:02 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

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.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
To jest bez sensu.
Składnia: [ Pobierz ] [ Ukryj ]
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.
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: 12 gru 2016, o 10:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam.
No ja się przyznam że po przeczytaniu opisu i kodu,
Tak się pogubiłem że się poddałem. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 10:14 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 181
Lokalizacja: Kraków
Pomógł: 30

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 10:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Czy należy rozumować że są plany by:
Czujki decydowały o ledach góra - dół,
a wlaczniki o zalaczaniu i gaszeniu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 17:54 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.

Składnia: [ Pobierz ] [ Ukryj ]
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.

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


Pozd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 18:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

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
Składnia: [ Pobierz ] [ Ukryj ]
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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 20:15 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 28
Pomógł: 3

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 20:33 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

W takim razie gdzie jest problem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 21:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

chyba właśnie o to chodzi koledze "Daro68", że tymczasowo do testów włącznik a docelowo czujki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 22:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 23:07 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 28
Pomógł: 3

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 :D

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 ? :o



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 01:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

AsmGoth napisał(a):
cos na ksztalt wylacznika schodowego...

Jak już się nad tym pochyliłem to zamieszczę, a co mi tam. ;)
Pozdrawiam!

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: 13 gru 2016, o 09:03 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 28
Pomógł: 3

Składnia: [ Pobierz ] [ Ukryj ]
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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 21:10 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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’ :shock: 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ą :D .

Jeśli mogę jeszcze mogę spytać co oznacza „enum” :?:

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


Pozd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Daro68 napisał(a):

Jeśli mogę jeszcze mogę spytać co oznacza „enum” :?:
Składnia: [ Pobierz ] [ Ukryj ]
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):
Składnia: [ Pobierz ] [ Ukryj ]
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) :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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’ :shock: 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? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2016, o 19:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Poniżej wersja druga, trochę poprawiona: ;)

Składnia: [ Pobierz ] [ Ukryj ]
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. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2016, o 20:23 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2016, o 20:26 
Offline
Użytkownik

Dołączył(a): 26 cze 2016
Posty: 186
Pomógł: 7

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2016, o 22:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2016, o 23:05 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 28
Pomógł: 3

16 schodow czy 16 stopni ? :D chyba stopni :D Jakie diody ? bo wydajnosc pradowa za duza nie jest z takiego avra a jedna raczej bedzie marnym swiatlem ;P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2016, o 22:20 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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ę :D ,
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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2016, o 22:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Jakiś tam kod jest, :roll: 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 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! :D
Pozdrawiam.

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

Byłbym zapomniał. W razie czego dla 16 diod już mam napisany. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2016, o 00:51 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2016, o 02:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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.
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2016, o 09:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2016, o 09:35 
Offline
Użytkownik

Dołączył(a): 03 gru 2016
Posty: 28
Pomógł: 3

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 :D 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ł ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2016, o 10:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

mczarny napisał(a):
Wiem - wywraca to kod do góry nogami

E tam, wcale nie wywraca, ;) drobna modyfikacja i proszę mamy po SPI:

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: 17 gru 2016, o 12:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

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ń :)

_________________
http://strefapic.blogspot.com



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 5 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