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

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

'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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.