- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Wii Motion Plus mit Arduino auslesen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Besten Dank für die Info, Suche demnächst mal ne Lieste mit allen Änderungen zur Version 1.0

    Habe nun alle Befehle geändert, jedoch kommt nochmal ein Fehler :/

    Der korrigierte Sketche:

    #include <SoftwareSerial.h>

    #include <Wire.h>



    byte data[6];

    int gier; //Daten vom AD-Wandler

    int roll;

    int nick;



    void setup()

    {

    Serial.begin(9600);

    Wire.begin(); //WiiMo ein

    Wire.beginTransmission(0x53); //WiiMo starten und Adresse 0x53 deaktivieren

    Wire.write(0xFE); //0x04 zur Addresse 0xFE senden zur Aktivierung

    Wire.write(0x04);

    Wire.endTransmission(); //WiiMo jetzt Addresse 0x52 aktiv

    delay(30);

    }



    void loop()

    {

    //roll, nick und gier einlesen

    Wire.beginTransmission(0x52); //Null senden

    Wire.write(0x00);

    Wire.endTransmission();



    Wire.requestFrom(0x52,6); //6 Bytes lesen

    for (int i=0;i<6;i++)

    {

    data[i]=Wire.read();

    }



    //zusammensetzen

    gier = ((data[3] / 4)<< + data[0];

    roll = ((data[4] / 4)<< + data[1];

    nick = ((data[5] / 4)<< + data[2];



    //ausgeben

    Serial.print(roll);

    Serial.print(" ");

    Serial.print(nick);

    Serial.print(" ");

    Serial.print(gier);

    Serial.println();

    delay(10);

    }


    Die Fehlermeldung:

    /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=16000000L -DARDUINO=100 -I/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino -I/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/variants/eightanaloginputs -I/Applications/Arduino.app/Contents/Resources/Java/libraries/SoftwareSerial -I/Applications/Arduino.app/Contents/Resources/Java/libraries/Wire /var/folders/vn/5hwp46ws6qsgpzwkxxvwrrd40000gn/T/build1082119935771231009.tmp/sketch_jan13c.cpp -o/var/folders/vn/5hwp46ws6qsgpzwkxxvwrrd40000gn/T/build1082119935771231009.tmp/sketch_jan13c.cpp.o
    sketch_jan13c.cpp: In function 'void loop()':
    sketch_jan13c:46: error: call of overloaded 'write(int)' is ambiguous
    /Applications/Arduino.app/Contents/Resources/Java/libraries/Wire/Wire.h:55: note: candidates are: virtual size_t TwoWire::write(uint8_t)
    /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:49: note: size_t Print::write(const char*)



    Ich hoffe wenn ich das Buch bekommen habe, werde ich etwas konstruktievere Beiträge erfassen. Bitte um entschuldigung...

    grüssse freesmile

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,

    du solltest dir angewöhnen, Code Beispiele in die entsprechenden Code tags (# symbol im Visu Editor) zu setzen. Das macht das Ganze besser lesbar.
    Hier mal dein Beispiel, das sich fehlerfrei unter Arduino 1.0 übersetzen läßt.
    Code:
    #include <inttypes.h>
    #include <SoftwareSerial.h>
    #include <Wire.h>
    
    byte data[6];
    int gier; //Daten vom AD-Wandler
    int roll;
    int nick;
    
    void setup()
    {
      Serial.begin(9600);
      Wire.begin(); //WiiMo ein
      Wire.beginTransmission(0x53); //WiiMo starten und Adresse 0x53 deaktivieren
      Wire.write(0xFE); //0x04 zur Addresse 0xFE senden zur Aktivierung
      Wire.write(0x04);
      Wire.endTransmission(); //WiiMo jetzt Addresse 0x52 aktiv
      delay(30);
    }
    
    void loop()
    {
      //roll, nick und gier einlesen
      Wire.beginTransmission(0x52); //Null senden
      Wire.write((byte)0x00);
      Wire.endTransmission();
    
      Wire.requestFrom(0x52,6); //6 Bytes lesen
      for (int i=0;i<6;i++)
      {
        data[i]=Wire.read();
      }
    
      //zusammensetzen
      gier = ((data[3] / 4)<< + data[0]);
      roll = ((data[4] / 4)<< + data[1]);
      nick = ((data[5] / 4)<< + data[2]);
    
      //ausgeben
      Serial.print(roll);
      Serial.print(" ");
      Serial.print(nick);
      Serial.print(" ");
      Serial.print(gier);
      Serial.println();
      delay(10);
    }
    Der Fehler lag in der Zeile
    Code:
      Wire.write(0x00);
    weis der Kuckuck warum der Compiler gerade hier über die 0x00 stolpert, weil er meint das sei ein integer Wert.

Ähnliche Themen

  1. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31
  2. >Wii Motion Plus< - Robotik tauglich?
    Von Jango1987 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 25.07.2011, 16:23
  3. ARDUINO ARDUINO l293D + MegaservoLib
    Von m1ch15inner im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 11:50
  4. wii motion plus
    Von hman13 im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 06.04.2010, 17:32
  5. Wii-Motion-Plus in Bascom ansteuern
    Von poolmicha im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 31.01.2010, 17:56

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests