wiimote_handle(var num)
Liefert mit der gegebenen Zahl (1...4) ein Handle des Bluetooth-Eingabegerätes zurück - wie etwa ein WiiMote®, Nunchuk® oder Balance Board. Wird kein Bluetooth-Eingabegerät mit der gegebenen Zahl gefunden, liefert die Funktion 0 zurück. Das Gerät muß vor dem Starten der Applikation angeschaltet und verbunden (s. u.), und Joysticks dürfen nicht mit der Kommandozeilenoption nj abgeschaltet sein.
wiimote_status(var handle, void* wiimote)
Updated den Status des Gerätes - Bewegungs-Sensoren, Ausrichtung, IR-Sensor, analoger Stick und Button-Zustände - in das WIIMOTE-Strukt. Der Status wird als zweites Argument übergeben. Das WIIMOTE-Strukt ist in include\ackwii.h definiert.
var wiimote_smoothfac(var handle, var fac)
Setzt einen Faktor (0..1) zum Glätten der Wiimote-Winkeldaten.
wiimote_led(var handle, var ledmask)
Schaltet die 4 LEDs an oder aus.
wiimote_vibration(var handle, var on)
Schaltet die Vibration an (1) oder aus (0).
wiimote_ir(var handle, var on)
Aktiviert / deaktiviert die Infrarotkamera. Die Kamera ist in der Lage, die Positionen von bis zu 4 Infrarotpunkten zu ermitteln und erlaubt es, die WiiMote als ein Zeigegerät zu benutzen.
wiimote_connected(var handle)
wiimote_nunchuk_connected(var handle)
wiimote_classic_connected(var handle)
wiimote_guitar_connected(var handle)
wiimote_balanceboard_connected(var handle)
wiimote_ir_active(var handle)
wiimote_vibration_active(var handle)
Prüft, ob ein bestimmtes Gerät verbunden und aktiviert ist. Liefert für nicht-aktiv 0 zurück und ungleich Null für aktiv.
var wiimote_battery(var handle)
Liefert die Ladung der Batterie in Prozent zurück (0..100).
Parameter:
handle - Handle zum Indentifizieren der WiiMote.
on - 0 für aus und 1 für an.
fac - 0 für keinen Effekt, 0.999 für kompletten Effekt..
ledmask - Binärwert (0..15) mit 1 Bit für jedes LED. 1 = an, 0 = aus.
Verbinden einer WiiMote mit dem PC
Es können nur Geräte, die vor dem Starten der Anwendung angeschaltet, auf eine bestimmte Zahl (default = 0) gesetzt und mit dem PC verbunden sind, mit den wiimote-Funktionen verwendet werden. Wie man die WiiMote auf eine bestimmte Zahl setzt, ist im WiiMote-Handbuch beschrieben. Hier folgt nun eine Beschreibung, wie man die WiiMote mit dem Bluetooth-Stack des PCs verbindet (dieser Vorgang wird auch ´pairing´ (Paarung) genannt).
Verbinden mit Windows eingebautem Bluetooth-Stack:
- Öffnen Sie das Bluetooth Kontrollpanel.
- Drücken und halten Sie gleichzeitig die Knöpfe [1] and [2] der WiiMote. Die blauen LEDs fangen an zu blinken und bedeuten somit, dass die WiiMote jetzt für ein paar Sekunden im ´entdeckungsbereiten´ Modus ist. Die Anzahl der LEDs gibt den Status der Batterie wieder. Sollten die blauen LEDs während der folgenden Verbindungsprozedur aufhören zu blinken, drücken und halten Sie [1] und [2] nochmal. Es ist wichtig, sie am Blinken zu halten bis die Verbindung hergestellt ist. Ansonsten unterbricht die WiiMote für gewöhnlich nach der Hälfte des Prozederes und obwohl sie im Kontrollpanel erscheint, hat die Paarung nicht geklappt und es funktioniert nicht.
- Fügen Sie im Kontrollpanel ein neues Gerät hinzu. Er wird als 'Nintendo RVL-CNT-01' erkannt. Im Passwort-Panel wählen Sie 'No Password'.
- Ist die Installation beendet, lassen Sie [1] und [2] los. Das Bluetooth-Kontrollpanel müsste nun eine Verbindung anzeigen und die wiimote_handle-Funktion sollte sie nach starten der Applikation erfkennen. Das einzelne blaue LED zeigt die Zahl des Gerätes an (1..4).
- Wenn irgendetwas schief geht, entfernen Sie das Gerät vom Kontrollpanel. Sie müssen es entfernen und wieder neu erkennen ehe Sie wieder eine Verbindung herstellen können.
Verbinden mit dem Toshiba® Bluetooth-Stack:
- Vorwärts, drücken Sie [1] und [2] auf der WiiMote (wenn Sie schnell sind, brauchen Sie die Knöpfe nicht gedrückt zu halten) und klicken Sie auf 'New Connection'.
- Einmal gefunden, können Sie die Paarung jederzeit per Rechtsklick auf das entsprechende Geräte-Icon und gleichzeitiges Drücken von [1] und [2] wie gehabt, vornehmen. Sie können sich auch eine Desktop-Verknüpfung erstellen, die sofort den "Entdecker"-Modus herstellt.
Trennen / Unpaaren, um Energie zu sparen (jeder Stack)
- Halten Sie den Wiimote [Power]-Knopf für ein paar Sekunden gedrückt - die WiiMote trennt sich automatisch und der Paarungsmodus wird für ein paar Sekunden reaktiviert (blinkende LEDs), dann wird abgebrochen und ausgeschaltet.
Bemerkungen:
- Wii, WiiMote, Nunchuk sind eingetragene Warenzeichen von Nintendo®, Inc. Das ackwii-PlugIn wurde von Robert Jäger (firoball) entwickelt.
- Um die wiimote-Funktionen nutzen zu können, muß das PlugIn ackwii.dll geladen und die Datei akwii.h muß includet sein. Die StartUp-Option -nj sorgt dafür, dass die Engine nicht automatisch Bluetooth-Geräte erkennt.
- Das Bluetooh Eingabegerät 1 wird automatisch für den zweiten Joystick benutzt wenn nur ein Joystick verbunden ist und, falls kein Joystick verbunden ist, für den ersten Joystick. Weitere Geräte lassen sich über die wiimote_status-Funktion verwenden.
- Ausrichtungs- und Beschleunigungs-Werte sind nicht sehr präzise und können ein Grund für "Zattern" sein. Dies läßt sich mithilfe der Funktion wiimote_smoothfac kontrollieren.
Version:
C
Beispiel:
// Sample script demonstrating usage of a Bluetooth input device
// The WiiMote must be connected to the PC prior to starting the application
// For connecting a WiiMote, see manual->engine functions->wiimote
#include <acknex.h>
#include <default.c>
#include <ackwii.h>
// assigned to [A] button
void toggleVibration (var handle, WIIMOTE* wiimote)
{
wiimote_vibration(handle, 1 - wiimote.status.vibration);
}
WIIMOTE wiimote;
void main ()
{
// get a handle to the first Wiimote
var wii_handle = wiimote_handle(1);
if (!wii_handle) printf("No WiiMote connected!");
// create a screen entity to be controlled by the WiiMote
you = ent_createlayer("earth.mdl",0,0);
vec_set(your.x,vector(50,0,0));
// assign a function to Wiimote [A] button
wiimote.event.on_a = toggleVibration;
wiimote_smoothfac(wii_handle,0.95);
while (1)
{
// update buffer with data coming from Wiimote
wiimote_status(wii_handle,wiimote);
vec_set(your.pan,wiimote.angle1);
wait(1);
}
}
Siehe auch:
joystick values
► latest
version online