Hallo,
ich stehe gerade bei einem simplen Problem auf dem Schlauch ![]()
Das hier funktioniert:
int takt = 9; // SH_CP
int speicher = 8; // ST_CP
int daten = 10; // DS
int dimPin = 6;
byte a[]={
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00000100,
0b00000010
};
int i;
void setup(){
pinMode(takt, OUTPUT);
pinMode(speicher, OUTPUT);
pinMode(daten, OUTPUT);
pinMode(dimPin, OUTPUT);
analogWrite(dimPin, 0);
}
void loop(){
for(i=0;i<14;i++){
digitalWrite(speicher, LOW);
shiftOut(daten, takt, MSBFIRST, a[i]);
digitalWrite(speicher, HIGH);
delay(200);
}
}
Ich will aber das hier als eigene Funktion, z.b. void shift595 in die void setup auslagern, so das ich dann shift595 i direkt übergeben kann. So würde ich diese 3 Zeilen Code nur 1x als Funktion definieren.
Sinn des Ganzen ist, das ich noch ein paar Muster mehr ins Arry packe und die dann über shift595 direkt anspringe. Wie muß ich vorgehen? Ich kriege ums Verrecken nicht i (wofür ich dann ganze Zahlen nehme) übergeben ![]()
An analogWrite(dimPin, 0); stört euch mal nicht, das geht auf den Output Enable des 595. Später gehört dann optional noch ein analoger Eingang mit Fototransistor dazu. Das funktioniert in einem anderen Projekt so und ich habe den Code nur als Option gelassen und hart verdahtet, für volle Helligkeit.
Genau deswegen nutze ich nicht die I/O's des Arduino, sondern nehme den 595, da ich dann alle Ausgänge auf eine gemeinsame Helligkeit dimmen kann. Der 328 hat keine 8 dimmbaren Ausgänge ![]()
Gruß Gerald