Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Gamepad: automatisch auf analog schalten?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 14.11.2010, 20:36    Titel: Gamepad: automatisch auf analog schalten? Antworten mit Zitat

Hallo lächeln

Mein Gamepad ärgert mich grad n bissel. Es geht um folgendes:
Mit einem Joystick des Gamepads kann ich meinen Roboter Robby RP6 *¹ mithilfe des Funkmoduls RFM12 *² fernsteuern,
Um z.B. auch Kurven mit unterschiedlichen Radien fahren zu können muss ich des Stick des Gamepads manuell auf analog schalten, weil sonst nur ein vollausschlag erkannt wird.
Meine Frage:
Ist es denn mit vertretbarem Aufwand möglich dass das FB-Programm beim Start das Gamepad automatisch auf analog schaltet?

Der Code (hab mir einfach das Beispiel von freebasic-portal.de geschnappt und bissel modifiziert)
Code:

SCREEN 12

DIM AS SINGLE x, y, gasmulti, lenkmulti
DIM AS INTEGER buttons, result, i
OPEN COM "/dev/ttyUSB0:38400,N,8,1,ME,CS0,DS0,RS" AS #1
CONST JoystickID = 0

' Prüfe, ob die Joystick-Abfrage arbeitet:

IF GETJOYSTICK(JoystickID, buttons, x, y) THEN
   PRINT "Joystick existiert nicht, oder ein Fehler ist aufgetreten."
   PRINT
   PRINT "Beliebige Taste drücken um fortzusetzen"
   SLEEP
   END
END IF


DO
   GETJOYSTICK JoystickID, buttons, x, y
   LOCATE 1,1
   PRINT USING "x: +#.### y: +#.### Buttons: #### "; x; y; buttons

   IF (buttons AND (1 SHL 0)) THEN 'Ermöglich langsahmes, normales und schnelles fahren
      gasmulti=60
      lenkmulti=40
   elseif (buttons AND (1 SHL 2)) then
      gasmulti=20
      lenkmulti=15
   else
      gasmulti=40
      lenkmulti=30
   end if
   sleep 15
   y=y*-1
   put #1,,chr(255) 'Übertragung einleiten
   put #1,,chr(int(128+y*gasmulti+x*lenkmulti)) 'linke Kette
   put #1,,chr(int(128+y*gasmulti-x*lenkmulti)) 'rechte Kette
' Bei Tastendruck beenden.
LOOP UNTIL LEN(INKEY)
close


MfG + schon mal Danke!
-schumi-

PS:
Die Links für Leute die es interessiert:
*¹ Robby RP6: http://arexx.com/rp6/html/de/index.htm
*² RFM-Funkmodul: http://www.pollin.de/shop/dt/MDU5OTgxOTk-/Bausaetze_Module/Module/Funkmodul_RFM12_433_Sende_Empfangsmodul.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 15.11.2010, 21:59    Titel: Antworten mit Zitat

Schade dass mir bis jetzt noch niemand weiterhelfen konnte... neutral

Mir ist eben noch eingefallen dass folgendes noch von Bedeutung sein könnte:
- Gamepad ist über USB angeschlossen
- Es handelt sich um einen "EasyLine Double Action Air Grip Controller" von Hama (http://www.hama.de/portal/action*2563/articleId*112419)
- Betriebssystem: Lubuntu 10.04

Währe echt toll wenn ihr mir einen Link o.ä. zu einem Beispiel geben könntet, damit ich das Rad nicht neu erfinden muss (falls mein Vorhaben überhaupt möglich ist)

MfG
-schumi-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz