//just simple RGB colorchangebrightenessfader code for anode/kathode RGB (SMD) leds ** 20xy RGB 0603 parralel over s8050 NPN transistor rot,grun,blau (5V) //hihi sometimes searching for a failture in my login and just overread it.. hour gone.. and find it.. stupid little one, making hole code working other than thougght.. //its now multiple 0603 RGB 4stripe, 2 single driver no time left to change rgb leds marked with laser (4x 5V 5 mW laserdiode, 3 with lenses one without ) //cells: 4x 9600mAh supply: 5V 2000mA 8030s npn transistors: 9 (stripes) rest swithing Ground to 5V with STM (with heatsink) charge: 5V max 2A powwerswitch (inside, open magnet holdet cover) //be verry carefull with the thin 0.2mm² lague cooper wires its chaotic much work if one goes broken!) led stabilised with secondgluedrops.. better not try how strong.. //if want to play with laz0rs, cut wires, don't matter stm still running... (better power of before) =^.^= //MEOW there mus one device with micro 1mm RGB stripes.. so quick build last.. // drive leds not tolong white put if changing code.. they running hot and start flickering (bevore goes broken)if want to use more white change 620 (maybe 700 for white with more breaks) // usind: STM32F103C8T6 72Mhz 128kB FLASH 32bit, 20kB RAM saued much I/Os and cheap //MEOW =^.^= #define rot PC13 #define grun PC14 #define blau PC15 #define rot1 PA0 #define grun1 PA1 #define blau1 PA2 #define rot2 PA3 #define grun2 PA4 #define blau2 PA5 #define rot3 PA6 #define grun3 PA7 #define blau3 PB0 #define rot4 PB1 #define grun4 PB10 #define blau4 PB14 #define rot5 PB12 //laseer #define grun5 PB13 //laseer #define blau5 PB14 //laseer #define rot6 PB15 //laseer-lense int duty[4]; int ledmeng=8; int32_t leddata[9][19]; //0rainbowcolor 1bright (auto 2rot 3grun 4blau 5time bright 6time color 7zufallzeit long maintime2=micros(); int32_t rainbow; void setup() { pinMode(rot, OUTPUT); pinMode(grun, OUTPUT); pinMode(blau, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(rot2, OUTPUT); pinMode(grun2, OUTPUT); pinMode(blau2, OUTPUT); pinMode(rot3, OUTPUT); pinMode(grun3, OUTPUT); pinMode(blau3, OUTPUT); pinMode(rot4, OUTPUT); pinMode(grun4, OUTPUT); pinMode(blau4, OUTPUT); pinMode(rot5, OUTPUT); pinMode(grun5, OUTPUT); pinMode(blau5, OUTPUT); pinMode(rot6, OUTPUT); delay(200); } void loop() { zeitreise(); rainbowcalc(); machlicht(); } //0rainbowcolor 1bright (auto 2rot 3grun 4blau 5timebright 6timecolor 7zufallzeitc 8zufallzeitmax 9brightsol 10colorist 11zufall 12timebrightc 13brightplus 14darkplus 15timecolorc void autocolor(void){ for( int diren = 0; diren < ledmeng; diren ++) { if (leddata[diren][7] >leddata[diren][8] || (leddata[diren][1]-1) <= leddata[diren][9] || (leddata[diren][1]+1) >= leddata[diren][9]) { leddata[diren][7]=0; leddata[diren][8]=random(10,40); leddata[diren][11]=random(0,50); leddata[diren][6]=random(5,40); if (leddata[diren][11] <25) { leddata[diren][1]=random(10,50); leddata[diren][5]=random(10,30);} if (leddata[diren][11] >= 25 && leddata[diren][11] <40) { leddata[diren][1]=random(70,100); leddata[diren][5]=random(10,60);} if (leddata[diren][11] >= 40 && leddata[diren][11] <46) { leddata[diren][1]=random(100,220); leddata[diren][5]=random(10,60);} if (leddata[diren][11] >= 46 ) { leddata[diren][1]=random(250,400); leddata[diren][5]=random(0,3);}} if (leddata[diren][12] > leddata[diren][5]) {//bright if (leddata[diren][1] > leddata[diren][9]) {leddata[diren][9]++;} if (leddata[diren][1] < leddata[diren][9]) {leddata[diren][9]--;} leddata[diren][12]=0;} //color if (leddata[diren][16] > leddata[diren][6]) { leddata[diren][16]=0;leddata[diren][0]+=2; }// if (leddata[diren][17] > leddata[diren][18]) { leddata[diren][17]=0; leddata[diren][18]=random(5,30); leddata[diren][1]=0; leddata[diren][5]=random(0,1);}// } } long maintime3=millis(); void zeitreise(void){ while ((micros()- maintime2) >= 5) { for( int dirun = 0; dirun < ledmeng; dirun ++) { leddata[dirun][12]++; leddata[dirun][16]++;} autocolor(); maintime2 = micros(); } while ((millis()- maintime3) >= 1000) { for( int diran = 0; diran < ledmeng; diran ++) {leddata[diran][7]++; leddata[diran][17]++;} maintime3 = millis();} } void rainbowcalc(void) { for( int dirg = 0; dirg < ledmeng; dirg ++) { rainbow=leddata[dirg][0]; if(rainbow >=0 && rainbow <=400) {duty[0] =400; duty[1] =rainbow; duty[2] =0;} //rot ->gelb (rotmax grün+ blau0) if(rainbow >=401 && rainbow <=801) {duty[0] =(400 -(rainbow -401)); duty[1] =400; duty[2] =0;} //gelb ->grün (rot- grünmax blau0) if(rainbow >=802 && rainbow <=1202) {duty[0] =0; duty[1] =400; duty[2] =(rainbow - 802);} //grün ->cyan (rot0 grünmax blau+) if(rainbow >=1203 && rainbow <=1603) {duty[0] =0; duty[1] =(400 -(rainbow - 1203)); duty[2] =400;} //cyan ->blau (rot0 grün- blaumax) if(rainbow >=1604 && rainbow <=2004) {duty[0] =(rainbow-1604); duty[1] =0; duty[2] =400;} //blau ->lila (rot+ grün0 blaumax) if(rainbow >=2005 && rainbow <=2405) {duty[0] =400; duty[1] =0; duty[2] =(400- (rainbow -2006));} //lila ->rot (rotmax grün0 blau-) if(rainbow >= 2406) {rainbow =0; leddata[dirg][0]=0;} leddata[dirg][2]=duty[0]; leddata[dirg][3]=duty[1]; leddata[dirg][4]=duty[2]; }} //10light //11darkness //12cach long startriger=micros(); void machlicht(void) { for( int dien = 0; dien < ledmeng; dien ++) { if (leddata[dien][9] > 200){leddata[dien][14]=leddata[dien][9]-200; leddata[dien][13]=0;} if (leddata[dien][9] <=200){leddata[dien][13]=200-(leddata[dien][9]); leddata[dien][14]=0;} } while ((micros()-startriger) >= 2) { for (int16_t fcount1=0; fcount1 <620; fcount1++) { if (fcount1 == ((401+leddata[1][14])-leddata[1][2])) { digitalWrite(rot, HIGH );} if (fcount1 == ((401+leddata[1][14])-leddata[1][3])) { digitalWrite(grun, HIGH );} if (fcount1 == ((401+leddata[1][14])-leddata[1][4])) { digitalWrite(blau, HIGH );} if (fcount1 == ((401+leddata[2][14])-leddata[2][2])) { digitalWrite(rot1, HIGH );} if (fcount1 == ((401+leddata[2][14])-leddata[2][3])) { digitalWrite(grun1, HIGH );} if (fcount1 == ((401+leddata[2][14])-leddata[2][4])) { digitalWrite(blau1, HIGH );} if (fcount1 == ((401+leddata[3][14])-leddata[3][2])) { digitalWrite(rot2, HIGH );} if (fcount1 == ((401+leddata[3][14])-leddata[3][3])) { digitalWrite(grun2, HIGH );} if (fcount1 == ((401+leddata[3][14])-leddata[3][4])) { digitalWrite(blau2, HIGH );} if (fcount1 == ((401+leddata[4][14])-leddata[4][2])) { digitalWrite(rot3, LOW );} if (fcount1 == ((401+leddata[4][14])-leddata[4][3])) { digitalWrite(grun3, LOW );} if (fcount1 == ((401+leddata[4][14])-leddata[4][4])) { digitalWrite(blau3, LOW );} if (fcount1 == ((401+leddata[5][14])-leddata[5][2])) { digitalWrite(rot4, LOW );} if (fcount1 == ((401+leddata[5][14])-leddata[5][3])) { digitalWrite(grun4, LOW );} if (fcount1 == ((401+leddata[5][14])-leddata[5][4])) { digitalWrite(blau4, LOW );} if (fcount1 == ((401+leddata[6][14])-leddata[6][2])) { digitalWrite(rot5, LOW );} if (fcount1 == ((401+leddata[6][14])-leddata[6][3])) { digitalWrite(grun5, LOW );} if (fcount1 == ((401+leddata[6][14])-leddata[6][4])) { digitalWrite(blau5, LOW );} if (fcount1 == ((401+leddata[7][14])-leddata[7][2])) { digitalWrite(rot6, LOW );} if (fcount1 >= (402+leddata[1][13]) ) { digitalWrite(rot, LOW ); digitalWrite(grun, LOW ); digitalWrite(blau, LOW );} if (fcount1 >= (402+leddata[2][13]) ) { digitalWrite(rot1, LOW ); digitalWrite(grun1, LOW ); digitalWrite(blau1, LOW );} if (fcount1 >= (402+leddata[3][13]) ) { digitalWrite(rot2, LOW ); digitalWrite(grun2, LOW ); digitalWrite(blau2, LOW );} if (fcount1 >= (402+leddata[4][13]) ) { digitalWrite(rot3, HIGH ); digitalWrite(grun3, HIGH ); digitalWrite(blau3, HIGH );} if (fcount1 >= (402+leddata[5][13]) ) { digitalWrite(rot4, HIGH ); digitalWrite(grun4, HIGH ); digitalWrite(blau4, HIGH );} if (fcount1 >= (402+leddata[6][13]) ) { digitalWrite(rot5, HIGH ); digitalWrite(grun4, HIGH ); digitalWrite(grun4, HIGH );} if (fcount1 >= (402+leddata[7][13]) ) { digitalWrite(rot6, HIGH ); } startriger = micros(); } }} //*its marten code so never verry efficient or often used standart variablenames for me just codwriting musst be kind of fun not monotonous thingi.. but stil working fine =^.^=* //its cheaper to buy 4pin none chip RGB leds than WS2812B ever its more solderin work but less powerconsumtion and more brightenes, differen shapes,.....