amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Robotersteuerung [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2006-04-11, 16:08 h

Tante_Michael
Posts: 5
User
Hallo Amiga-Forum!

Ich bin durch Zufall über Google.de auf Ihr Forum aufmerksam geworden. Ich beschäftige mich zur Zeit mit der Frage ob es möglich ist, eine Robotersteuerung auf Basis eines Amiga-Computers, z.B. eines Amiga 600, zu realisieren.

Dabei ist mir folgendes Thema aufgefallen Klick!, welches aber leider nicht wirklich erschöpfend für mich ist.

Da mein Lösungsansatz identisch ist, habe ich versucht mit dem Thredersteller in Kontakt zu kommen. Leider gibt es aber diese Email-Adresse nicht mehr. Deswegen muß ich nun von neuem Fragen und hoffe, mindestens so wertvolle Hilfestellungen zu bekommen.

Folgendes Problem möchte ich lösen:

1. Einzelnes Ansprechen der Ports 1-8 am Parallel-Port eines Amiga
2. Einzelnes Auslesen der Joystick-Ports 1 und 2
3. Alles muß in Baisc realisiert werden können. Andere Sprachen behersche ich leider nicht.

Herzlichen Dank für Ihre Hilfe!

[ - Answer - Quote - Direct link - ]

2006-04-11, 16:12 h

bubblebobble
Posts: 707
User
Das würde mit Amiblitz2 gehen.
Die Registeradressen, wo man den Joystick und den Paralell port ausliesst musst du irgendwo herbekommen und kannst dann mit Peek & Poke arbeiten.
Entwickeln und testen könnte man das auch erstmal unter WinUAE am PC (emuliert ja auch parallel port und Joystick), und dann das program auf dem A600 verwenden.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Answer - Quote - Direct link - ]

2006-04-11, 16:16 h

Tante_Michael
Posts: 5
User
@bubblebobble:

Hallo bubblebobble,

das mit den PEEKs und POKEs wußte ich noch aus meiner Amiga-Zeit. Leider komme ich ohne die geneuen Adressen nicht weiter. Zum Teil stehen die ja in dem von mir zitierten Link, aber auf der anderen Seite werde ich aus dem Geschreibsel nicht ganz schlau. Vier Antworten, vier unterschiedliche Angaben.

Was ist bitte Ambilitz2? Ist das eine Software, mit der ich an die PEEKs und POKEs rankomme?

Interessant wäre für mich etwas wie: Zum Auslesen von Joyport 1 nimmst Du PEEK 4711,1 bis 4711,5, damit Du die fünf Richtungen hast. Zum Steuern von Port 1 nimmst Du POKE 2233,1, damit Port 1 Spannung führt. Sowas in der Art suche ich.

Abgesehen davon: Einen PC habe ich nicht. Allenfalls einen Mac. :D
Für WinUAE bin ich aber zu doof, weil ich weder die Kickroms noch eine WS Version als Image besitze. X(

[ Dieser Beitrag wurde von Tante_Michael am 11.04.2006 um 16:17 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2006-04-11, 16:29 h

bubblebobble
Posts: 707
User
Amiblitz ist ein Basic Dialekt.
Damit kannst du dir eine Executable compilieren, die dann auf dem A600 läuft, so in der art:

If Peek.w (<adresse vom Joystick>) = <irgendwas>
NPrint "Knopf ist gedrückt"
Else
Nprint "nix gedrückt"
EndIf

End

So ähnlich wie du das beschreibst kann man das machen, nur die Adressen musst du wohl selbst herausfinden. Evlt. im Netz oder es gibt gute Bücher dazu, z.B. von Markt und Technik "Amiga Intern"
oder wie das hiess. Der Joystick port wird einfach abzufregen, beim Parallel wirds aber etwas kompilizerter, aber auch machbar.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Answer - Quote - Direct link - ]

2006-04-11, 16:31 h

Tante_Michael
Posts: 5
User
Hi!

Und es bewegt sich niemand hier in diesem Forum, der diese Frage sonst beantworten kann? Eigentlich fand ich AmigaBasic immer ganz brauchbar. Gibt es keinen Weg die Joystick-Ports damit abzufragen?


[ - Answer - Quote - Direct link - ]

2006-04-11, 17:02 h

bubblebobble
Posts: 707
User
Uuui! AmigaBasic. Wenn du nicht willst, dass der Roboter einschläft wenn er sich bewegen soll, nutze das lieber nicht.
Amiblitz ist sehr viel besser (sehr viel!), und ist auch nicht limitert wie AmigaBasic. Mit Amiblitz kannst du alles machen, was sich programmieren lässt, und das etwa so schnell wie in C,
wenn es sein muss kannst du auch einfach in Assembler weiter schreiben und dann wieder Basic Code benutzen.
AmigaBasic ist schecken-lahm, buggy und kann viele Dinge nicht, ok, poken wird gerade noch gehen, aber wenn du einen Interrupt brauchst oder was etwas Anspruchsvolleres ist es aus bei AmigaBasic. Es wird auch viel zu langsam sein, um mit dem Takt vom Parallelprot nur annhährungsweise mitzuhalten.
Ich kann nur sagen, Finger weg von AmigaBasic!



--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von bubblebobble am 11.04.2006 um 17:05 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2006-04-11, 17:03 h

bubblebobble
Posts: 707
User
Achso, ja hier dürfte es eingie Leute geben, die sich damit gut auskennen.
Ich gehöre aber nicht dazu, und müsste selbst erst nachschlagen. Ansonsten - Onkel Google hilft dir sicher weiter.


--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Answer - Quote - Direct link - ]

2006-04-11, 17:04 h

Elevoltek
Posts: 912
User
Du mußt den Leuten schon etwas Zeit geben, soviele User wie z.B.
im Heise-Forum tummeln sich ja in Amigaforen nicht gerade ;-)

Viele Grüße, Frank.

[ - Answer - Quote - Direct link - ]

2006-04-11, 17:08 h

Tante_Michael
Posts: 5
User
Hallo!

Geschwindigkeit ist relativ. Immerhin möchte ich keinen Industrieroboter steuern oder künstliche Intelligenz nachahmen.

Das hier ist das zu steuernde Objekt (sinngemäß): Klick!

Da der sich nur mit 3-4 Metern pro Minute bewegt, reicht AmigaBasic schon aus.

Der kann, nur falls es jemanden interessiert, den rechten Arm und die rechte Hand bewegen, den Kopfe drehen und natürlich vor und zurück fahren. Die Rückmeldung soll über "Kontaktstellen" erfolgen.

Gedacht ist das halt nur zu meiner Freude und als Partyspaß.

Ich bin mir also rechts sicher, das es mit AB und ?nem einfachen 600er gehen sollte.

@Bubble: Onkel Google hat leider nichts zu diesem Thema!
@Frank: Dafür ist der Umgangston hier auch besser als bei Heise.

[ - Answer - Quote - Direct link - ]

2006-04-11, 17:48 h

Ralf27
Posts: 2779
User
@Tante_Michael:

Ich hab früher mal mit AmigaBasic einen Roboter angesteuert und bewegt. Bzw. auch Lichtorgel und viele andere Spielereien. Ich müßte dazu allerdings bei mir im Archiv nachsehn, da es schon etwas länger her ist.

Mit AmigaBasic ist das ohne weiteres möglich, aber der gleiche Code läuft auch mit MaxonBasic, dessen Demo man aus dem Aminet runterladen kann. Die einzige (für dieses Projekt) Beschränkung ist in den maximal 255 Zeilen pro Projekt. MaxonBasic ist aber wesentlich schneller als AmigaBasic, da es ein Compiler ist.

Wenn du schon Erfahrungen mit AmigaBasic hast, dann benutze es einfach weiter oder benutz MaxonBasic. AmiBlitz ist da schon viel weiter entwickelt, allerdings besitzt es auch einen anderen Syntax, bzw. ist halt anderst als das "normale" Basic.
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 11.04.2006 um 17:50 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2006-04-11, 18:50 h

MaikG
Posts: 5172
User
POKEB &hBFE301,255
POKEB &hBFE101,16

Der erste befehl schaltet den Parallelanschluss auf Ausgang.
Der 2. setzt die Pins, je nach wert 1-8, also bei 255 sind alle HIGH.

[ - Answer - Quote - Direct link - ]

2006-04-11, 19:01 h

bubblebobble
Posts: 707
User
Aminlitzgibt es umsonst im Netz, und erzeugt schnelle und kompakte
executables, und ist nicht so unendlich träge wie AmigaBasic. Aber wie du willst, sage nur nicht ich hätte dich nicht gewarnt. ;-)

Der Amigblitz code zum dem obigen wäre:
Poke.b $BFE301,255
Poke.b $BFE101,16

oder 68K ASM:
move.b #255,$BFE301
move.b #16,$BFE101

Den Wert für den Pin berechnest du so:
für jeden Pin aufaddieren 2^(pinnummer)

Fehlt nur noch der Joystickport, aber dürfte ähnlich sein ...
--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Answer - Quote - Direct link - ]

2006-04-11, 19:36 h

Tante_Michael
Posts: 5
User
Hallo Forum,

erst einmal herzlichen Dank für die vielen Infos. Das was ich habe wird, zusammen mit den Infos aus dem ersten Thread, für die geplante Steuerung reichen.

Was mir noch fehlt, ist eine Info, wie ich die Joystickports (in AmigaBasic) abfragen kann. Tut mir bitte den Gefallen, hier die Werte möglichst nicht hexadezimal anzugeben.

Danke!

[ - Answer - Quote - Direct link - ]

2006-04-11, 21:05 h

Ralf27
Posts: 2779
User
Zitat:
Original von Tante_Michael:
Was mir noch fehlt, ist eine Info, wie ich die Joystickports (in AmigaBasic) abfragen kann. Tut mir bitte den Gefallen, hier die Werte möglichst nicht hexadezimal anzugeben.


Wenn du es ganz einfach in AmigaBasic machen möchtest, dafür gibt es extra einen Befehl:

v=Stick(n)

n: 0=X-Joystick A, 1=Y-Joystick A, 2=X-Joystick B, 3=Y-Joystick B

v: 1= oben oder rechts, 0=nix, -1= unten oder links

v=strig(n)

n: 0: v=1 wenn Stick A seit letzer Abfrage gdrückt wurde
1: v=1 wenn Stick A gerade gedrückt wird
2: v=1 wenn Stick B seit letzer Abfrage gedrückt wurde
3: v=1 wenn Stick B gerade gedrückt wird

--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 11.04.2006 um 21:09 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2006-04-11, 21:14 h

Ralf27
Posts: 2779
User
Bin gerade von der Arbeit gekommen, wenn dir die Infos reichen, dann brauch ich ja nicht extra bei mir im Archiv nach den alten Programmen nachzusehn. Im allgemeinen dürfte dir ja hier alles dazu reichen.

Jetzt hast du ja 8 digitale Ausgänge und 4(6) digitale(4 Wechselkontake, 2 "normale" Kontakte") Eingänge.
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2006-04-11, 22:49 h

ylf
Posts: 4112
User
Ich weiß nicht, warum ihr unbedingt den Parallelport nur in eine Richtung benutzen wollt.

Vor etlichen Jahren habe ich mal eine Art Bussystem für den Parallelport erdacht, welches Schreiben, Lesen und Adressieren kann. Ist ein wenig dem EPP vom PC nachempfunden. Konkret war dies soweit gediehen, daß man bis zu 16 Baugruppen ansprechen kann und auf jeder Baugruppe nochmals bis zu 16 Register. Real existieren ein Prototyp des Interface für den Amiga-Parallelport und eine Ansteuerung für ein LCD-Display.

Der Trick an der Sache liegt darin begründet, daß der P-Port mehr Signale als die acht Datenleitungen hat, die man ebenfalls steuern kann. Man kann so also problemlos Read/Write usw. erzeugen.

Mehr dazu bei Bedarf morgen.

bye, ylf

[ - Answer - Quote - Direct link - ]

2006-04-11, 23:05 h

Ralf27
Posts: 2779
User
Zitat:
Original von ylf:
Ich weiß nicht, warum ihr unbedingt den Parallelport nur in eine Richtung benutzen wollt.

Ist vermutlich ein Hobbyprojekt das möglichst einfach gehalten werden soll. Und dafür ist es ja so mehr als ausreichend.
Zitat:
Mehr dazu bei Bedarf morgen.
Mich würde das schon interesieren, bin also schon ganz gespannt drauf. :D
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2006-04-11, 23:41 h

MaikG
Posts: 5172
User
>v=Stick(n)
>v=strig(n)

Eine davon war bei MBasic buggy.
Amiga-Basic läuft nicht mit Fastram oder mit >16 Farben WB.

[ - Answer - Quote - Direct link - ]

2006-04-12, 08:51 h

Ralf27
Posts: 2779
User
Zitat:
Original von MaikG:
Amiga-Basic läuft nicht mit Fastram oder mit >16 Farben WB.


AmigaBasic hatte schon wirklich einige Eigenarten. :)

Bei AmigaBasic mußte man neben dem Fastram auch einen Bug beim BEEP ausbessern, damit es richtig lief (jedenfalls bei mir auf dem A1200). Ich hab das damals umgangen, entwender mit Patch oder bei den Prefs. Wie genau, das ist mir leider auch nicht mehr klar. Zu lange ist das schon her. :D

Aber das mit mehr als 16 Farben ist mir neu. Ich glaub das hab ich noch nie getestet. :lach:
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2006-04-12, 22:39 h

ylf
Posts: 4112
User
Zitat:
Original von Ralf27:
Zitat:
Original von ylf:
Ich weiß nicht, warum ihr unbedingt den Parallelport nur in eine Richtung benutzen wollt.

Ist vermutlich ein Hobbyprojekt das möglichst einfach gehalten werden soll. Und dafür ist es ja so mehr als ausreichend.

Meine Lösung war auch ein Hobby-Projekt.
Wenn es nur darum geht 8Bit parallel zu lesen oder schreiben, dann geht es noch einfacher. Wie schon gesagt, hat der PP noch ein paar andere Steuerleitungen, die genauso wie die Datenleitungen angesprochen werden können. Wenn man diese dazu benutzt weitere Bustreiber oder Transceiver zu steuern, dann muß man die Bits nicht einzeln von den Joy-Ports zusammen sammeln und es ergeben sich noch viel mehr Möglichkeiten bei sehr geringen Aufwand, als dies durch Zuhilfenahme der Joy-Ports möglich wäre.


by, ylf


[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Robotersteuerung [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.