Arduino Mega 2560 mit Ethernet und TLC5940

Hallo

Mein Aquarium wird mit den Arduino Mega 2560 geregelt. Das Ethernet shield wird zu zeit noch für die synchronisieren der zeit benutzt soll aber noch für andre Zwecke benutzt werden.

Nun möchte ich gerne die LED-Beleuchtung mit den TLC5940 Dimmen. Nun habe ich gelesen das
der TLC5940 und das Ethernet shield nicht so einfach zusammen angeschlossen werden können, da sie die die gleichen Pin von den Arduino benutzen. Beim Recherchieren habe ich schon raus gefunden das man das in der librarie vom TLC5940 ändern kann. Meine Erkenntnisse bis jetzt ist das der TLC5940 und das Ethernet shield beide die Pin 51 und 52 von den Mega benuzen.

Und wenn das so korrekt ist kann mir einer sagen wie ich die beiden Pins ändern kann?

Oder liege ich komplett falsch mit den beiden Pins?

Bis dann
Ingo

Hallo

Habe heute Nachmittag weiter nach eine Lösung gesucht und bin bis jetzt da drauf gekommen das man das in der tlc_config.h ändern kann und zwar an dieser stelle

A_TRANSFER_MODE == TLC_BITBANG
/** SIN (TLC pin 26) */
#define SIN_PIN        DEFAULT_BB_SIN_PIN
#define SIN_PORT       DEFAULT_BB_SIN_PORT
#define SIN_DDR        DEFAULT_BB_SIN_DDR
/** SCLK (TLC pin 25) */
#define SCLK_PIN       DEFAULT_BB_SCLK_PIN
#define SCLK_PORT      DEFAULT_BB_SCLK_PORT
#define SCLK_DDR       DEFAULT_BB_SCLK_DDR

Hat vielleicht einer ein Tipp oder ein Hinweis für mich?

Bis dann
Ingo

Das hier:

Und:
http://www.pighixxx.com/pgdev/Temp/ArduinoMega_b.png

Das ist jetzt etwas verwirrend weil PIN hier die Pin-Nummer im Port ist und nicht das Eingangs-Register PINn. DDRn ist das Richtungs-Registers des Ports. PORTn ist das Ausgangsregister

Dann ist noch ...pinouts/ATmega_Mega.h relevant

/** SIN (Mega pin 51) -> SIN (TLC pin 26) /
#define DEFAULT_BB_SIN_PIN PB2
#define DEFAULT_BB_SIN_PORT PORTB
#define DEFAULT_BB_SIN_DDR DDRB
/
* SCLK (Mega pin 52) -> SCLK (TLC pin 25) */
#define DEFAULT_BB_SCLK_PIN PB1
#define DEFAULT_BB_SCLK_PORT PORTB
#define DEFAULT_BB_SCLK_DDR DDRB

Das könnte man da ändern, aber ich würde es auch config.h machen! Dann hat man noch die Default Werte

Ok, wie man aus dem Diagramm oben sieht, ist PB1 = 52 und PB2 = 51.

Du kannst dir jetzt zwei andere Pins suchen, liest die Port-Bezeichnung ab und trägst es da ein. z.B. Pin 23 = PA1

Dann würde man das ändern auf:
#define SIN_PIN PA1
#define SIN_PORT PORTA
#define SIN_DDR DDRA

EDIT:
Du musst noch das ändern:
#define DATA_TRANSFER_MODE TLC_SPI
auf:
#define DATA_TRANSFER_MODE TLC_BITBANG

Hallo Serenifly

Erst mal Danke

Ich habe folgendes geändert:

Orginal

A_TRANSFER_MODE == TLC_BITBANG
/** SIN (TLC pin 26) */
#define SIN_PIN        DEFAULT_BB_SIN_PIN
#define SIN_PORT       DEFAULT_BB_SIN_PORT
#define SIN_DDR        DEFAULT_BB_SIN_DDR
/** SCLK (TLC pin 25) */
#define SCLK_PIN       DEFAULT_BB_SCLK_PIN
#define SCLK_PORT      DEFAULT_BB_SCLK_PORT
#define SCLK_DDR       DEFAULT_BB_SCLK_DDR

geändert

#if DATA_TRANSFER_MODE == TLC_BITBANG
/** SIN (TLC pin 26) */
#define SIN_PIN        PA1
#define SIN_PORT       PORTA
#define SIN_DDR        DDRA
/** SCLK (TLC pin 25) */
#define SCLK_PIN       PA2
#define SCLK_PORT      PRORTA
#define SCLK_DDR       DDRA
#endif

PA1 = PIN23
PA2 = PIN24

Nun habe ich folgende Fehler Meldung

C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp: In member function 'uint8_t Tlc5940::update()':
C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp:183: error: 'PRORTA' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp: In function 'void tlc_shift8_init()':
C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp:309: error: 'PRORTA' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp: In function 'void tlc_shift8(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\Tlc5940\Tlc5940.cpp:321: error: 'PRORTA' was not declared in this scope

Kannst du mir da auch vielleicht weiter helfen?

Bis dann
Ingo

PORTA. Nicht PRORTA :slight_smile:

Hallo Serenifly

Vielen Dank! :slight_smile:

Jetzt funktioniert es.

Da wahr ich wohl zu schnell beim Tippen. :blush:

Bis dann
Ingo