Pages: [1]   Go Down
Author Topic: USB -> I2C -> Colorduino  (Read 997 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo miteinander

Hat jemand mit der Steuerung eines Colorduinos mittels C# Erfahrungen gemacht? Dazu habe ich einen USB-ISS-Konverter gekauft (http://www.robot-electronics.co.uk/htm/usb_iss_tech.htm) und die Kommunikation zum Konverter soweit hinbekommen, dass ich diesen initialisieren kann (setzen des I2C-400kHz-Modus, Abfragen des gesetzten Modus / Seriennummer / Firmwareversion). Allerdings erhalte ich beim Schreiben immer nur 1 Byte, nämlich 0x00, zurück, was (soweit ich der Dokumentation entnehme) bedeutet, dass der Konverter (der als Master fungiert) vom Slave kein ACK oder nACK erhalten hat (ein solches würde aus 2 Bytes bestehen).

Auf den Colorduino habe ich folgendes Programm geladen: https://code.google.com/p/colorduino-i2c/downloads/detail?name=colorduino%20i2c%20demo%20.zip&can=2&q= -> 'colorduino_firmware_v1.1.pde' - dieses ermöglicht die entgegennahme von Bitmaps per I2C. Der Colorduino setzt sich als I2C-Slave mit der Adresse 0x05 - wenn ich also schreiben will, verwende ich die Adresse 0x0A, wenn ich von ihm lesen will 0x0B.

Spielt es eine Rolle, ob ich den Konverter an den Pins (m) oder an die Steckleiste (w) anschliesse? Habe leider gerade keine Kabel, um dies zu testen. Der Colorduino ist mit Strom versorgt (Kontrolllampe leuchtet). Habe auch schon versucht, die Wire-Library zu modifizieren, weil im Sketch für den Arduino (nicht den Colorduino!) noch folgende Kommentarzeilen vorhanden sind:

Quote
libraries to patch:
  Wire:
      utility/twi.h: #define TWI_FREQ 400000L (was 100000L)
                     #define TWI_BUFFER_LENGTH 70 (was 32)
      wire.h: #define BUFFER_LENGTH 70 (was 32)

Ich weiss aber nicht, ob das folglich nur für den Arduino oder auch für die Wire-Lib, die für den Colorduino gelinkt wird, zu machen ist. Der Versuch hat aber keinen Erfolg gebracht...

Wäre mega froh, wenn jemand mit mir ein Troubleshooting machen könnte, da ich jetzt schon eine gute Woche alles versucht habe, was mir in den Sinn gekommen ist - ich hoffe, etwas übersehen zu haben smiley

Liebe Grüsse
TinkTank
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21887
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast Du die Massen verbunden? Hast Du Pullupwiderstände von SDA und SCL auf +5V geschaltet?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe

Der technischen Dokumentation für den USB-ISS habe ich folgende Information entnommen:

Quote
3.3v or 5v
Add the link for 5v, remove it for 3.3v
The processor on the USB-ISS is equally happy running from 3.3v or from 5v. With the LEDs it takes up to 20mA so when 5v is selected by linking the power select pins, the USB-ISS module can supply up to 80mA to external devices. When the link is removed a 3.3v regulator supplies the power. This regulator is capable of 50mA, so when running at 3.3v up to 30mA is available to your circuits. If your application requires more than this, or has its own supply, then leave the 3.3v/5v pin unconnected. Do not apply your own voltage to this pin.

Den Jumper für die Spannungsregulierung habe ich nicht entfernt, sollte also im 5V-Modus laufen - ob das etwas mit Pullup zu tun hat, kann ich aus Unwissenheit leider nicht sagen...?

"Mit Masse verbinden" - also die Spannung und die Erdung des USB-ISS mit dem Colorduino verbinden? Den Colorduino versorge ich bereits extern mit Strom - deshalb habe ich diese nicht miteinander verbunden.

Liebe Grüsse
TinkTank
« Last Edit: March 18, 2013, 08:52:41 am by TinkTank » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21887
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Masse (minus Pol) des Arduino muß mit der Masse (minus Pol) des Colorduino verbunden sein da ansonsten die Signale am I2C keine Referenzpunkt zur spannungsmessun haben.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe

Ich verwende keinen Arduino, sondern will den Colorduino direkt vom PC steuern, deshalb der USB-I2C-Konverter.

Dann muss ich die Masse des Colorduinos mit der Masse des Konverters verbinden? Das ist alles? Dann hänge ich von der externen Stromversorgung für den Colorduino nur noch den Pluspol an?

Ich werde das so schnell es geht ausprobieren und melde mich wieder.

Liebe Grüsse
TinkTank

EDIT: Jawoll, wie ich der technischen Dokumentation entnehme:

Quote
0v Ground
The 0v Ground pin must be connected to the 0v (Ground) on your device.

Ich melde mich wieder!
« Last Edit: March 18, 2013, 11:19:17 am by TinkTank » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21887
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dann hänge ich von der externen Stromversorgung für den Colorduino nur noch den Pluspol an?
Nein. hab ich nicht gesagt.
Du schließt am  Colorduino beide Pole der Stromversorgung an UND verbindest die Masse des Colorduinos mit der Masse des Konverters.
Grüße Uwe
« Last Edit: March 18, 2013, 04:28:16 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe

Vielen herzlichen Dank soweit, ich erhalte nun immerhin keinen Fehler mehr vom Konverter. Leider reagiert die Matrix noch nicht auf meine Befehle. Den Konverter habe ich mit "I2C_H_400KHZ" konfiguriert, also "hardware I2C ports / 400kHz". Hat der Colorduino ein bestimmtes Register, in welches ich schreiben muss? Schreibe momentan im I2C_AD0-Modus ("read / write multiple bytes for devices without internal address or where address does not require resetting").

Liebe Grüsse
TinkTank
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21887
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich kenne den Colorduino nicht.
Was sagt die Beschreibung oder ein Beispielsketch?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe

Also, ich hab's soweit hinbekommen, wie ich den Colorduino alle LEDs auf einmal in der selben Farbe anzeigen lassen kann (vom Computer aus, versteht sich) - nicht jedoch, wie ich 8x8 Farbwerte anzeigen lassen kann. Nun, genug für heute, ich werd's dann weiterprobieren und hier posten, wenn ich die Ursache dafür lokalisieren konnte. Bin zuversichtlich :o)

Für die Übertragung war keine Addressierung eines bestimmten Registers notwendig (=> der Colorduino hat keine Register) und Hardware-400kHz ist auch korrekt.

Herzlichen Dank & liebe Grüsse
TinkTank
« Last Edit: March 18, 2013, 06:10:44 pm by TinkTank » Logged

Pages: [1]   Go Up
Jump to: