PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo über Tastatur steuern



Zeroeightfifteen
25.07.2005, 16:23
hallo ich wollte machen, wenn ich die 2 drücke soll der Servo weiter nach rechts fahren, wenn ich die 8 drücke soll er weiter nach links fahren. Doch er meldet mir immer einen Fehler in Line 53 (also in der letzten Zeile) und der Servo fährt bis auf Anschlag nach links.


$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Config Keyboard = Pinb.0 , Data = Pinb.1 , Keydata = Keydata
Config Servos = 1 , Servo1 = Portc.7 , Reload = 10
Config Portc = Output

Enable Interrupts

Dim Key As Byte
Dim I As Byte
I = 120
Servo(1) = I
Print "Test"

Do
Key = Getatkbd()
If Key <> 0 Then
Print "Taste " ; Chr(key) ; "I =" ; I

End If
If Key = 8 Then
I = I + 10
If Key = 2 Then
I = I + 10


Loop
End


Keydata:

Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0


Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

Zeroeightfifteen
25.07.2005, 16:29
für was steht überhaupt das End If? weil wenn ich dies weg mache, dann meldet er mir den gleichen Fehler

Zeroeightfifteen
25.07.2005, 17:32
das mit links recht funktioniert jetzt schon. doch ich muss die tasten immer 2 mal drücken damit ich ein Ergebnis bekomme. was muss ich da noch ändern?
Do
Servo(1) = I


Key = Getatkbd()
If Key = 56 Then
Print "Taste " ; Chr(key) ; " (" ; Key ; ")" ; " I=" ; I
I = I + 1

End If

Key = Getatkbd()
If Key = 50 Then
Print "Taste " ; Chr(key) ; " (" ; Key ; ")" ; " I=" ; I
I = I - 1

End If


Loop

PicNick
25.07.2005, 17:42
GetatKybd wartet, bis eine Taste gedrückt wird.
Wenn also NICHT 56, dann liest er nochmal.
Vorschlag:


do
Key = Getatkbd()
If Key = 56 Then
Print "Taste " ; Chr(key) ; " (" ; Key ; ")" ; " I=" ; I
I = I + 1
End If
If Key = 50 Then
Print "Taste " ; Chr(key) ; " (" ; Key ; ")" ; " I=" ; I
I = I - 1
End if

loop


Gleichzeitig 50 + 56 kannst du eh nicht drücken

Zeroeightfifteen
25.07.2005, 17:53
Danke es funktioniert O:)

Zeroeightfifteen
25.07.2005, 18:06
kann man das Warten nicht unterbrechen, oder nur eine Taste abfragen, und dann mit dem Programm weiter machen? is ja nicht besonders gut wenn dann gleich dass Programm stehen bleibt.

15.09.2005, 17:30
hallo

sorry das ich diesen alten theard nochmal raushole.

Aber ich beschäftige mich erst kurz damit.

Könnte mir jemand helfen und sagen was ich alles brauch um 4 servos per tastatur zu steuern

sep
15.09.2005, 19:37
4 servos, ne tastatur...

ICH_
16.09.2005, 15:23
Und nen MC ;-)
Kabel!
Vielleicht Stecker und noch eine Stromversorgung.
Und natürlich die Servobefehle von Bascom

Zeroeightfifteen
16.09.2005, 16:06
hallo also ich habe einen Atmega 32 eine alte PS2 Tastatur und 16 Servos. Die kann ich alle per tastatur steuern. Mehr brauchst du dazu nicht.