PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : A/D Wandler und Joystick



Alter Knacker
28.03.2005, 20:36
hab gerade bei ebay einen analogen joystick erstanden für 1€.
wird zwar etwas dauern, bis der da ist, aber ich könnte mich ja einstweilen einlesen.

also die paar leds unterschiedlich ansteuern hab ich jetzt am wochenende bis zur vergasung geübt.
mit joystick wirds ja aber nicht output sondern input.

nach welchen stichwörtern soll ich suchen?
sind alle joysticks gleich oder alle verschieden?
brauch ich aus dem teil nur die potis oder auch den rest, der da verbaut ist?
könnte man erstmal das gleiche mit einer alten maus üben?
maus, trackball und joystick sind doch das gleiche prinzip, oder nicht? (kugelmaus)

an welche pins schliesst man die potis an (wenns nur die zwei potis sind)?

thx knacki

Marco78
28.03.2005, 21:00
Mit einer Maus kannst du zumindest nicht den Joystick simulieren.
Eine Maus gibt nicht die aktuelle Position aus, sondern nur die Bewegung und wieviel bewegt wurde.
Für PS/2-Mäuse hat BASCOM auch eine Routine.

Stichwörter für dich zum Suchen: GETADC damit verbunden Config ADC, Start ADC, Stop ADC

Spielen kannst erstmal mit einem Poti. Die Spannung kann nicht direkt auf die ADC-Pins gegeben werden. Sondern das ganze muss als Spannungsteiler geschaltet werden.

Wenn du ein Poti hast (10kOhm oder so. Nur nicht zu klein, weil der Strom sonst das Poti in Rauch aufgehen lässt!)
Dann an den Enden der Widerstandsbahn +5V und Masse und den Schleiferkontakt auf den ADC-Pin.

Analoger Joystick kann aber auch bedeuten, das es nur an oder aus pro Richtung gibt.
Aber das wirst du sehen wenn er da ist, sofern es aus der Auktion nich hervor ging.

RCO
28.03.2005, 21:04
maus, trackball und joystick sind doch das gleiche prinzip, oder nicht? (kugelmaus)

Nein, eigentlich nicht ;-)
Maus und Trackball haben eine Kugel, die die Bewegung an eine Welle weitergibt, die wiederum kleine Zacken besitzt. Über 2 Gabellichtschranken wird dann die Drehrichtung und Geschwindigkeit ermittelt. Das ganze passiert für jede Axe (2) ein mal.
Der Joystik hat meistens einfach 2 Potis drin.


an welche pins schliesst man die potis an (wenns nur die zwei potis sind)?

Was für einen Controll hast du denn? Eigentlich an die ADs!

MFg Moritz

Alter Knacker
28.03.2005, 21:06
danke erstmal, ich wusste, dass das alles erstmal bahnhof bedeuten würde :-)

anstatt der schrittmotoren könnte ich damit ja auch leds links/rechts zum verständnis "bewegen", oder?

nach dem rest werde ich suchen, danke
mfg knacki

Alter Knacker
28.03.2005, 21:19
Spielen kannst erstmal mit einem Poti. Die Spannung kann nicht direkt auf die ADC-Pins gegeben werden. Sondern das ganze muss als Spannungsteiler geschaltet werden.

Wenn du ein Poti hast (10kOhm oder so. Nur nicht zu klein, weil der Strom sonst das Poti in Rauch aufgehen lässt!)
Dann an den Enden der Widerstandsbahn +5V und Masse und den Schleiferkontakt auf den ADC-Pin.


genau da fängt der bahnhof an, bin ja noch newbie ;-)


Analoger Joystick kann aber auch bedeuten, das es nur an oder aus pro Richtung gibt.
Aber das wirst du sehen wenn er da ist, sofern es aus der Auktion nich hervor ging.
wenn das bedeutet:
links/rechts/vorwärts/links/rechts und jeweils ein mischzustand, dann wäre ich glücklich.
lieber ein paar kleine aufgaben am anfang als alles auf einmal, ist ja sowieso schon schwierig genug, elektronik und programmieren zu lernen.

@RCO: ich hab ein mega16 exp. board und einen mega8 für lochraster, kann aber jederzeit was dazukaufen, wenn nötig.

da sind wir schon beim thema:

wie sieht das denn hardwaremässig aus?

klemmt man da ein paar kabel des sticks an die ports oder brauchts da noch andere elektronik dazwischen?
mfg knacki

Marco78
28.03.2005, 21:23
Ja, du könntest gleich das was du schonmal gelernt hast mit einbauen.
Dein Knightriderlicht.
Nach links oder rechts laufen lassen.
Und wenn's am Ende angekommen ist wieder vor vorne.
Und die Geschwindigkeit in Anhänigkeit wie stark der Joystick nach links und rechts gedrückt ist :D

Alter Knacker
28.03.2005, 21:25
Ja, du könntest gleich das was du schonmal gelernt hast mit einbauen.
Dein Knightriderlicht.
Nach links oder rechts laufen lassen.
Und wenn's am Ende angekommen ist wieder vor vorne.
Und die Geschwindigkeit in Anhänigkeit wie stark der Joystick nach links und rechts gedrückt ist :D

fein, so stell ich mir das vor, schritt für schritt =D>
danke, knacki

Alter Knacker
28.03.2005, 21:30
Wenn du ein Poti hast (10kOhm oder so. Nur nicht zu klein, weil der Strom sonst das Poti in Rauch aufgehen lässt!)
Dann an den Enden der Widerstandsbahn +5V und Masse und den Schleiferkontakt auf den ADC-Pin.


aso, da reicht also poti alleine, schön, ich sollte auch schneller verstehen als lesen :-(

ja, ich hätte da so eine alte sammlung kohlenpotis, oder wie die heissen, sehen aus wie von den alten röhrenradios, mit griff dran, haben zwischen 10kOhm und 50kOhm.

tja, jetzt noch wissen, wie man ausliest und das ganze dann weitergibt, und die halbe miete wäre erledigt :-)
mfg knacki

Marco78
28.03.2005, 21:33
Ja, weil du mit dem Poti ein Spannungsteiler gebaut hast dann.

Gib in BASCOM mal GETADC ein und drück dann F1.
Da gibt es dann auch weitere Themen, wie man den ADC einstellt usw.

Alter Knacker
28.03.2005, 21:42
Gib in BASCOM mal GETADC ein und drück dann F1.


super, wusste ich auch noch nicht, dass man da ohne markieren oder suchen sofort in die hilfe kommt.
naja, sieht für den anfang gar nicht so schlecht aus.
(wenn die dinger doch bloss auf deutsch wären ;-) )

channel ist mir noch unklar, aber das versteh ich bis morgen bestimmt besser - ansonsten tut sich bei getadc ja nicht viel.
mfg knacki

Marco78
28.03.2005, 21:51
Channel ist der Kanal. ADC0, ADC1 usw. Im Datenblatt steht, welche an welchem Pin ist.

Nach Config kannst du die Werte dann mit A = GETADC(1) (oder GETADC(0), GETADC(2) ) auslesen.
Vorrausgesetzt, A ist mit DIM auf Word eingestellt.


$regfile = "m16def.dat" 'Mega16
$crystal = 12000000 '12 MHz
Config Adc = Single , Prescaler = Auto , Reference = Internal 'ADC einstellen
Start Adc

DIM A As Byte
DIM I as Byte

Config Portb = Output

Do
A = GETADC(0) 'Den Pin beachten!
Portb = $ff
for i = 1 to a
Waitms 1
next i
Portb = $00
for i = 1 to a
waitms 1
next i
Loop

Musst mal ausprobieren. Ich bin mir nicht sicher, ob man in FOR ... NEXT auch Variablen einsetzen kann.

Alter Knacker
28.03.2005, 21:52
ok, kurz mal ins datenblatt gesehen:
PA0 -PA7 (pin33 bis 40) sind also adc ports?
und pro poti brauch ich nur einen pin?
und den wert der variable frage ich ab und damit rechne ich weiter?

oder stellt sich klein knacki das jetzt zu einfach vor?
mfg knacki

Alter Knacker
28.03.2005, 21:55
hat sich überschnitten, danke marco!

Marco78
28.03.2005, 21:59
Wenn du auch ein M16 hast, stimmen die Ports.

Alternativ, damit der Erfolg nicht auf morgen verschoben werden muss, eine andere Variante des Programms. Falls die erste nicht geht

$regfile = "m16def.dat" 'Mega16
$crystal = 12000000 '12 MHz
Config Adc = Single , Prescaler = Auto , Reference = Internal 'ADC einstellen
Start Adc

DIM A As Byte
DIM I as Byte

Config Portb = Output

Do
A = GETADC(0) 'Den Pin beachten! für Mega16 wäre das Pin 40
Portb = $ff
do
decr a
Waitms 1
loop until a=0
Portb = $00

a=getadc(0) 'hier den Wert nochmal einholen, der alte A Wert ist ja schon auf 0
do
decr a
waitms 1
loop until a = 0
Loop



Waitms evtl auf ein paar ms mehr setzen.

Und dann am Poti drehen und schauen was passiert.

Alter Knacker
28.03.2005, 22:04
Vorrausgesetzt, A ist mit DIM auf Word eingestellt.
...
...
...
DIM A As Byte
...
...


der rest ist mir theoretisch jetzt klar!



Alternativ, damit der Erfolg nicht auf morgen verschoben werden muss, eine andere Variante des Programms.

heute rühr ich den lötkolben nicht mehr an, so stressig ist das nicht.
der vorteil an foren ist ja, dass man/viele nachlesen können ;-)

mein mega16 läuft übrigens noch auf 1Mhz, wird aber egal sein, schätze ich.

und ok, danke: pin 40 ist also 0 und pin33 7, gut.
mfg knacki

Marco78
28.03.2005, 22:07
Sorry, Word sollte es sein und nicht Byte. Also A als Word DIMmen. Gut das du aufgepasst hast!

Ja, 1MHz ändert nichts, außer das du ober bei Crystal was anderes eintragen musst.

Alter Knacker
29.03.2005, 02:25
und ok, danke: pin 40 ist also 0 und pin33 7, gut.
mfg knacki
nicht 7, sondern 8, logisch!
verbessert mich, wenn ich falsch liege!
mfg knacki