-         

Ergebnis 1 bis 1 von 1

Thema: Wii Nunchuck I2C an Raspberry Pi

  1. #1

    Wii Nunchuck I2C an Raspberry Pi

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,
    ich teste momentan die Verbindung zwischen einem Wii Nunchuck und dem Raspberry Pi.
    Hierfür habe ich den Nunchuck per I2C an meinen Raspberry Pi angeschlossen.
    Leider konnte ich bisher keine fertigen Libraries für den Raspberry Pi in C finden.
    Aus diesem Grund habe ich mich daran gemacht, die gefundenen Libraries auf den Pi zu portieren.
    Leider klappt die Kommunikation nicht zu 100%.
    Anfangs bekam ich von meinem Controller nur die Werte 0xFF zurück, was ein Fehler vermuten lies.
    Nach einigem Testen konnte ich dieses Problem weitgehend fixen.
    Jedoch klappt leider die Kommunikation noch nicht zu 100%.
    Ich vermute ein Timing-Problem.
    Ich habe die Baudrate schon wie in den anderen gefundenen Libraries auf 19200 reduziert, dies führte jedoch zu einem anderen Fehler.
    Dabei kamen es zu dem Phänomen, dass mir für die X-Position des Joysticks der Wert 0x4 zurück geliefert wurde. Bewegte ich den Joystick, so wurden die Werte jedoch etwas plausibler.
    Jedoch durch den "komischen" Standardwert von 0x4 nicht wirklich auswertbar.
    Also setzte ich die Baudrate auf den Standardwert von 100000.
    Dabei kommt es seit heute morgen jedoch zu einem anderen Problem.
    Immer wieder bekomme ich den Wert 0x00 zurückgeliefert, was ebenfalls auf einen Fehler schließen lässt.
    Gestern Abend hatte das selbe Programm mit selber Baudrate noch funktioniert.
    Am Besten ich zeige euch einmal meinen Testquellcode.

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <wiringPi.h>
    #include <wiringPiI2C.h>
    
    void main(void) {
            int controller = wiringPiI2CSetup(0x52);
            unsigned char data[6];
            int button_c, button_z;
            int j = 1;
            wiringPiI2CWriteReg8(controller,0x40,0x00);
            delay(50);
            wiringPiI2CWrite(controller,0x00);
            delay(200);
            while(1) {
                    system("clear");
                    printf("j=%i\n",j);
                    for(int i = 0; i < 6; i++) {
                            data[i] = (wiringPiI2CRead(controller) ^ 0x17) + 0x17;
                            printf("data=%x\n",data[i]);
                    }
                    button_c = !(data[5]&0x02);
                    button_z = !(data[5]&0x01);
                    printf("button_c=%i,button_z=%i\n\n",button_c,button_z);
                    wiringPiI2CWrite(controller,0x00);
                    j++;
                    delay(200);
            }
    }
    Die unterschiedlichen Delays wurden schon mehrfach sowohl erhöht, als auch erniedrigt, was jedoch zu keiner wirklichen Verbesserung führte.
    Vielleicht hat einer von euch schon ein Mal mit dem Wii Nunchuck und dem Raspberry Pi in C experimentiert und kann mir helfen.
    Oder vielleicht kennt einer eine fertige Library für den Pi, die in C geschrieben ist.

    Schon ein Mal vielen Dank im Voraus.
    Fabian


    EDIT:

    Ich habe das obige Programm durch eine if-Abfrage erweitert.
    Code:
    if(wiringPiI2CWrite(controller,0x00) < 0) {
             fprintf(stderr, "Failure - Can't write 1 Byte\n");
             exit(1);
    }
    Hierdurch konnte ich nun feststellen, dass der Fehler augenscheinlich auf Grund eines fehlerhaften Schreiben auftritt.
    Geändert von wassy92x (27.01.2015 um 16:37 Uhr)

Ähnliche Themen

  1. TLC59116 über i2c an Raspberry Pi
    Von Cysign im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 5
    Letzter Beitrag: 05.11.2015, 11:26
  2. Eagle Wii Nunchuck/Classic/NunChucky Eagle Library
    Von tucow im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 0
    Letzter Beitrag: 17.05.2013, 03:31
  3. Raspberry Pi I2C
    Von Kampi im Forum Raspberry Pi
    Antworten: 69
    Letzter Beitrag: 23.01.2013, 20:00
  4. Wii Motion Plus - Nunchuck Passthrough Mode
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 19.10.2011, 20:36
  5. Nunchuck über i2c Ausleseprobleme (wohl Nunchukseitig)
    Von ustech im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 06.10.2008, 00:56

Stichworte

Berechtigungen

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