//program for 14channel 14LEDsripes(11leds/stripe) xmasdecoration //16channel led chaotic fader :3 #define weis1 PB12 #define weis2 PB13 #define weis3 PB14 #define weis4 PB15 #define weis5 PA8 #define weis6 PA9 #define weis7 PA10 #define weis8 PC13 #define weis9 PC14 #define weis10 PC15 #define weis11 PA0 #define weis12 PA1 #define weis13 PA2 #define weis14 PA3 #define weis15 PA4 #define weis16 PA5 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(weis1, OUTPUT); pinMode(weis2, OUTPUT); pinMode(weis3, OUTPUT); pinMode(weis4, OUTPUT); pinMode(weis5, OUTPUT); pinMode(weis6, OUTPUT); pinMode(weis7, OUTPUT); pinMode(weis8, OUTPUT); pinMode(weis9, OUTPUT); pinMode(weis10, OUTPUT); pinMode(weis11, OUTPUT); pinMode(weis12, OUTPUT); pinMode(weis13, OUTPUT); pinMode(weis14, OUTPUT); pinMode(weis15, OUTPUT); pinMode(weis16, OUTPUT); 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=2400; uint8_t oft=3; void machlicht(void) { // |--red only-------| |thats why 600micos interfall is enough without flickering| while ((micros()-startriger) >= 400) { //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 <(multi+3); fcount1++) { if(fcount1 >=4) { if (fcount1 == (multi-(duty[0]*oft))) {digitalWrite(weis1,HIGH);} if (fcount1 == (multi-(duty[1]*oft))) {digitalWrite(weis2,HIGH);} if (fcount1 == (multi-(duty[2]*oft))) {digitalWrite(weis3,HIGH);} if (fcount1 == (multi-(duty[3]*oft))) {digitalWrite(weis4,HIGH);} if (fcount1 == (multi-(duty[4]*oft))) {digitalWrite(weis5,HIGH);} if (fcount1 == (multi-(duty[5]*oft))) {digitalWrite(weis6,HIGH);} if (fcount1 == (multi-(duty[6]*oft))) {digitalWrite(weis7,HIGH);} if (fcount1 == (multi-(duty[7]*oft))) {digitalWrite(weis8,HIGH);} if (fcount1 == (multi-(duty[8]*oft))) {digitalWrite(weis9,HIGH);} if (fcount1 == (multi-(duty[9]*oft))) {digitalWrite(weis10,HIGH);} if (fcount1 == (multi-(duty[10]*oft))) {digitalWrite(weis11,HIGH);} if (fcount1 == (multi-(duty[11]*oft))) {digitalWrite(weis12,HIGH);} if (fcount1 == (multi-(duty[12]*oft))) {digitalWrite(weis13,HIGH);} if (fcount1 == (multi-(duty[13]*oft))) {digitalWrite(weis14,HIGH);} if (fcount1 == (multi-(duty[14]*oft))) {digitalWrite(weis15,HIGH);} if (fcount1 == (multi-(duty[15]*oft))) {digitalWrite(weis16,HIGH);}} if (fcount1 >= (multi+2)) { digitalWrite(weis1, LOW ); digitalWrite(weis2, LOW ); digitalWrite(weis3, LOW ); digitalWrite(weis4, LOW ); digitalWrite(weis5, LOW ); digitalWrite(weis6, LOW ); digitalWrite(weis7, LOW ); digitalWrite(weis8, LOW ); digitalWrite(weis9, LOW ); digitalWrite(weis10, LOW ); digitalWrite(weis11, LOW ); digitalWrite(weis12, LOW ); digitalWrite(weis13,LOW ); digitalWrite(weis14, LOW ); digitalWrite(weis15, LOW ); digitalWrite(weis16, LOW ); }} startriger = micros();} } //free like everythink use it or parts if realy usefull =^.^=