Witam, czy mógłby mi ktoś napisać jak zrobić by led migała na pilota?


Witam

Jestem tu nowy i mam taki problem.
Otóż chciałbym zrobić taki układ na np. tiny13, który po włączeniu przycisku na pilocie np. 1
można było zapalać i gasić nim led która by migała po włączeniu np. na PB.0, oraz drugą led przyciskiem np. 2 zapalać i gasić ale łagodnie np. na PB.1, tzn powolne zapalanie i gaszenie?
Program do odbioru RC5 już napisałem w Bascomie - zapalanie i gaszenie diody pilotem i działa, ale jeśli dodam do:

If address = 1 then
PORTB.0 = 1
waitms 500
Reset PORTB.0
waitms 500
End If

To dioda tylko się zapala a po 0,5 sekundy gaśnie i nic się nie dzieje...
Kombinowałem na różne sposoby i nic...
Prosiłbym o jakieś konkretne odpowiedzi.
Z góry dziękuje.




Portret użytkownika matrix

Re: jak zrobić by led migała na pilota?

Pierwsze pytanie jakie się rodzi to:
Jakim pilotem dysponujesz? Jaki generuje kod?

Portret użytkownika lumpus

Witam Pilota posiadam od

Witam

Pilota posiadam od PHILIPSA nadaje w RC5.
I włączanie i wyłączanie na tego pilota działa.
Pozdrawiam

Portret użytkownika matrix

Re: jak zrobić by led migała na pilota?

No to w czym kłopot? Piszesz obsługę getrc5 i po sprawie.

Portret użytkownika lumpus

Witam Chyba źle się

Witam

Chyba źle się zrozumieliśmy.
Jak już wcześniej wspomniałem program do odbioru RC5 już napisałem , włączanie i wyłączanie diody DZIAŁA bez problemu.
Ale chciałbym aby ta dioda MIGAŁA po włączeniu z pilota np. co 500ms a nie tylko zapalała i gasiła się - w tym problem. Nie wiem jak zrobić by migała...No i druga sprawa by dioda zapalała się i gasła powoli - łagodnie (też na pilota) i właśnie w tym problem...

Portret użytkownika matrix

Re: jak zrobić by led migała na pilota?

Do płynnego zapalania i gaszenia diody musisz użyć PWM'a czy to programowego czy sprzętowego.
Natomiast jeśli to ma migać co 0,5sek to co 500ms musisz zmienić jakąś flagę za pomocą timera i pozwolić na załączanie owej diody.

Portret użytkownika lumpus

Witam Rozumiem, że kolega

Witam

Rozumiem, że kolega się na tym zna, ja natomiast jestem początkujący.
Czy Mógłby kolega podać jakiś przykład z objaśnieniem tak bym mógł sobie to "przetrawić"?
Byłbym wdzięczny.

Portret użytkownika gosc

Musisz poczytać o

Musisz poczytać o Timer'ach.ewentualnie z któregoś z programów z tej stronki skopiować.Skonfigurujesz sobie aby co 500ms zmieniał stan flagi.I napisz tak
If address = 1 and flaga=1 then
PORTB.0 = 1

To tylko przykład jak możesz sobie to rozbudować.

Portret użytkownika lumpus

A czy kolega Mógłby podać

A czy kolega Mógłby podać linki do takich programów?
Jestem tu nowy i nie bardzo się rozeznaje.
Z góry dziękuje.

Portret użytkownika matrix

Re: jak zrobić by led migała na pilota?

Nie pisz warunku if adres = 1 bo zwykle piloty w kodzie RC5 pracują z adresem 0 i będziesz szukał godzinami co jest nie tak.

Portret użytkownika lumpus

Czy mógłby ktoś mi podać

Czy mógłby ktoś mi podać jakiś przykład z opisem jak zrobić w bascomie migającą diode na pilota? Bo z wcześniejszych wypowiedzi nie wiele wnioskuje. To tak jak by uczyć kogoś jak się łowi ryby tłumacząc mu : "Ryby łowi się nad jeziorem" a reszte się domyśl...Proszę o konkrety jeśli to możliwe.
Z góry dziękuje.

Portret użytkownika gosc

Witam! Chyba trochę wakacyjne

Witam!
Chyba trochę wakacyjne lenistwo wychodzi.Praktycznie w każdym programie tu na stronie jest Timer w programie.Zerknij po lewej stronie Programy lub Kody źródłowe.Jeżeli Ci napisze przykład to go skopiujesz i nic nie zrozumiesz.Ściągnij sobie polski Help do Bascoma i poczytaj co to jest timer i odmierzanie czasu.A w przykładach znajdziesz dokładnie to co potrzebujesz.Nawet nie będziesz musiał za dużo przerabiać.Później jak będziesz wiedział o co chodzi to napisz kod i ewentualnie sie poprawi.P.s nie robiłem nic co jest z pilotem związane wiec przepraszam za wprowadzenie w blad z tym adresem.

Portret użytkownika gosc

Witam Nie, nie to nie

Witam

Nie, nie to nie lenistwo czy to brak wiedzy jak się do tego zabrać. Dlatego napisałem tutaj. Ale widze, że ciężko ludzie dzielą się wiedzą. Po niekąd się nie dziwie ale z drugiej zaś strony to forum istnieje chyba po to by nią się dzielić - tak? Ok, pomijając fakt, który opisałem wcześniej zabrałem się za pisanie tego kodu...Hmmm nie wiem czy ide w dobrym kierunku ale wyszło coś takiego:

$regfile = "attiny13.dat"
$crystal = 9600000

Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts

Ledpulse Alias Portb.3
Config Rc5 = Portb.4

Dim Ledpulse As Byte
Dim Licznik As Byte

Do
Dim ....
Getrc5....
Command = Command....

If Command = 1 Then
Toggle Ledpulse
End If
Loop

End

Prztimer0:
Incr Licznik
If Licznik = 1 Then Licznik = 500
If Licznik = Ledpulse Then Set Ledpulse Else Reset Ledpulse
Return

Tam gdzie kropki wiadomo, procedura pobierania kodu rc5.
Niestety Bascom wywala 2 błedy ERROR 49 i 31. Chciałbym by na tym porcie PB.0 led mignęła co 500ms i włączała się i gasiła jednym przyciskiem nr.1. Co jest nie tak w tym programie?

Portret użytkownika gosc

Nie, nie. To nie lenistwo...

Witam

Fakt iż nie umieszczam tu żadnych kodów czy coś w tym stylu nie jest spowodowane lenistwem tylko brakiem wiedzy. Z tego co widze to ludzie ciężko dzielą się wiedzą i w sumie nie dziwie się, choć z drugiej strony to forum jest po to by się nią dzielić - tak? Dlatego napisałem tutaj...Pomijając fakt o którym napisałem wcześniej oczywiście sam też coś tam skrobie i oto wyniki :

$regfile = "attiny13.dat"
$crystal = 9600000

Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts

Ledpulse Alias Portb.3
Config Rc5 = Portb.4

Dim dioda As Byte
Dim Licznik As Byte

Do
Dim ....
Getrc5....
Command = Command .....

If Command = 1 Then
Toggle dioda
End If
Loop

End

Prztimer0:
Incr Licznik
If Licznik = 1 Then Licznik = 500
If Licznik = dioda Then Set dioda Else Reset dioda
Return

Tam gdzie kropki procedura pobierania kodu rc5 oczywiście.
Niestety Bascom wywala 2 błędy : 49 i 31, nie chce skompilować programu.
Chciałbym by dioda zapaliła sie raz na 500ms oraz by była uruchamiana i wyłączana za pomocą pilota i przycisku nr.1. Co jest nie tak w programie?

Portret użytkownika gosc

Nie, nie. To nie lenistwo tylko brak wiedzy...

Witam

Fakt iż nie umieszczam tu żadnych kodów czy coś w tym stylu nie jest spowodowane lenistwem tylko brakiem wiedzy. Z tego co widze to ludzie ciężko dzielą się wiedzą i w sumie nie dziwie się, choć z drugiej strony to forum jest po to by się nią dzielić - tak? Dlatego napisałem tutaj...Pomijając fakt o którym napisałem wcześniej oczywiście sam też coś tam skrobie i oto wyniki :

$regfile = "attiny13.dat"
$crystal = 9600000
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
 
Ledpulse Alias Portb.3
Config Rc5 = Portb.4
 
Dim dioda As Byte
Dim Licznik As Byte
 
Do
Dim ....
Getrc5....
Command = Command .....
 
    If Command = 1 Then
    Toggle dioda
    End If
Loop
 
End
 
Prztimer0:
 Incr Licznik
 If Licznik = 1 Then Licznik = 500
 If Licznik = dioda Then Set dioda Else Reset dioda
Return

Tam gdzie kropki procedura pobierania kodu rc5 oczywiście.
Niestety Bascom wywala 2 błędy : 49 i 31, nie chce skompilować programu.
Chciałbym by dioda zapaliła sie raz na 500ms oraz by była uruchamiana i wyłączana za pomocą pilota i przycisku nr.1. Co jest nie tak w programie?

Portret użytkownika lumpus

Przepraszam za tyle wpisów ale coś komp mi posypał...

ps.

wkradł się mały błąd :

Tutaj : Ledpulse Alias Portb.3
powinno być : dioda Alias Portb.0 oczywiście...

Portret użytkownika matrix

Re: jak zrobić by led migała na pilota?

Tu nie chodzi o to że ludzie niechętnie dzielą się wiedzą a o to że prosisz by ktoś za Ciebie napisał kod.
Ja na ten przykład nie mam czasu na swoje sprawy a co dopiero pisać program za kogoś. Nie da się tak.

Nie sprawdzałem Ci ustawień timerów bo nie mam czasu.
co do kodu:
po pierwsze config portX = output/input lub config portX = $bXXXXXXXX zero w miejsce X = wejście, 1 w miejsce X=wyjście.
Dalej PORTX= ustawiasz stan wyjściowy na pinach portu.
Teraz pętla do...Loop a w pętli getrc5 (adres,komenda)
komenda = komenda &bXXXXXXXXX - poszukaj.

Dalej kombinuj.

Portret użytkownika gosc

Musisz sam dojść jak

Musisz sam dojść jak pisać.Inaczej nigdy nic nie napiszesz.Timery musisz poznać dokładnie,bo bez tego nie napiszesz żadnego programu.Wcześniej Ci napisałem abyś przeanalizował kilka gotowych programów.Timery sa tu prawie w każdym programie.Masz zle napisany Prztimer0: Zobacz jak to jest w innych programach.Napisz sobie krotki programik do odliczania czasu.Timer musi odliczać Twoje 500ms i zmieniać stan jakieś flagi.Dopiero jak wciśniesz jakiś przycisk to dioda sprawdzi stan flagi i jeżeli będzie 1 to sie zapali,a jak 0 to zgaśnie. Nie będę pisał jak skonfigurować Timer ,bo jest tu mnóstwo przykładów wraz z opisami.Czytaj opisy sa bardzo pomocne analizuj i próbuj.