Hi
ich würde die Werte für die Servos nicht direkt ausgeben, sondern über ein Schleife und nach jedem Befehl eine Pause einlegen.
mfg Charly
Das ist mein Erster Roboter : SR1 V5.1 (Servomotor Roboter 1 Version 5.1)
NEU jetzt mit Videos:
http://www.youtube.com/user/YellowSR1
Hier ein Auszug aus einem "ALTEN" Programm:
10 '
20 KEY OFF
30 CLS
40 '
50 OPEN "COM1:9600,N,8,1,CS,DS" AS #1 'Aufsetzen RS-232
100 ' Grundstellung
101 'Achse 0
105 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(0);CHR$(5);
106 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(0);CHR$(15);
107 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(0);CHR$(72);
108 'Achse 1
115 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(1);CHR$(31);
116 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(1);CHR$(15);
117 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(1);CHR$(70);
118 'Achse 2
125 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(2);CHR$(31);
126 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(2);CHR$(15);
127 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(2);CHR$(110);
128 'Achse 3
135 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(3);CHR$(31);
136 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(3);CHR$(15);
137 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(3);CHR$(10
;
138 'Achse 4
145 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(4);CHR$(31);
146 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(4);CHR$(15);
147 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(4);CHR$(65);
148 'Achse 5
155 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(5);CHR$(31);
156 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(5);CHR$(15);
157 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(5);CHR$(85);
199 IN$ = INKEY$:IF IN$ = "" THEN 199 'Abfrage Tastatur
200 ' Vorposition Greifer offen Bauteil 1
201 'Achse 0
205 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(0);CHR$(5);
206 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(0);CHR$(15);
207 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(0);CHR$(57);
211 'Achse 1
215 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(1);CHR$(31);
216 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(1);CHR$(15);
217 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(1);CHR$(79);
221 'Achse 2
225 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(2);CHR$(31);
226 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(2);CHR$(15);
227 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(2);CHR$(10);
231 'Achse 3
235 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(3);CHR$(31);
236 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(3);CHR$(15);
237 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(3);CHR$(90);
238 'Achse 4
245 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(4);CHR$(31);
246 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(4);CHR$(15);
247 PRINT #1,CHR$(12;CHR$(1);CHR$(2);CHR$(4);CHR$(65);
299 IN$ = INKEY$:IF IN$ = "" THEN 299 'Abfrage Tastatur
Hi
ich würde die Werte für die Servos nicht direkt ausgeben, sondern über ein Schleife und nach jedem Befehl eine Pause einlegen.
mfg Charly
Wait? wo im Programm ist ein Wait Befehl? Was für einen Wait
Befehl? Was ist das für ein Basic mit Zeilen NR.?
Einfügen, wenn vor dem SchreibenCode:bitte in code xyz
auf Vorschau geschaltet wird kann man das sehen.
Gruß Richard
Hallo,
danke für eure Antworten!
@charly2006: wie mache ich das? ich hatte mir das selber alles angeeignet quasi von über all nen schnipsel genommen und es hatte funktioniert !
hättest du nen programmauszug damit ich weiss womit ich es "zu tun" habe?
@richard: es gibt den wait befehl nicht im programm da ich es leider nicht geschafft habe ihn zu integrieren, deshalb diese zeile mit ->
@alle: ich verwende den servo microcontroller von Robotikhardware + gw basic ![/code]Code:199 IN$ = INKEY$:IF IN$ = "" THEN 199 'Abfrage Tastatur
ich bin auch im besitz eines Bascom AVR-Basic Entwicklungsumgebung und Compiler war mir damals etwas umständlich und fand das gw basic einfacher und bin dabei geblieben... war das eventuell ein fehler?
und lassen sich die Servos auch damit steuern?
auch in verschiedenen geschwindigkeiten und voreingestellten winkeln?
vielen dank
Ich kenne jetzt nicht den Befehlssatz von GW-Basic.
Als wait Ersatz könnte ich mir einen Timer IRQ vorstellen.
Mit Servos habe ich noch nichts gemacht, würde
das wenn selbst gestrickt, aber über PWM versuchen. Alle 20 ms
ein 3 (?) ms Takt mit entsprechenden Puls/Pausen Verhältnis.
Der Winkel wird ja durch das Puls/Pausenverhältnis eingestellt.
Sollte zumindest Theoretisch klappen?
Gruß Richard
Also, wenn ich dich richtig verstanden habe benutzt du eine Servo Platien von RN um die Servos anzusteuern.
Deine Routine :299 IN$ = INKEY$:IF IN$ = "" THEN 299 'Abfrage Tastatur
ist im Prinzip eine Wait anweisung. Hier wird solange gewartet bis du eine Taste drückst.
Ich meine du mußt zwischen jedem
105 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(0);CHR$(5) '<- kein Semikolon, das sonst kein Zeilenende gesendt wird.
eine Warteschleife legen.
z.B.
106 for i = 1 to 1000
107 next i
oder
10 '
20 KEY OFF
30 CLS
40 '
50 OPEN "COM1:9600,N,8,1,CS,DS" AS #1 'Aufsetzen RS-232
100 ' Grundstellung
101 'Achse 0
105 PRINT #1,CHR$(12;CHR$(1);CHR$(0);CHR$(0);CHR$(5)
106 Gosub 10000
107 PRINT #1,CHR$(12;CHR$(1);CHR$(1);CHR$(0);CHR$(15)
10000 for i = 1 to 1000
10001 next i
10002 return
Auserdem mußt das Semikolon am Ende des Printbefehls weglassen. !!!
Pobier das mal aus. der Wert der For-Next Schleif habe ich willkürlich gewählt, hier muß man noch mal ein bisschen Experimatieren
mfg Charly![]()
Moin Moin
Wie mein Vorposter schon sagt, du musst das über eine schleife lösen.
Ich hab selber vor 8 oder 9 Jahren das letzte mal was mit GW-Basic gemacht (war meine erste Programmiersprache, hatte extra nen Rechner mit DOS damals).
Allerdings hab ich immernoch die Bücher im Regal. (z.B. GW-Basic Taschenführer von DataBecker)
Mit dem weit Befehl wirst du nicht weit kommen, weil der nicht im Sinne von Wait <Zeit> gedacht ist.
Ordentlich heißt der in GW Basic WAIT <Port>,<Maske1>,<Maske2>.
Mit Port ist dabei ein Register gemeint, z.b. 0x378 für das Datenregister vom Parallelport.
Die Register kann man mit INP lesen und mit OUT schreiben.
Wait ließt das Register solange bis Wert XOR Maske1 AND Maske2 ungleich 0 wird.
(Das steht im Buch und deckt sich mit meinem Wissenstand.)
Also einfach mal mit einer forschleife spiele oder in einer While-schleife
die immer wieder die Systemzeit abfragen und ne Differenz bilden, wenn du x Sekunden warten willst.
Was aber für eine Übertragungspause etwas lang ist.
Abschließend würde ich dir noch empfehlen längerfristig auf eine andre Sprache umzusteigen, GW-Basic ist fast genauso alt wie ich und es wird der Tag kommen, an dem der Compiler nicht mehr einfach so unter dem neusten Windows läuft.
Viele Grüße
Sebastian
DANKE an euch!!!
Leider hat es nicht funktioniert...egal was ich probiert habe !
@Sebastian: kannst du eventuell ein Beispiel anhand meiner Programme schreiben? Dann kann ich mir vorstellen, wie du das meinst. Im Moment sitze ich davor, wie ein Frosch an einem zugefrorenem Fluss
Hallo kannst du noch mal deinen Quellcode posten, damit ich mir das Ansehen kann.
mfg Charly
Lesezeichen