Hi,
Ich habe 4 TLC59116 LED Treiber, die an einem I2C Bus hängen. Sie werden wie folgt eingerichtet:
#include <TLC59116.h>
TLC59116 board1(0);
TLC59116 board2(1);
TLC59116 board3(2);
TLC59116 board4(3);
Im Setup so:
board1.begin();
board2.begin();
board3.begin();
board4.begin();
in der loop möchte ich dann aber verschiedene Kombinationen an die TLC schicken:
void loop() {
kombinationa(1);
delay(2000);
kombinationb(2);
delay(2000);
kombinationc(3);
delay(2000);
kombinationd(4);
delay(2000);
}
Dazu gibt es dann diese Funktinen:
void kombinationa(byte stelle)
momentan muss ich aber die Stelle übergeben und dann mit einer If funktion filtern:
void kombinationa(byte stelle) {
if (stelle == 1) {
board1.analogWrite(0, 255);
board1.analogWrite(1, 255);
board1.analogWrite(2, 255);
board1.analogWrite(3, 0);
board1.analogWrite(4, 0);
board1.analogWrite(5, 255);
board1.analogWrite(6, 0);
board1.analogWrite(7, 0);
board1.analogWrite(8, 255);
board1.analogWrite(9, 255);
board1.analogWrite(10, 255);
board1.analogWrite(11, 0);
board1.analogWrite(12, 255);
board1.analogWrite(13, 0);
board1.analogWrite(14, 255);
board1.analogWrite(15, 255);
}
if (stelle == 2) {
board2.analogWrite(0, 255);
board2.analogWrite(1, 255);
board2.analogWrite(2, 255);
board2.analogWrite(3, 0);
board2.analogWrite(4, 0);
board2.analogWrite(5, 255);
board2.analogWrite(6, 0);
board2.analogWrite(7, 0);
board2.analogWrite(8, 255);
board2.analogWrite(9, 255);
board2.analogWrite(10, 255);
board2.analogWrite(11, 0);
board2.analogWrite(12, 255);
board2.analogWrite(13, 0);
board2.analogWrite(14, 255);
board2.analogWrite(15, 255);
}
if (stelle == 3) {
board3.analogWrite(0, 255);
board3.analogWrite(1, 255);
board3.analogWrite(2, 255);
board3.analogWrite(3, 0);
board3.analogWrite(4, 0);
board3.analogWrite(5, 255);
board3.analogWrite(6, 0);
board3.analogWrite(7, 0);
board3.analogWrite(8, 255);
board3.analogWrite(9, 255);
board3.analogWrite(10, 255);
board3.analogWrite(11, 0);
board3.analogWrite(12, 255);
board3.analogWrite(13, 0);
board3.analogWrite(14, 255);
board3.analogWrite(15, 255);
}
if (stelle == 4) {
board4.analogWrite(0, 255);
board4.analogWrite(1, 255);
board4.analogWrite(2, 255);
board4.analogWrite(3, 0);
board4.analogWrite(4, 0);
board4.analogWrite(5, 255);
board4.analogWrite(6, 0);
board4.analogWrite(7, 0);
board4.analogWrite(8, 255);
board4.analogWrite(9, 255);
board4.analogWrite(10, 255);
board4.analogWrite(11, 0);
board4.analogWrite(12, 255);
board4.analogWrite(13, 0);
board4.analogWrite(14, 255);
board4.analogWrite(15, 255);
}
}
Das geht doch bestimmt viel schöner oder?
Es gibt 50 verschiedene Kombinationen, das würden 4500 Zeilen Code bedeuten ![]()
nun zur Frage:
Wie kann ich das BoardX direkt übergeben und dann die Kombination nur einmal anlegen?
also quasi sowas:
void loop() {
kombinationa(board1);
delay(2000);
kombinationb(board2);
delay(2000);
kombinationc(board3);
delay(2000);
kombinationd(board4);
delay(2000);
}
void kombinationa(byte stelle) {
stelle.analogWrite(0, 255);
stelle.analogWrite(1, 255);
stelle.analogWrite(2, 255);
stelle.analogWrite(3, 0);
stelle.analogWrite(4, 0);
stelle.analogWrite(5, 255);
stelle.analogWrite(6, 0);
stelle.analogWrite(7, 0);
stelle.analogWrite(8, 255);
stelle.analogWrite(9, 255);
stelle.analogWrite(10, 255);
stelle.analogWrite(11, 0);
stelle.analogWrite(12, 255);
stelle.analogWrite(13, 0);
stelle.analogWrite(14, 255);
stelle.analogWrite(15, 255);
}