Nunchuk-Servo-Kontrolle

Hallo,
Ich will 2 Servos mit einem Nunchuk ansteuern. Da dies mein erstes Projekt mit einem Nuchuk ist wäre es nett wenn mir jemand ein funktionierendes Beispielprogramm (wenn möglich mit Erklärung der Elementaren Befehle) zeigen könnte, da alle Beispielprogramme die ich bis jetzt gefunden habe nicht funktioniert haben.

Danke im Vorraus
LG

da alle Beispielprogramme die ich bis jetzt gefunden habe nicht funktioniert haben

... wird ein weiteres wohl auch nicht funktionieren.

Ich fürchte, da musst du mehr bringen. "nicht funktionieren" ist ein zu weites Feld.
Soviel ich weiss, geht die Kommunikation mit deinem Nintendo über I2C Adresse 0x52.

Wie weit kommst du da ?

Wie schon gesagt bin ich neu auf diesem Gebiet daher weiß ich nicht woran es liegt aber ich habe schon einige Fehler bei diesem simplen Beispiel:
In file included from nunchukled.ino:9:
C:\Users\TF-Kunde\Documents\Arduino\libraries\WiiChuck/WiiChuck.h:36: error: 'byte' has not been declared
C:\Users\TF-Kunde\Documents\Arduino\libraries\WiiChuck/WiiChuck.h:36: error: 'byte' has not been declared
C:\Users\TF-Kunde\Documents\Arduino\libraries\WiiChuck/WiiChuck.h:41: error: 'boolean' does not name a type
C:\Users\TF-Kunde\Documents\Arduino\libraries\WiiChuck/WiiChuck.h:52: error: 'byte' does not name a type
nunchukled.ino: In function 'void setup()':
nunchukled:17: error: 'class WiiChuck' has no member named 'begin'
nunchukled:18: error: 'class WiiChuck' has no member named 'update'
nunchukled.ino: In function 'void loop()':
nunchukled:25: error: 'class WiiChuck' has no member named 'update'
C:\Users\TF-Kunde\Documents\Arduino\libraries\WiiChuck/WiiChuck.h:62: error: 'int WiiChuck::buttonZ' is private
nunchukled:27: error: within this context

Ich habe die Library WiiChuck.h heruntergeladen und hinzugefügt
Hier ist der Code der Library:

Hier ist die C-file des codes:

/*
 * WiiChuck
 * Flamingo EDA http://www.flamingoeda.com
 * 
 */

#include "WiiChuck.h"

void WiiChuck::init()
{
  Wire.begin();
  Wire.beginTransmission(WII_I2C_ADDR);
  Wire.send(0x40);
  Wire.send(0x00);
  Wire.endTransmission();
}

void WiiChuck::initWithPower()
{
  initWithPowerPins(PORTC3, PORTC2);
}

void WiiChuck::initWithPowerPins(byte powerPin, byte gndPin)
{
  DDRC |= _BV(powerPin) | _BV(gndPin);
  PORTC &= ~_BV(gndPin);
  PORTC |= _BV(powerPin);
  delay(100);
  init();
}

boolean WiiChuck::read()
{
  int count = 0;
  Wire.requestFrom(WII_I2C_ADDR, PACKAGE_LENGTH);
  while(Wire.available()) {
    buffer[count++] = decodeByte(Wire.receive());
  }
  // send request for next bytes
  sendNullRequest();

  if (count < 5) {
    return false;
  }

  // update data

  joyAxisX = buffer[0];
  joyAxisY = buffer[1];
  accelAxisX = buffer[2];
  accelAxisY = buffer[3];
  accelAxisZ = buffer[4];
  
  buttonZ = 0;
  buttonC = 0;
  if ((buffer[5] >> 0) & 1) {
    buttonZ = 1;
  }
  if ((buffer[5] >> 1) & 1) {
    buttonC = 1;
  }

  if ((buffer[5] >> 2) & 1) {
    accelAxisX += 2;
  }
  if ((buffer[5] >> 3) & 1) {
    accelAxisX += 1;
  }

  if ((buffer[5] >> 4) & 1) {
    accelAxisY += 2;
  }
  if ((buffer[5] >> 5) & 1) {
    accelAxisY += 1;
  }

  if ((buffer[5] >> 2) & 1) {
    accelAxisZ += 2;
  }
  if ((buffer[5] >> 3) & 1) {
    accelAxisZ += 1;
  }

  return true;
}

int WiiChuck::getJoyAxisX()
{
  return joyAxisX;
}

int WiiChuck::getJoyAxisY()
{
  return joyAxisY;
}

int WiiChuck::getAccelAxisX()
{
  return accelAxisX;
}

int WiiChuck::getAccelAxisY()
{
  return accelAxisY;
}

int WiiChuck::getAccelAxisZ()
{
  return accelAxisZ;
}

int WiiChuck::getButtonZ()
{
  return buttonZ;
}

int WiiChuck::getButtonC()
{
  return buttonC;
} 

/*****************************************************************************
 *  PRIVATE METHODS                                                            
 ****************************************************************************/

byte WiiChuck::decodeByte(byte x)
{
  x = (x ^ 0x17) + 0x17;
  return x;
}

void WiiChuck::sendNullRequest()
{
  Wire.beginTransmission(WII_I2C_ADDR);
  Wire.send(0x00);
  Wire.endTransmission();
}

und hier ist die Head-file des codes:

/*
 * WiiChuck
 * Flamingo EDA http://www.flamingoeda.com
 *
 */

#ifndef WII_CHUCK_H
#define WII_CHUCK_H

#include <WProgram.h>
#include <Wire.h>


#define WII_I2C_ADDR   0x52
#define PACKAGE_LENGTH 6

extern TwoWire Wire;
class WiiChuck {

 public:
  /**
   * Initialize and join the I2C bus.
   */
  void init();

  /**
   * Initialize and join I2C bus with default power pins.
   * POWER: PC3 (Analog 3 pin in Arduino)
   *   GND: PC2 (Analog 2 pin in Arduino)
   */
  void initWithPower();

  /**
   * Initialize and join I2C bus with specified power pins.
   */
  void initWithPowerPins(byte powerPin, byte gndPin);

  /**
   * Read data from nunchuck.
   */
  boolean read();

  int getJoyAxisX();
  int getJoyAxisY();
  int getAccelAxisX();
  int getAccelAxisY();
  int getAccelAxisZ();
  int getButtonZ();
  int getButtonC();

 private:
  byte decodeByte(byte x);
  void sendNullRequest();

 private:
  uint8_t buffer[PACKAGE_LENGTH];
  int joyAxisX;
  int joyAxisY;
  int accelAxisX;
  int accelAxisY;
  int accelAxisZ;
  int buttonZ;
  int buttonC;
};


#endif
//Very simple demonstration of the WiiChuck Class Library
//pushing the Z button will turn the onboard LED on pin 13 OFF
//JohnnyOnTheSPot
//ohmwardbond.blogspot.com


#include <WiiChuck.h>
#include <Wire.h>

WiiChuck chuck = WiiChuck(); //Initiates the object name shoulder as a WiiChuck class


void setup()
{
chuck.begin(); // Initiates both sensors
chuck.update();
}


void loop()
{
delay(1);
chuck.update(); // Updates the Arduino to the current Nunchuck reading

  if (chuck.buttonZ == 1)
 {
   digitalWrite(13, LOW);
 }

 else
 {
  digitalWrite(13, HIGH); 
 }
 
}

wäre echt nett wenn du mir helfen könntest

Herb_:
Ich habe die Library WiiChuck.h heruntergeladen und hinzugefügt

Hier ist der Code der Library:
...
#include <WProgram.h>

Und ich will immer meine Blue-Ray Discs auf einem Trichtergrammophon abspielen - und es funktioniert einfach nicht! Nichts als Kratzer, aber kein Ton!

Wie wäre es, wenn Du Dir eine Library suchst, die für Arduino-Version 1.0 oder höher gemacht ist?

Wenn Du so eine Uralt-Library aus der Arduino-Steinzeit vor der Erfindung des "UNO" Boards unter einer höheren Version als 1.0 lauffähig bekommen möchtest, mußt Du diese Library erstmal entsprechend anpassen.

In ganz einfachen Fällen reicht es, die eingebundene Datei <WProgram.h> gegen <Arduino.h> auszutauschen, aber ggf. sind weitere Umstellungen notwendig, um die Library kompatibel zu aktuellen Arduino-Versionen zu machen.

Eine neuere Library im Internet zu finden, die zu Arduino-Versionen ab 1.0 aufwärts kompatibel ist, ist wahrscheinlich einfacher.