Brauche dringend hilfe

servus ich benötige hilfe. ich hab ein oled 16x2 display und den wii nunchuck sammt dem adapter das vekabeln an meinen arduino duemilanove ging dank internet.mein display zeigt mein eingegebenen text an. ich hab aber leider keine ahnung vom programmieren( wie gesagt wenn ich das net fertig bekomm fall ich durch und das wär echt sch.... also wenn jemand helfen kann bitte melden DANKE

Hast Du den Nunchuck denn schon zum Laufen gebracht? Also mit irgendwelchem Beispielcode aus dem Netz?

Muss es unbedingt dieser Controller sein? Du könntest auch einen ADXL330 nehmen, den gibt es zum Beispiel als Steckmodul im 2,54mm-Raster bei Segor.

http://arduino.cc/en/Tutorial/ADXL3xx

[edit] Auch Watterott hat ein ADXL335-Breadboard, sogar noch günstiger als das Modul von Segor: http://www.watterott.com/de/Breakout-Board-ADXL335

Da ja schon viel mit dem Wii-Kontroler gemacht wurde ist das auslesen sicher das geringere Problem. Aber eine schöne anzeige auf dem Display wird sicher tricky.

Ich habe keinen nunchuck hier sonst würde ich mal schauen. Wie genau willst du es darstellen? Einfach mit nem Balken der entwerder nach rechts oder links größer wird?

1: Winkel: +30° 2: 0||| bzw 1:Winkel: -30° 2: |||0

Oder muß es wie ein Zeiger aussehen? Min/Max Werte mappen und entsprechend einen Zeichensatz erstellen mit den Balken pro Zeichen Wieviel Pixel hat nochmal ein Zeichen in der Breite 8 Zeichen kann man selber anlegen bei 4 Pixel breite würde das gehene oder? . .. ... .... . .. ... .... Darauf kann man doch aufbauen oder?

edit: zusätzlich würde ich aber auch lieber was anderes nehmen als ein nunchuck. Wie sth77 auch schon sagt.

Hast Du mal versucht das Nunchuck zum Laufen zu bringen? Hast Du im Netz nach entsprechendem Code geguckt? Irgendwelche Beispielprogramme, die die Daten auf die Serielle Konsole ausgeben oder so? Ich will damit wissen ob Du das Teil richtig verkabelt hast und es noch "lebt"... ;)

Hast Du bedacht das sich der "Center of Gravity" beim Motorrad fahren verschiebt? Das wir uns deshalb in die Kurve legen, damit wir nicht umfallen? Ich bin nicht sicher ob das Nunchuck nicht einfach nur eine vergrößerte Beschleunigung in Richtung "unten" anzeigen wird... Fürs Auto, okay, aber fürs Motorrad...? Hat da jemand Erfahrung? Kann da jemand was dazu sagen?

Also wenns bis dahin nur noch am Code hakt: Ich wohn in Weinsberg bei Heilbronn.

Na gut, so wahnsinnig kompliziert scheint das ja auch nicht mit dem Controller zu sein:
http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/
Da ist ein Beschleunigungssensor verbaut, der über I2C ausgelesen wird. Das packst du schon! Basierend auf den Beispielen sollte das kein Hexenwerk sein…

Ich glaub das brauchen wir eigentlich garnicht: Wenn Du das Nunchuck zum Laufen kriegst (womit Du beweist, dass es noch lebt und Du es richtig verkabelt hast) können wir hier einen Code zusammenfrickeln, der Dir Deine Balken anzeigt. ;)

Wenn das Nunchuck nicht funktioniert wäre vorbeikommen verschwendete Zeit (Deine wie meine), und wenn es funktioniert sollte der Rest kein großes Problem mehr sein. :)

Wenns in ner Woche noch nicht funktioniert (funktionierendes Nunchuck vorausgesetzt) kannst Du gerne mal vorbeikommen. 8)

Fänd ich auch gut, wenn wir das hier "besprechen" könnten. Wenn das Stück für Stück entwickelt wird, kann manch einer noch was draus lernen. Bin schon drauf und dran, mir solch einen Nunchuk zuzulegen... ;)

Wie gesagt: Du machst das "mechanische" (bringst das Nunchuck zum Laufen) und wir helfen Dir beim Rest. :)

Sollte eigentlich kein großes Problem sein, unter dem Link von sth77 gibts auch entsprechenden Code, siehe "WiichuckDemo.zip"... 8)

Such nach dem Link zum "WiichuckDemo.zip", lad es Dir runter, entpack es, öffne das *.pde mit der Arduino-Entwicklungsumgebung, verbinde Deinen Arduino mit Deinem Computer und lade den Code hoch, genauso wie Du es mit dem Beispiel für das Display gemacht hast.

Ich hab mir den Code noch nicht angesehen, aber ich tippe mal darauf dass er Dir die aktuellen Daten vom Nunchuck auf die Konsole ausgibt. Das ist das Fenster, das aufgeht, wenn Du diesen rechten Knopf auf Deiner Arduino-Entwicklungsumgebung anklickst.

Joghurt: Such nach dem Link zum "WiichuckDemo.zip", lad es Dir runter, entpack es, öffne das *.pde mit der Arduino-Entwicklungsumgebung, verbinde Deinen Arduino mit Deinem Computer und lade den Code hoch, genauso wie Du es mit dem Beispiel für das Display gemacht hast.

Genau, das würde ich auch als Ausgangspunkt definieren. Lad dir die Bibliothek, kopiere sie ins libraries-Verzeichnis und spiele den Sketch auf. Selbstveständlich solltest du auch den Controller angeschlossen haben und die serielle Konsole öffnen. Wenn du dann Messergebnisse auf dem Bildschirm hast, sehen wir weiter und kümmern uns um die Darstellung der Werte auf dem Display, danach ist die optische Aufwertung dran. Wenn du fleißig "mitspielst" ;), ist das was du vorhast morgen fertig. Kopf hoch!

Hast du die Konsole auch auf 19200 bit/s gestellt?

Stimmt Deine Schnittstellengeschwindigkeit? Ist rechts unten in der Konsole “19200” ausgewählt?

Update: Dieses Mal warst Du schneller… :wink:

Ja. :)

Hast Du das Display angeschlossen?

Jetzt müssen wir noch diesen Codeschnipsel und den Beispielcode vom Display "verheiraten" und das wars schon. :)

Da hätte das her- und zurückfahren weit länger gedauert. ;)

Kannst Du mal Deinen Beispielcode vom Display hier reinschreiben?

(Benutze dazu den "#"-Knopf ("Insert Code") auf der "Post Reply"-Seite!)

Kontrollier Dein Display-Board, dass es die Pins, die Dein Nunchuck benutzt, nicht nutzt!!

Sonst kann es sein dass Du nen Kurzschluss erzeugst, das wäre nicht so gut...

Du brauchst nur die Neigung (links/rechts) des Motorrads? Welcher Wert verändert sich denn, wenn du den Controller kippst? Ich denke, es ist der Wert “accx”, oder? In dem Fall reduzieren wir den Nunchuk-Code erst mal auf das Wesentliche:

#include <Wire.h>
#include "nunchuck_funcs.h"

int loop_cnt=0;

byte accx;

void setup()
{
    Serial.begin(19200);
    nunchuck_setpowerpins();
    nunchuck_init(); // send the initilization handshake
}

void loop()
{
    if( loop_cnt > 100 ) { // every 100 msecs get new data
        loop_cnt = 0;
        nunchuck_get_data();
        accx  = nunchuck_accelx(); // ranges from approx 70 - 182
        Serial.print((byte)accx,DEC);
    }
    loop_cnt++;
    delay(1);
}

Nun finde heraus, wo die Nullstellung liegt, also Controller gerade halten, dann wie weit sich die Werte in beide Richtungen ändern, wenn du ihn kippst.

[edit] Das ist hier echt High-Speed-Projektentwicklung! Ich habe Spaß daran! :smiley:

Würde zuerst mal gucken ob ich beides zusammen sauber zum Laufen bekomme, etwa so:

#include <Wire.h>
#include "nunchuck_funcs.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,10,7,6,5,4);

void setup()
{
  nunchuck_setpowerpins();
  nunchuck_init();
  lcd.begin(16,2);
}

void loop()
{
  nunchuck_get_data();
  int accx  = nunchuck_accelx(); // ranges from approx 70 - 182
  int accy  = nunchuck_accely(); // ranges from approx 65 - 173
  int zbut = nunchuck_zbutton();
  int cbut = nunchuck_cbutton(); 
            
  lcd.setCursor(0,0);
  lcd.print(accx);
  lcd.setCursor(8,0);
  lcd.print(accy);
  lcd.setCursor(0,1);
  lcd.print(zbut);
  lcd.setCursor(8,1);
  lcd.print(cbut);
}

Damit sollte sich zumindest was auf dem Display tun wenn Du das Nunchuck bewegst…

Ist nicht getestet daher ohne Gewähr!

[edit] Geht mir auch so. XD

Rauchen ist ungesund! ;)

Du kannst sie mit der Maus markieren, mit STRG-C (oder CTRL-C oder übers Menü) kopieren und dann ins Fenster der Entwicklungsumgebung einfügen (CTRL-V, STRG-V oder übers Menü), zum Beispiel...