Hallo,
wie sieht denn die Hardware aus?
Dieser Artikel beschreibt, wie ich ein Windows Programm schreibe und dann mithilfe von Bascom diese Daten dann weitervererbeite:
https://www.roboternetz.de/wissen/in...eines_Roboters
Nun habe ich eine Frage:
Mein Code sieht derzeit so aus:
Wenn ich nun mein Windows-Programm starte, leuchten die ersten 4 LED's, d.h. PORTC.0 bis PORTC.3 sind Low, obwohl eigentlich keine Daten gesendet werden.Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 $crystal = 16000000 $baud = 9600 Dim X As Integer Config Portc = Output Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Do 'Darauf warten dass irgendwas gesendet wird Input "" , X 'Joystick nach rechts If X = 0 Then Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 End If If X = 1 Then Portc.3 = 0 Else Portc.3 = 1 End If For X = 1 To 2 Portc.3 = 0 Portc.2 = 0 Next X For X = 1 To 3 Portc.3 = 0 Portc.2 = 0 Portc.1 = 0 Next X For X = 1 To 4 Portc.3 = 0 Portc.2 = 0 Portc.1 = 0 Portc.0 = 0 Next X 'Joystick nach links If X = 0 Then Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 End If If X = -1 Then Portc.4 = 0 Else Portc.4 = 1 End If For X = -1 To -2 Portc.4 = 0 Portc.5 = 0 Next X For X = -1 To -3 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Next X For X = -1 To -4 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 Next X Loop End
Wenn dann die Positionsdaten des Joystick gesendet werden, tut sich nichts; die 4 LED's leuchten weiterhin.
Hat irgendjemand eine Idee was das Problem ist? Liegt es möglicherweise an den For-Schleifen?
Torrentula
MfG Torrentula
Hallo,
wie sieht denn die Hardware aus?
Die Denkweise der meisten Menschen ist vergleichbar mit einer Sicht durch ein Strohhalm.
Kann das so richtig sein?!Code:For X = -1 To -4 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 Next X
Ein USB-Joystick, einen USB-Serialadapter und das RN-Control (12 V Versorgungsspannung). Die Hardware und das Windows-Programm sind einwandfrei, es scheitert nur an dem eigenen BASIC-Programm, denn dieses Funktioniert:wie sieht denn die Hardware aus?
Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 $crystal = 16000000 $baud = 9600 Dim X As Integer Dim Y As Integer Dim X1 As Word Dim X2 As Word Dim Y1 As Word Dim Y2 As Word Do 'Darauf warten dass irgendwas gesendet wird Input "" , X Input "" , Y 'Die Variablen umskalieren X1 = X + 20 X2 = X1 * 40 Y1 = Y + 20 Y2 = Y1 * 40 'Einen Ton (Tonhöhe = Joystick Position) ausgeben Sound Portd.7 , 10 , X2 Sound Portd.7 , 10 , Y2 LoopDas ist doch die Frage die ich habeKann das so richtig sein?!Code:For X = -1 To -4 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 Next X
Liegt es möglicherweise an den For-Schleifen?
Hallo,
die For-Schleifen sind da völlig fehl am Platz.
Ich vermute eher, dass du abhängig von der gesendeten Zahl die LEDs schalten möchstest, also bei "+1" eine LED, bei "+2" zwei LEDs usw. und für das negative wahrscheinlich entsprechend (nur in die andere Richtung).
Also auf gut Deutsch: große Auslenkung des Joysticks, viele LEDs an. Und das in beide Richtungen rechts/links. Liege ich da richtig?
Hab von Bascom zwar keine Ahnung (von Blitzplus, einem Basicdialekt aber schon, und C++), würde das so ähnlich lösen:
Hast dich mit dem "For" vielleicht am deutschen Sprachgebrauch zu sehr leiten lassen (Für X von -1 bis -4 mache dieses hier...), macht hier aber echt keinen Sinn.Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 $crystal = 16000000 $baud = 9600 Dim X As Integer Config Portc = Output Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Do 'Darauf warten dass irgendwas gesendet wird Input "" , X 'Mittelstellung, aus '------------------- If X = 0 Then Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 End If 'Joystick nach rechts '-------------------- If X > 0 Then Portc.3 = 0 End If If X > 1 Then Portc.2 = 0 End If If X > 2 Then Portc.1 = 0 End If If X > 3 Then Portc.0 = 0 End If 'Joystick nach links '------------------- If X < 0 Then Portc.4 = 0 End If If X < -1 Then Portc.5 = 0 End If If X < -2 Then Portc.6 = 0 End If If X < -3 Then Portc.7 = 0 End If Loop End
Grüße,
Bernhard
Du hasts erfasst!Ich vermute eher, dass du abhängig von der gesendeten Zahl die LEDs schalten möchstest, also bei "+1" eine LED, bei "+2" zwei LEDs usw. und für das negative wahrscheinlich entsprechend (nur in die andere Richtung).
Also auf gut Deutsch: große Auslenkung des Joysticks, viele LEDs an. Und das in beide Richtungen rechts/links. Liege ich da richtig?
Ich hatte vorher das Programm mit If gelöst aber da natürlich übersehen, dass die LED's IMMER dann leuchten wenn die Bedingung erfüllt ist. Denkfehler![]()
Vielen Dank
Torrentula
#Closed#
ich versteh nicht was der code machen soll
-1 to-4 step-1 ohne step -1 zählt der nur +1 und da wird das nie -4
wie gesagt wass soll das programm bei welcher joystickstelllung?
Wenn durch das Auswertungsprogramm des Computers dem RN-Control z.B. +2 übergeben wird, dann lässt der Code 2 LEDs auf der rechten Seite leuchten.ich versteh nicht was der code machen soll
Das Auswertungsprogramm übergibt Zahlen im Wertebereich von -4 bis +4.
Die 8 LEDs auf dem RN-Control dienen als Anzeige. Die vier 4 LEDs rechts von der gedachten Mitte von +1 bis +4 und die anderen 4 LEDs links von der gedachten Mitte für den Bereich von -1 bis -4.
Eine positive Zahl bedeutet Aussteuerung des Joystick nach rechts, eine negative Aussteuerung nach links. Je weiter man den Stick in eine Richtung bewegt, desto größer/kleiner wird der übergebene Wert.
-1 to-4 step-1 ohne step -1 zählt der nur +1 und da wird das nie -4WENN X kleiner als -3 ist (also: -4, -5, -6....), DANN soll die 4. linke LED leuchten.Code:If X < -3 Then Portc.7 = 0 End If
Ich hoffe das ist verständlich
EDIT:
-1 to-4 step-1 ohne step -1 zählt der nur +1 und da wird das nie -4Achso du meinst das mit den For-Schleifen. Ja das funzt so nicht da hast du recht
Lesezeichen