Skocz do zawartości

[Bascom] radio 433MHz odbiornik


feriar

Pomocna odpowiedź

Witam,
mógłby mnie ktoś wspomóc z programem dla odbiornika 433MHz, otóż jest to projekt elebota i program jest sknocony i nie reaguje na komendy pilota.

schemat avr'a

pinout l293D


L293D - Attiny2313

1A [pin3]     -   pb.7
2A [pin7]     -   pb.6
3A [pin10]   -   pb.5
4A [pin15]   -   pb.2

a sam program wygląda tak:

'odbiornik RS232 , RR-4 443MHz
'wersja ATtiny 2313
'****** ustawienia *****
$regfile = "attiny2313.dat"
$baud = 1200
$crystal = 4000000
Config Portb = Output
Portb = &B00001100

'***** dekalracja zmiennych i podprogramów ******
Dim Dana As String * 1
Dim Czas As Byte
Declare Sub Naprzod
Declare Sub Prawo
Declare Sub Lewo
Declare Sub Wstecz
Declare Sub Stop1
Declare Sub Ddelay

'***** program glowny *****
Czas = 100
Do
Dana = Inkey()
If Dana = "p" Then
Call Prawo
Elseif Dana = "l" Then
Call Lewo
Elseif Dana = "n" Then
Call Naprzod
Elseif Dana = "w" Then
Call Wstecz
Elseif Dana = "s" Then
Call Stop1
End If
Loop

'***** prodprogramy ruchu *****
Sub Prawo:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 0 : Portb.2 = 0
Call Ddelay
End Sub

Sub Lewo:
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 1 : Portb.2 = 0
Call Ddelay
End Sub

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 1 : Portb.2 = 0
Call Ddelay
End Sub

Sub Wstecz:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.2 = 1
Call Ddelay
End Sub

Sub Stop1:
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 0 : Portb.2 = 0
Call Ddelay
End Sub

'*****podprogram opoznienia *****
Sub Ddelay:
Waitms Czas
End Sub

Błagam was o pomoc bo już nie wiem co nie tak, a jak ktoś popatrzy na to "świeżym okiem" to może się uda 🙂

Link do komentarza
Share on other sites

A jakie to są moduły? Ostatnio dużo majstruję z tymi HM więc może dam rade ci w czymś pomóc.

Dim Dana As String * 1

If Dana = " :P" Then

Tu masz 1-wszy błąd, bo deklarujesz zmienną String na 1 znak a chcesz odebrać 3.

Ja bym wpiął się przez RS232 do pilota i sprawdził, czy prawidłowo wysyła sygnały. Jeżeli prawidłowo to odpada ci problem z pilotem i możesz się skupić w 100% na odbiorniku, ale musisz napisać jaki to moduł.

Link do komentarza
Share on other sites

moduły to takie jak w elebocie czyli :

Teleconrolli RT6 - nadajnik

Teleconrolli RR4 - odbiornik

If Dana = "p" Then

bez tego dwukropka

to tak jest w programie tylko cos tutaj strona przerabila

[ Dodano: 08 Paź 10 03:05 ]

Tu masz 1-wszy błąd, bo deklarujesz zmienną String na 1 znak a chcesz odebrać 3

a nie przypadkiem 5 gora dol prawo lewo stop ?

Link do komentarza
Share on other sites

a nie przypadkiem 5 gora dol prawo lewo stop ?

Chodzi o rozmiar zmiennej - z tego co się orientuję samo String może przechować jeden znak (literkę, cyferkę itp), String*2 2 znaki, String*3 3 znaki itd.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jakie znacie sposoby na resetowanie procka [watchdog odpada bo już testowałem], bo program ten ciągle włącza silniki i ich nie wyłącza a jak testowałem z watchdogiem to na dłuższą metę nie wypali

Link do komentarza
Share on other sites

feriar, a dlaczego by tak miało być? Zwykły reset, taki jak przyciskiem zwierającym ~RST do masy. Ale Treker ma rację, jeśli musisz resetować µC bo ci nie chce wyjść z funkcji, to ewidentnie coś jest nie tak.

Link do komentarza
Share on other sites

'odbiornik RS232 , RR-4 443MHz
'wersja ATtiny 2313
'****** ustawienia *****

$regfile = "attiny2313.dat"
$baud = 1200
$crystal = 4000000
Config Portb.7 = Output
Config Portb.6 = Output
Config Portb.5 = Output
Config Portb.2 = Output

S1a Alias Portb.7
S1b Alias Portb.6
S2a Alias Portb.2
S2b Alias Portb.5

Config Watchdog = 2048
Start Watchdog

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Pwm1a = 255
Pwm1b = 255



'***** dekalracja zmiennych i podprogramów ******
Dim Dana As String * 1
Dim Czas As Byte


'***** program glowny *****
Do
Czas = 50
Dana = Inkey()

If Dana = "p" Then
Gosub Prawo
End If
If Dana = "l" Then
Gosub Lewo
End If
If Dana = "n" Then
Gosub Naprzod
End If
If Dana = "w" Then
Gosub Wstecz
End If


Loop





'***** prodprogramy ruchu *****


Prawo:
Do

Set S1a
Set S2b
Reset S2a
Reset S1b
Waitms 2000

Loop



Lewo:
Do

Set S1b
Reset S1a
Set S2a
Reset S2b
Waitms 2000

Loop



Naprzod:
Do

Set S1a
Set S2a
Reset S1b
Reset S2b
Waitms 2000

Loop



Wstecz:
Do
Set S1b
Set S2b
Reset S1a
Reset S2a
Waitms 2000


Loop






'*****podprogram opoznienia *****

Waitms Czas

zamiast If Dana = " :P" Then

Gosub Prawo jest naprawde (p) () to cudzysłów

Link do komentarza
Share on other sites

Przecież etykiety będą się wykonywać w nieskończoność bo zawarłeś je w pętli "Do - Loop".

Ponadto brakuje wyjścia z etykiet w postaci "Return".

Poprawiłem nieco:

'odbiornik RS232 , RR-4 443MHz
'wersja ATtiny 2313
'****** ustawienia *****

$regfile = "attiny2313.dat"
$baud = 1200
$crystal = 4000000
Config Portb.7 = Output
Config Portb.6 = Output
Config Portb.5 = Output
Config Portb.2 = Output

S1a Alias Portb.7
S1b Alias Portb.6
S2a Alias Portb.2
S2b Alias Portb.5


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Pwm1a = 255
Pwm1b = 255



'***** dekalracja zmiennych i podprogramów ******
Dim Dana As String * 1
Dim Czas As Byte


'***** program glowny *****
Do
Czas = 50
Dana = Inkey()

If Dana = "p" Then
Gosub Prawo
End If
If Dana = "l" Then
Gosub Lewo
End If
If Dana = "n" Then
Gosub Naprzod
End If
If Dana = "w" Then
Gosub Wstecz
End If


Loop
End                                                         'KONIEC PROGRAMU



'***** prodprogramy ruchu *****


Prawo:
Set S1a
Set S2b
Reset S2a
Reset S1b
Waitms 2000
Return                                                      'NIE ZAPOMINAJ O TYM - "WYJŚCIE" Z ETYKIETY



Lewo:
Set S1b
Reset S1a
Set S2a
Reset S2b
Waitms 2000
Return



Naprzod:
Set S1a
Set S2a
Reset S1b
Reset S2b
Waitms 2000
Return



Wstecz:
Set S1b
Set S2b
Reset S1a
Reset S2a
Waitms 2000
Return
Link do komentarza
Share on other sites

Pokazałem Ci jak stosować etykiety i pętlę główną programu, mamy za Ciebie uruchomić i przetestować program? Pokombinuj sam, w końcu na tym to polega.

Popraw to " :P" bo nie wiem czemu się zmienia, możesz na koniec głównej pętli dodać Waitms Czas, a reszta jest zgodna z dotychczasowym tokiem Twojego myślenia.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.