-         

Seite 1 von 9 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 83

Thema: Nunchuk + Bascom + Atmega8 . Brauche hilfe :-)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.05.2008
    Beiträge
    51

    Nunchuk + Bascom + Atmega8 . Brauche hilfe :-)

    Anzeige

    Hallo ich würde gerne ein Atmega8 mit einen Nunchuk verbinden und ihn dann mit Bascom Programmieren. Doch leider finde ich nur Beispiel die in C geschrieben wurden.
    Kann mir da einer Helfen?


    Hier die Beispiele in C
    http://www.michael.lesauvage.name/cod4-nunchuk-leaner/

    http://todbot.com/blog/2007/10/25/bo...unchuck-servo/

    http://www.windmeadow.com/node/42

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    das Ding bringt mich auf eine tolle Idee. Also das Teil verwendet I²C
    also sollte man das entweder mit der Bascom Funktionen arbeiten oder
    das selber über die Register machen. Beim Letzten Link sind die
    Datenabläufe doch relativ gut erklärt.
    Grüße Furtion

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Ein spannendes Thema. Der Nunchuk für 20€ scheint echt ein Schnäppchen zu sein. Er hat zwei Knöpfe, zwei analoge Sticks und drei Beschleunigungssensoren, kommuniziert mit I2C und kann mit 5V betrieben werden. Genial geeignet zum Anschluss an einen Microkontroller :)

    Eine gute Basis für eigene Entwicklungen (neben den oben genannten netten Links) ist wohl diese Seite:
    http://www.wiili.org/index.php/Wiimo...ollers/Nunchuk

    Obwohl ich mit Bascom noch nicht viel gemacht habe, versuche ich mal den Nunchuk mit meinem RP6 in Bascom auszuwerten. Bin mal gespannt ob ich das hinbekomme, danke für die Anregung :)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.05.2008
    Beiträge
    51
    Alles erklärt
    Habe aber leider nicht so viel wissen um das umzuformen
    aber für ein paar Hilfen wäre ich super dankbar

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    Das Ding geht per I2C,
    dazu könnte man von hier die Init-Routine verwenden:
    http://www.roboternetz.de/wissen/ind...r#Hardware_TWI


    So, schnell zusammengetippt wie ich das verstanden hätte (nur mit Debugausgaben der Werte), deshalb ungetestet, auch weil ich keine Wii-Teile habe:
    Code:
    $regfile = "M8def.dat"                                      ' the used chip
    $crystal = 16000000                                         ' frequency used
    $baud = 9600
    
    $lib "i2c_twi.lbx"                                          ' Für Hardware TWI
    
    Config Scl = Portc.5                                        ' Ports fuer IIC-Bus
    Config Sda = Portc.4
    
    Config Twi = 400000                                         ' Init TWBR und TWSR
    
    ' TWI gleich einschalten, das macht Bascom ansonsten erst beim I2CStart !
    Twcr = &B00000100                                           ' nur TWEN setzen
    
    Const Nunchuck_write = &HA4                                 ' Slaveadresse
    Const Nunchuck_read = &HA5
    
    Dim Buffer(6) As Byte
    Dim B As Byte
    Dim Tmp As Byte
    
    ' Startausgabe
    Print
    Print "I2C-TWI Demo mit Wii Nunchuck"
    Print
    
    Do
    
        Gosub Nunchuck_init
    
        Buffer(1) = 0
    
        I2creceive Nunchuck_read , Buffer(1) , 0 , 6
    
        For B = 1 To 6
    
            ' Hier soll noch etwas rumcodiert werden:
            Tmp = Buffer(b) Xor &H17
            Tmp = Tmp + &H17
    
            Print B ; ": " ; Hex(Tmp )
    
            Buffer(b) = 0                                       ' löschen
    
        Next B
    
        Gosub Send_zero
    
        Print "------"
    
        Waitms 1000
    Loop
    
    End
    
    Nunchuck_init:
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H40                                           ' sends memory address
        I2cwbyte &H00                                           ' sends sent a zero.
        I2cstop
    
    Return
    
    Send_zero:
    
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H00                                           ' sends one byte
        I2cstop
    
    Return
    schaut aber interessant aus das Teil

    Edit:
    EOR/XOR Bug entfernt !
    I2C-Adresse richtig

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    Diesen Kopfsensor gibts übrigens auch fertig - weis den Namen nur gerade nicht

    Aber mit dem Wii Kram kann man sehr viel machen - wie den Wiibrator aus der Bauhaus Hochschule/Universität für Sie und Ihn (kein Witz) oder die 3D Virtuellen Räume (auch hier im FOrum irgendwo)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    32
    Beiträge
    246
    Hi,

    das hört sich sehr interessant an!
    Damit könnte man schön eine simple aber effektive Fernsteuerung zum Testen von Robotern basteln!

    Wenn jemand das erfolgreich zusammen gebastelt hat, wäre es toll, wenn es dazu einen Eintrag im Wiki gäbe...
    Mit allen wichtigen Kommandos zusammengefasst, und ggf. ein paar Code-Schnippsel!

    Praktisch wäre noch, wenn es eine passende Anschlussbuchse bei Reichelt oder so gäbe.. (weiß das jemand?)

    P.S.: @BlackDevil: Du meinst die Seite hier oder: Johnny Chung Lee - Projects - Wii

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    Unter anderem den ja und den: http://www.shortnews.de/start.cfm?id=717965

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Nur um es gleich klarzumachen: Ich habe keine Ahnung von I2C/TWI, dies sind meine ersten Versuche.

    Ich habe mir einen kleinen Adapter gebastelt:

    Und das Programm von linux_80 (danke) an den RP6 angepasst:
    Code:
    '$regfile = "M8def.dat"                                      ' the used chip
    '$crystal = 16000000                                         ' frequency used
    '$baud = 9600
    
    $regfile = "M32def.dat"                                     ' RP6 mit Mega32
    $crystal = 8000000                                          ' taktet mit 8MHz
    $baud = 38400                                               ' Loader-Baud
    
    $lib "i2c_twi.lbx"                                          ' Für Hardware TWI
    
    'Config Scl = Portc.5                                        ' Ports fuer IIC-Bus
    'Config Sda = Portc.4
    
    Config Scl = Portc.0                                        ' Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    Config Twi = 400000                                         ' Init TWBR und TWSR
    
    ' TWI gleich einschalten, das macht Bascom ansonsten erst beim I2CStart !
    Twcr = &B00000100                                           ' nur TWEN setzen
    
    Const Nunchuck_write = &H52                                 ' Slaveadresse
    Const Nunchuck_read = &H53
    
    Dim Buffer(6) As Byte
    Dim B As Byte
    Dim Tmp As Byte
    
    ' Startausgabe
    Print
    Print "I2C-TWI Demo mit Wii Nunchuck"
    Print
    
    Do
    
        Gosub Nunchuck_init
    
        Buffer(1) = 0
    
        I2creceive Nunchuck_read , Buffer(1) , 0 , 6
    
        For B = 1 To 6
    
            ' Hier soll noch etwas rumcodiert werden:
            Tmp = Buffer(b) Eor &H17
            Tmp = Tmp + &H17
    
            Print B ; ": " ; Hex(tmp )
    
            Buffer(b) = 0                                       ' löschen
    
        Next B
    
        Gosub Send_zero
    
        Print "------"
    
        Waitms 1000
    Loop
    
    End
    
    Nunchuck_init:
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H40                                           ' sends memory address
        I2cwbyte &H00                                           ' sends sent a zero.
        I2cstop
    
    Return
    
    Send_zero:
    
        I2cstart
        I2cwbyte Nunchuck_write
        I2cwbyte &H00                                           ' sends one byte
        I2cstop
    
    Return
    Die Ausgabe dazu in meinem Terminal:
    I2C-TWI Demo mit Wii Nunchuck

    1: 6A
    2: 6A
    3: 6A
    4: 6A
    5: 6A
    6: 6A
    ------
    1: 6A
    2: 6A
    3: 6A
    4: 6A
    5: 6A
    6: 6A
    ------
    1: 6A
    2: 6A
    3: 6A
    4: 6A
    5: 6A
    6: 6A
    ------

    [RP6BOOT]

    [READY]
    Egal ob der Nunchuk eingesteckt ist oder nicht, die Werte sind immer gleich
    Vielleicht könnten die TWI-Profis mal drüberschaun. Ich versuche es nun erstmal in C mit der TWI-Libray des RP6...

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    32
    Beiträge
    246
    Also mit Bascom kenne ich mich leider nicht aus, aber gibts da nicht auch sowas wie I2CInit ?

Seite 1 von 9 123 ... LetzteLetzte

Berechtigungen

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