Forum: Mikrocontroller und Digitale Elektronik Wii Motion Plus per I2C auslesen (Atmega128)


von Christopher G. (cbg)


Angehängte Dateien:

Lesenswert?

Hallo!
Ich möchte das Wii Motion Plus mit einem Atmega128 auslesen aber leider 
funktionniert schon die Initialisierung nicht. Nach [1] hat das WMP 
anfangs die Adresse 0x53. Man muss 0x04 ins Register 0xfe schreiben, 
damit es aktiviert wird und danach ändert sich die Adresse auf 0x52. 
Danach kann man nach einem bestimmten Ablauf die Daten auslesen. Leider 
bekomme ich schon beim Startbefehl fürs Schreiben nach 0x53 kein ACK 
zurück (per Oszi  überprüft). Habs mit 100 kHz und 400 kHz probiert, 
geht beides nicht. Code ist im Anhang. Als I2C Lib wird die von Peter 
Fleury verwendet, UART Lib ist selbst geschrieben. Liegt aber nicht an 
denen, denn wenn ich auf meinen I2C Kompass umstecke kann ich den mit 
der benötigten Routine problemlos auslesen. WMP ist auch richtig 
verkabelt, schon 10x durchgepiepst. Funktionnieren tuts auch noch, mit 
Wii getestet.
Leider finde ich ausser [1] keine wirklich brauchbaren Informationen um 
das WMP auszulesen. Bei [2] steht auch eine Menge aber da gehts primär 
darum, wie man die Extensions ausliest, wenn sie an die Wiimote 
angesteckt sind. Apropos, was hat die Schreibweise 0x(4)a600f0 bei [2] 
zu bedeuten ("The extension is initialised by writing 0x55 to 
0x(4)a600f0.")? Geht mir hierbei um das (4). Kapier nicht, was das 
bedeuten soll.

Hoffe ihr könnt mir helfen.

LG


[1] 
http://randomhacksofboredom.blogspot.com/2009/06/wii-motion-plus-arduino-love.html
[2] 
http://www.wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus

von Christopher G. (cbg)


Lesenswert?

Grrr
0x53 ist die Adresse (Initialisiert dann 0x52) aber natürlich ohne das 
R/W Bit. Also so gehts:
1
// Zum Initialisieren
2
i2c_start_wait(0xA6 + I2C_WRITE); // 0xA6 = 0x53 << 1
3
...
4
5
// Nach Initialisierung
6
i2c_start_wait(0xA4 + I2C_WRITE); // bzw + I2C_READ; 0xA4 = 0x52 << 1

Frohe Weihnachten!

von Veit D. (devil-elec)


Lesenswert?

Hallo,

nur mal so gefragt. Wofür liest Du den Wii Plus Controller aus?
Was willst Du später mit dem Controller steuern?

Frohes Fest

Tschau
Devil-Elec

von Christopher G. (cbg)


Lesenswert?

Ist derzeit nur eine Spielerei. Wie ich gelesen hab, dass das ganze Wii 
Zubehör einfach per I2C kommuniziert wollt ich das einfach mal testen.
Wird schon irgendwann irgendwo verwendet werden :)
Wenn mir gleich aufgefallen wäre, dass 0x53 eine irrsinnige I2C Adresse 
für die PF Lib Funktionen ist, da ungerade und demnach nicht um 1 
geshiftet, dann wäre das Demoprogramm in lediglich 30 Min erfolgreich 
getestet gewesen.

Das Nunchuck [1] würde ist übrigens auch nicht schlecht.
1x Joystick
2x Button
1x Accelerometer
Gibt diverse günstige Nachbauten im Netz. Wiimote Extension 
Verlängerungskabel gibts auch auf eBay, da hat man dann beide Seiten vom 
komischen Stecker die man auf eine Pfostenbuchse löten kann (so hab ichs 
gemacht), sonst kann man mit einem PCB oder, mit etwas Geschick, mit
Heißklebepistole und Stiftleisten einen Adapter bauen.
Wers kabellos will / braucht und ein paar Buttons und Funktionen mehr 
will kann gleich zur Wiimote greifen und die per Bluetooth auslesen. Hab 
ich auch schon gemacht, geht ganz einfach.


[1] 
http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Hardware_.28Nunchuk.29

von M. G. (looking)


Lesenswert?

Christopher G. schrieb:

> Wers kabellos will / braucht und ein paar Buttons und Funktionen mehr
> will kann gleich zur Wiimote greifen und die per Bluetooth auslesen. Hab
> ich auch schon gemacht, geht ganz einfach.

Ausgelesen über Bluetooth per PC oder per BT-Modul an einem 
Mikrocontroller? Hast Du nähere Infos dazu?
Danke.

von Christopher G. (cbg)


Lesenswert?

Habs damals am PC ausgelesen. Hab mich damals nur ein bisschen gespielt 
und geschaut was sich ändert wenn ich die Tasten drücke / die Lage 
ändere und hab die LEDs und den Vibromotor an und ausgemacht.
Hab mit den Infos von Wiibrew.org [1] gearbeitet. Mehr Infos kann ich 
leider nicht anbieten.

[1] http://wiibrew.org/wiki/Wiimote

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.