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



Teraz jest 31 sty 2025, o 15:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 14 wrz 2012, o 20:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Witam,
Jak już pewnie większość z was wie, biorę się za lampkę RGB.

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


Użyta jest tu funkcja deay_ms.
Tej funkcji ja użyć nie mogę(nie mogę blokować uc)

Padło na timer 16bitowy(tylko taki mam wolny ;D)
No i teraz w jaki sposób to ugryźć?

Ja myślę sobie tak:
Zrobić podobnie jak jest w książce:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Tylko w takim wypadku jest naprawdę dużo kombinowania, proszę spojrzeć jeśli OCR0A dojdzie do wartości max (255), czyi dioda Red będzie świeciła maksymalnie, to następnie musimy poczekać 1000ms, potem ją(czerwoną) przyciemniać a rozjaśniać zieloną..
Teraz aby tego dokonać to musiałbym zrobić w pętli while jakieś zmienne pomocnicze: krok1, krok2, krok3... itp..

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


Czy da sie moze zrobić to jakos prosciej??
Może w zły sposób się za to biorę??
Byłbym wdzięczny, gdyby w tym temacie wypowiedział się Mirek ;))))



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2012, o 01:06 
Offline
Moderator
Avatar użytkownika

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

Dokładnie - tzn zrobić to można na 1001 sposobów, i ciężko mi nie tylko z uwagi na już bardzo późną porę ale i też na to że takie rozwiązanie zwykle mocno dopasowuje się do aktualnego projektu .... to pomimo wszystko kolega GwynBleid - patrząc ogólnie na opis - podał jedno z wielu rozwiązań. Spróbuj to prześledzić ...

_________________
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: 15 wrz 2012, o 07:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

GwynBleidD ale używałeś delay_ms??Czy masz to na timerze?
Bo głównie mi o to chodzi


Nie wiem czy masz przyciski (aby zmienić tryb)..
Bo tu jest wg. mnie największy problem z użyciem bokującej funkcji deay_ms

No bo spójrzmy, jeśli mamy 2 tryby:
1-rozjaśnia czerwoną, potem zieloną i na końcu niebieską (co da barwę białą))
2- rozjaśnia czerwoną, potem ją gasi, rozjaśnia zieoną potem gasi i rozjaśnia niebieską i potem gaśi..

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



No i teraz gdybyśmy 'byli' w połowie wykonywania trybu 2, i przyszłaby informacja, że zmienił się tryb z 2 na 1, to i tak musieibyśmy czekać na wykonanie się całgo trybu 2, dopiero po tym, procek mógły obsużyć krok1.

Także chyba muszę to zrobić na timerze..
Tyko chciałbym wiedzieć, czy też używałeś timera do generowania opóźnienia, albo użyłeś delay_ms ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2012, o 16:01 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Kolego xamrex a jakbyś spróbował wykorzystać timery programowe tak jak w przykładzie z 1-wire w Mirkowej książce, nie było by żadnego blokowania...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 wrz 2012, o 17:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

MichalXY, akurat te rozwiązanie się dla mnie nie sprawdzi, ale zastosuje podobne(pisałem o tym w pierwszym poście)
Dzięki za rady



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2012, o 07:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Szczegóły projkektu..
No ma to działać bez funkcji blokującej (Delay_ms) i ma tworzyć efekty na diodzie rgb

No może źle powiedziałem że się nie nada..
Wydaje mi się że 2gi sposób będzie lepszy.
Sposób 1 (ten proponowany przez MichalXY
//ustawiamy przerwanie tak, że sekundy inkrementują się co 1ms
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sposób nr 2

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



Sposób 2gi chyba lepszy :D



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO