PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JoyPad mit RN-Mega128Funk



Nico99
04.08.2006, 16:02
Hallo!

Ich möchte den JoyPad am RN-Mega128Funk über dafür vorgesehenen Wannenleiste JOY anschliessen. Wie soll den so ein Code aussehen, damit die aktuellen Werte der Joysticks und Taster über RS232 ausgegeben werden?
Ich habe es mit BeispielCode von JoyPad probiert, aber irgendwie zeigt es immer die gleichen Werte an, unabhängig davon was ich drücke.

bis dann,
Nico

Nico99
05.08.2006, 22:19
Hallo!

Ich habe den JoyPad an RN-Control ausprobiert und es funktioniert einwandfrei.


$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX

Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)

' ---------------------------------------------------

Config Porta = Input
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung

Dim Joy1x As Word 'Variablen für Positionen der JoyPad Steuerknüppel
Dim Joy1y As Word
Dim Joy2x As Word
Dim Joy2y As Word

Print #2 , ""
Print #2 , "**** RN-Mega128Funk ****"
Print #2 , ""

Start Adc

Do

Joy1y = Getadc(0)
Joy1x = Getadc(1)
Print #2 , "Joystick 1 Position: X=" ; Joy1x ; " Y=" ; Joy1y

Joy2y = Getadc(2)
Joy2x = Getadc(3)
Print #2 , "Joystick 2 Position: X=" ; Joy2x ; " Y=" ; Joy2y

Wait 2
Loop

End

Der RN-128Funk scheint auch zu funktionieren.
Deshalb ist meine Frage: Kann es sein dass es bei Mega128 anders programmiert werden muss?

Mfg
Nico

linux_80
06.08.2006, 10:41
Hallo,

dann würde ich sagen kanns nur an der Referenzspannung liegen,

probier mal Reference = Internal oder AVCC
denn beim 128er-Funk ist keine externe Spannung angelegt, beim RN-Control schon.

Nico99
06.08.2006, 11:56
Hallo!

Ich habe es gerade probiert.
Ohne Reference = Internal zeigt mir Terminal:
Joystick1: PosX=1023 PosY=1023
Joystick2: PosX=1023 PosY=1023

Baue ich die Anweisung ein, erscheint folgendes:
Joystick1: PosX=481 PosY=474
Joystick2: PosX=440 PosY=467

Die Werte im 2. Fall variieren leicht.
Und in beiden Fällen ändern sich die Werte nicht bei Betätigubg des Joysticks.

linux_80
06.08.2006, 12:47
Und wie schauts mit AVCC aus ?

Nico99
06.08.2006, 13:10
Genauso wie bei internal...

Nico99
07.08.2006, 09:38
Hallo!

Ich habe mir noch mal die Hardware angesehen.
Da ich ziemlicher Neuling in Sachen AVR bin, habe ich folgende Frage:
Die Ports, an denen ich JoyPad dran habe sind Ports A (AD0, AD1, AD2, AD3) Der Mega128 hat Ports F als ADC0, ADC1, ADC2, ADC3.
Wo liegt der Unterschied zwischen AD und ADC? Werden die unterschiedlich von Bascom abgefragt?

Spion
07.08.2006, 09:42
Hallo

Denn unterschied weiss ich nicht, aber du musst das Joypad an die F Ports hängen, da sie ADC 0-7 sind, also dort die spannung beim ADC befehl ausgelesen wrd.

mfg Luca

linux_80
07.08.2006, 10:20
Die Belegung der Buchse Joy ist für das Joypad ausgelegt, also sollte es schon mal die richtigen Ports des 128er treffen.
Die AD-Wandler-Eingänge sind, wie schon gesagt, auf PortF, und nennen sich ADC.

Aber ich sehe grad die Leitungen von Joy gehen an den Port A, das geht dann natürlich nicht so !
Du kannst es aber an die Buchse LCD anstecken, denn da sind die ADC von PortF.

Die Pins mit AD wie bei PortA sind dafür da, wenn man externen Speicher an den 128er anschliessen würde, das ist auf dem 128er-Funk aber nicht vorgesehen.

Nico99
07.08.2006, 11:47
Ja, genau das meine ich. Die Buchse Joy ist nicht unbedingt richtig beschaltet bzw. beschriftet. Man sollte vielleicht Joy und LCD tauschen.
Ich werde heute abend mal mit LCD probieren.

Nico99
07.08.2006, 13:31
So, den JoyPad an Buchse LCD des RN-128Funk angeschlossen, und folgendes Code eingegeben:

' ---------------RN-Mega128Funk übliche ------------------

$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX


Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)

Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 250 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk

' ---------------------------------------------------

Config Portf = Input
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Für Tastenabfrage und Spannungsmessung



Dim Joy1x As Word 'Variablen für Positionen der JoyPad Steuerknüppel
Dim Joy1y As Word
Dim Joy2x As Word
Dim Joy2y As Word

Print #2 , ""
Print #2 , "**** RN-Mega128Funk ****"
Print #2 , ""

Start Adc

Do

Joy1y = Getadc(0)
Joy1x = Getadc(1)
Print #2 , "Joystick 1 Position: X=" ; Joy1x ; " Y=" ; Joy1y

Joy2y = Getadc(2)
Joy2x = Getadc(3)
Print #2 , "Joystick 2 Position: X=" ; Joy2x ; " Y=" ; Joy2y

If Pinf.5 = 0 Then Print #2 , "Joystick 1 wird runter gedrueckt!"
If Pinf.6 = 0 Then Print #2 , "Joystick 2 wird runter gedrueckt!"
If Pinf.7 = 0 Then Print #2 , "Taster 1 wird gedrueckt!"
If Pinf.8 = 0 Then Print #2 , "Taster 2 wird gedrueckt!"

Wait 2
Loop


End

Und es funktioniert einwandfrei!!!

Frank
07.08.2006, 14:40
Danke für Beispiel. Ich habe jetzt eine modifizierte korrigierte Anleitung für das Board bereitgestellt. Dein Beispiel hab ich gleich übernommen.

Hier ist die letzte Version der Anleitung (Datum 7.8.2006):
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=338

Duckjd
24.06.2009, 17:51
Hallo liebe Robotikgemeinde,

ich möchte diesen doch schon recht alten Thread noch einmal aufgreifen und eine Frage stellen. Ich benutze die selbe Kombination aus RN-Mega128Funk und RN-Joypad. Das Joypad betreibe ich am LCD-Port. Nun habe ich auch ein LCD (RN-LCD-Adapter) und dieses wie in der Anleitung beschrieben am JOY-Anschluß des Boards. Damit das funktioniert, habe ich die Pins angepasst. Nachfolgendes soll der Beispielcode erledigen:

- Display anschalten, Peepton erzeugen, Beleuchtung abschalten, 2Sekunden warten, Beleuchtung anschalten, Text ('** Test **') ausgeben
- Über Funk auf das Terminal Text ('RN-Mega...') ausgeben und danach die aktuellen Positionen des Joysticks ausgeben



$regfile = "m128def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 19200

Config Ping.0 = Output
Lcdpower Alias Portg.0

Sound Portg.2 , 400 , 450
Config Ping.3 = Output
Lcd_rw Alias Portg.3
Lcd_rw = 0
Lcdpower = 0
Wait 2
Lcdpower = 0

Config Lcd = 20 * 4a , Chipset = Ks077
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porte.7 , Rs = Portg.4
Config Lcdbus = 4

Initlcd
Cls
Locate 1 , 1
Lcd "** Test **"

Config Portf = Input
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim Joy1x As Word
Dim Joy2y As Word
Print "**** RN-Mega128Funk ****"
Start Adc
Do
Joy1x = Getadc(1)
Print "Joystick 1 Position X=" ; Joy1x
Joy2y = Getadc(2)
Print "Joystick 2 Position Y=" ; Joy2y

Wait 1
Loop
End


Leider erfolgt das Display ein/ausschalten nicht. Außerdem zeigt auch mein Joystick immer 1023 für X und Y an, auch wenn ich ihn bewege. Wenn ich das Display abziehe, dann verhält sich der Joystick korrekt. Wenn ich das Display am LCD-Port betreibe, funktioniert auch dieses korrekt. Nur in Kombination leider nicht.

Hat jemand einen Tipp für mich, was ich als nächstes testen kann? Oder hat schon jemand einmal ein RN-Display am JOY-Port betrieben und kann mir sagen, ob der Fehler eventuell an meiner PIN-Belegung liegt!?

Vielen Dank für Eure Hilfe.

Duckjd
14.10.2009, 07:34
Aufgrund anderer Projekte bin ich erst jetzt wieder dazu gekommen, mich oben genannter Problematik noch einmal widmen.

Leider konnte ich oben genannten Fehler immer noch nicht ausfindig machen. Es würde mir sehr weiterhelfen, wenn einer von Euch, mit Bascom-Basic und RN-Mega128Funk-Erfahrung mal oben geposteten Quellcode ansehen und mir einen Hinweis geben könnte, an welcher Stelle das Problem liegt.

Vielen Dank noch einmal.

Jimmy23
06.02.2010, 20:38
Wenn du das Joypad an der LCD-Buchse betreibst, musst du erst über die "Bleuchtung" einschalten.
Das geht über
Portg.0 = 1

Das selbe Problem hatte ich am Anfang auch, bis ich mit RN-Adapter dann gesehen hab, dass gar keine Spannung anliegt.

Gruß
Jimmy