//program for 64 LED (32red,32blue,8ch/color) 3mm led star //16channel led fader :3 #define rot1 PB12 #define blau1 PB13 #define rot2 PB14 #define blau2 PB15 #define rot3 PA8 #define blau3 PA9 #define rot4 PA10 #define blau4 PB5 #define rot5 PB6 #define blau5 PB7 #define rot6 PB8 #define blau6 PB9 #define rot7 PC14 #define blau7 PC13 #define rot8 PC15 #define blau8 PA0 #define t1 PA15 #define t2 PA12 #define t3 PB10 #define t4 PB11 uint8_t ledsviele=16; uint16_t duty[17]; uint16_t sollso[17][3]; //[0]=0=downfade [0]=1=upfade maybe need some mote below arrays later.. long maintime=micros(); long maintime2=millis(); long maintime3=millis(); void setup() { pinMode(rot1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(rot2, OUTPUT); pinMode(blau2, OUTPUT); pinMode(rot3, OUTPUT); pinMode(blau3, OUTPUT); pinMode(rot4, OUTPUT); pinMode(blau4, OUTPUT); pinMode(rot5, OUTPUT); pinMode(blau5, OUTPUT); pinMode(rot6, OUTPUT); pinMode(blau6, OUTPUT); pinMode(rot7, OUTPUT); pinMode(blau7, OUTPUT); pinMode(rot8, OUTPUT); pinMode(blau8, OUTPUT); pinMode(t1, INPUT); pinMode(t2, INPUT); pinMode(t3, INPUT); pinMode(t4, INPUT); //soldered them but not used un kote maybe later :3 delay(100); } void loop() { zeitreise(); machlicht(); } void fillrandom(void){ uint16_t picone=random(0,ledsviele); if(sollso[picone][0]==0){ sollso[picone][0]=1;} } void applysollso(void) { for (uint16_t s=0; s1) {duty[s]--;} if(sollso[s][0]==1 && duty[s] <800) {duty[s]++;} if(sollso[s][0]==1 && duty[s] >=800) {sollso[s][0]=0;} }} uint16_t neusetzspeed =400; uint16_t fadespeed=100; uint8_t timevorbei=0; uint8_t vieltime=10; void zeitreise(void){ while ((micros()- maintime) >= fadespeed) { applysollso(); maintime = micros(); } while ((millis()- maintime2) >= neusetzspeed) { fillrandom(); maintime2 = millis(); } while ((millis()- maintime3) >= 1000) { timevorbei++; if (timevorbei > vieltime) { timevorbei=0; vieltime=random(2,10); fadespeed=random(1,15,)*50; neusetzspeed=random(1,10)*100; } maintime3 = millis(); }} long startriger=micros(); uint16_t multi=1600; uint8_t oft=2; void machlicht(void) { // |--red only-------| |thats why 600micos interfall is enough without flickering| while ((micros()-startriger) >= 600) { //leds solderedlike this: STM32F103C8T6 GPIO-> 470R smd resistor ->D882 (3Ampere SMD NPN transistors)->SMD dioden resistor-> 4parralel LEDs+parallel 33uF10Volt tantalcapacitor to +3V3 from AMS1117 regulator.. for (uint16_t fcount1=0; fcount1 <(1603); fcount1++) { if(fcount1 >=4) { if (fcount1 == (multi-(duty[0]*oft))) {digitalWrite(rot1,HIGH);} if (fcount1 == (multi-(duty[1]*oft))) {digitalWrite(blau1,HIGH);} if (fcount1 == (multi-(duty[2]*oft))) {digitalWrite(rot2,HIGH);} if (fcount1 == (multi-(duty[3]*oft))) {digitalWrite(blau2,HIGH);} if (fcount1 == (multi-(duty[4]*oft))) {digitalWrite(rot3,HIGH);} if (fcount1 == (multi-(duty[5]*oft))) {digitalWrite(blau3,HIGH);} if (fcount1 == (multi-(duty[6]*oft))) {digitalWrite(rot4,HIGH);} if (fcount1 == (multi-(duty[7]*oft))) {digitalWrite(blau4,HIGH);} if (fcount1 == (multi-(duty[8]*oft))) {digitalWrite(rot5,HIGH);} if (fcount1 == (multi-(duty[9]*oft))) {digitalWrite(blau5,HIGH);} if (fcount1 == (multi-(duty[10]*oft))) {digitalWrite(rot6,HIGH);} if (fcount1 == (multi-(duty[11]*oft))) {digitalWrite(blau6,HIGH);} if (fcount1 == (multi-(duty[12]*oft))) {digitalWrite(rot7,HIGH);} if (fcount1 == (multi-(duty[13]*oft))) {digitalWrite(blau7,HIGH);} if (fcount1 == (multi-(duty[14]*oft))) {digitalWrite(rot8,HIGH);} if (fcount1 == (multi-(duty[15]*oft))) {digitalWrite(blau8,HIGH);}} if (fcount1 >= (multi+2)) { digitalWrite(rot1, LOW ); digitalWrite(blau1, LOW ); digitalWrite(rot2, LOW ); digitalWrite(blau2, LOW ); digitalWrite(rot3, LOW ); digitalWrite(blau3, LOW ); digitalWrite(rot4, LOW ); digitalWrite(blau4, LOW ); digitalWrite(rot5, LOW ); digitalWrite(blau5, LOW ); digitalWrite(rot6, LOW ); digitalWrite(blau6, LOW ); digitalWrite(rot7, LOW ); digitalWrite(blau7, LOW ); digitalWrite(rot8, LOW ); digitalWrite(blau8, LOW ); }} startriger = micros();} } //free like everythink use it or parts if realy usefull =^.^=