Zeige Quelltext
Übersetzungen dieser Seite:

Wii Nunchuk

Was hat denn ein Spiele Controller mit RC Modellbau zu tun.
Naja, der Nunchuk ist sehr interessant, weil er viele Steuerelemente intergriert und sehr gut verfügbar ist. Evt. haben Sie ja sogar noch einen Nunchuk rum liegen. Oder aber Sie besorgen sich einen neuen aus dem Internet. Angebote ab 3€ für einen Nachbau oder 10€ für ein Original sind möglich.

Was kann der Nunchuk ?

Der Nunchuk ist ein universelles Tool. Er enthält neben dem Joystick und den Knöpfen noch einen Beschleunigungssensor (Acc) für alle 3 Achsen. Der Nunchuk wird über ein einfaches I²C Protokoll angesprochen. Mit Hilfe eines Befehles können wir alle Daten aus dem Nunchuk lesen. Die Daten kommen dabei als Paket von 6 Bytes in folgendem Format:

Byte 1: Joystick - X
Byte 2: Joystick - Y
Byte 3: ACC X (9..2)
Byte 4: ACC Y (9..2)
Byte 5: ACC Z (9..2)
Byte 6: ist aufgeteilt in Bits
Bit 0: Z-Taste
Bit 1: C-Taste
Bit 2,3: fehlenden Bits 0,1 vom ACC X
Bit 4,5: fehlenden Bits 0,1 vom ACC Y
Bit 6,7: fehlenden Bits 0,1 vom ACC Z

Wie schliess ich den Nunchuk an?

Im Netz gibt es Adapterplatinen für den Nunchuk. Da dieser aber mittlerweile so günstig geworden ist, lohnt aich das kaum. Ich hab bei meinem einfach das Kabel am Stecker abgeschnitten und an die Kabel kleine Stife gelötet. Ein Stück Kabel hängt am Stecker noch dran, damit ich nochmal messen kann, welche Kabelfarben zu welchen Anschlüssen führen. Denn die Farben sind bei den verschiedenen Nunchuk Varianten leider nicht gleich. Da hilft nur selber messen. Die Anschlüsse sehen aber so aus:

Gnd verbindet man mit dem Gnd Anschluss vom Arduino.
VCC verbindet man mit dem 3V3 Anschluss.
SDA (Daten) verbindet man mit dem Analogpin 4.
SCL (Takt) verbindet man mit dem Analogpin 5.

Hat man diese Verbindungen hergestellt, kann man auch schon den ersten Test machen. Ich verwende eine Nunchuk Bibliothek vom Christoph Kielhorn (http://graphixfront.com) Hier mal mein Beispiel. Damit kann man 2 Servos steuern.

NunChuck2.ino
//#define debug
 
#include <debug.h>
#include <makros.h>
 
#include <Servo.h>
#include <Wire.h>
#include "WiiNunchuck.h"
 
/*
  This is a basic demo of using the WiiNunchuck library.
 Written by Grant Emsley - http://arduino.emsley.ca
 */
 
Servo servo1;
Servo servo2;
 
void setup()
{
#ifdef debug
  Serial.begin(57600);
  while(!Serial) ;
  Serial.print("WiiNunchuck Demo ready\n");
#endif
 
  // This initializes the nunchuck. If it can't initialize, or doesn't see the nunchuck, it waits forever.
  // It takes one option, a 1 for power, or 0 for no power. If power is turned on, it will output + on analog 3, - on analog 2.
  // I recommend using 0 and powering it through the 3.3v power connector if possible.  Use this only if you are using the little nunchuck adapter.
  Nunchuck.init(0);
  servo1.attach(5);
  servo1.write(90);
  servo2.attach(6);
  servo2.write(90);
}
 
void loop()
{
  Nunchuck.getData();
  // Prints data for all the sensors in a table format
  Nunchuck.printData();
 
  if (!(Nunchuck.zbutton() == 0)) {
    int joyx = Nunchuck.joyx();
    joyx = map(joyx, 0, 255, 0, 180);
    servo1.write(joyx);
 
    int joyy = Nunchuck.joyy();
    joyy = map(joyy, 0, 255, 0, 180);
    servo2.write(joyy);
  }
  else if (!(Nunchuck.cbutton() == 0)) {
    int joyx = Nunchuck.accelx();
    joyx = map(joyx, 300, 700, 0, 180);
    servo1.write(joyx);
 
    int joyy = Nunchuck.accely();
    joyy = map(joyy, 300, 700, 0, 180);
    servo2.write(joyy);
  } 
  else {
    servo1.write(90);
    servo2.write(90);
  }
//  delay(10);
}

Das ganze als ZIP gibt's hier: NunChuk2.zip

Was kann man damit machen?

Es gibt jetzt verschiedene Möglichkeiten.
Beispiele:

  • einen kleinen Roboter steuern. Der Joystick bewegt den Roboter die Lage/Beschleunigung (was fast identisch ist) steuern z.B. den Kopf. Knöpfe lösen irgendwas aus.
  • Wenn man sich nicht scheut, den Nunchuk komplett auseinander zu nehmen, kann man auch nur die Platine weiterverwenden. Z.B. zur Lageregelung eines Segelschiffes, oder zur Steuerung eine Copters. (Ja, das soll sogar funktionieren.)
  • Für die ganz mutigen könnte man sich mit 2 Arduinos, 2 Funkmodulen auch eine eigene Fernsteuerung bauen.

Warning: count(): Parameter must be an array or an object that implements Countable in D:\IN-Server\HTTP\ArduinoWiki\lib\plugins\discussion\action.php on line 425
Melden Sie sich an, um einen Kommentar zu erstellen.
arduino/modellbau/projekte/wiinunchuk.txt · Zuletzt geändert: 2018/11/04 11:51 (Externe Bearbeitung)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0