//MEOW =^.^= working awesome get realy high power is laaging every single led with 16V10yf SMD capacito splittet with micro diodes to NPN and PNP over 8050 SMD221 resistor over microdiode to stm //workingawesdome the brightenes is so powerfull the hole thing running hot.. USED 0603 RGB 4 pin with much solder as heatsink an aluplate under board (laserprintongfoil, 3x3000mAh li-ion 3.5mmflat cells (2x 1A charger and 5V2A ste3p up also.. loading rare realibig SMDcapapazitorswow for pulsinf in NPN(3A switchingcurrent x 6) (PNP 500mA switchingcurrent 10x) in ledcapacitors... // oh have no micro SMD diodes this is just 5x4 RGB px led matrix to test if capacitor idea working (working awesome!) must be toxic flammunsoldering microleds from PLASMA tv multilayer systemboard.. the black whaste comming out smells evil if heating little tolong //all leds working, must be a failture somwherer the led don't start.. hope fiond it domorrow (writdown free from mind so its special created for this 20x 0603 RGB led matrix) // its free use it or parts if you wand or its usefull.. using 16gpios coloring 20 RGB SMD (the NPN PNP multiplexer charging capacitor parralel to led over diode led continiu glowing durring other segmens pulsed... so full brightenes lighe connecting to battery.. pictureas oh.. maybe.. the reality is justz evil parasite thing can't just someone stop it?! actually waiting just phone internet, now colorlaserprintwer have new toner and telling me printheaderror..(intensive spiritus cleaning havent fixed seen to be dustvapesnmogdamage on meinboard) no new poster but ones //working onit... //sight so www.marderchen.lima-city.de/NEU+/ put the in the old page.. it agains my persuasion compressing images but internetspeetz and limaspace full.. whatever //changet switchingt the PNP transistors not with GPIO build in smd NPN britch for every PNP caused 3V3 <->5V matrix voltage defizit and build diode brige 5V->3V3 to drive3 wit6h 4.05V (caused higher switchtingvoltage.. stm32 ic also running with 4.2V but getting kind of hot..) //now matrix working of pixels are off and dan drife efevery led in every color seperatly.. #define row10 PB12 #define row9 PB13 #define row8 PB14 #define row7 PB15 #define row6 PA8 #define row5 PA9 #define row4 PA10 #define row3 PB5 #define row2 PB6 #define row1 PB7 #define t1 PA15 #define t2 PA12 #define rot0 PC13 #define grun0 PC14 #define blau0 PC15 #define rot1 PA0 #define grun1 PA1 #define blau1 PA2 uint16_t matrix[7][6][8]; //last: color, brighteness, (autocalculatet: redduty,greenduty,blueduty, whitadder, darkadder) uint16_t womerk[7][6][12]; // lifetime,tragetcolor,tragetspeed,coorruntime,active int8_t onpress[5]; int8_t zeitregen,blinkt,setzen; uint16_t nenraincount=0; long maintime=millis(); long maintime2=micros(); long maintime3=millis(); long isnetime=micros(); int machso =0; void setup() { pinMode(rot0, OUTPUT); pinMode(grun0, OUTPUT); pinMode(blau0, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(row1, OUTPUT); pinMode(row2, OUTPUT); pinMode(row3, OUTPUT); pinMode(row4, OUTPUT); pinMode(row5, OUTPUT); pinMode(row6, OUTPUT); pinMode(row7, OUTPUT); pinMode(row8, OUTPUT); pinMode(row9, OUTPUT); pinMode(row10, OUTPUT); pinMode(t1, INPUT); pinMode(t2, INPUT); noc(); nol(); setsero(); } uint16_t speedup=20; uint16_t randomspeetz=20; uint16_t speedupcounter; void loop() { zeitreise(); machlicht(); //drueckmich(); //matrix[0][0][1]=400; //matrix[0][0][0]=1000; //digitalWrite(B1,HIGH); //capfadetest(); } void drueckmich(void){ if (onpress[4] >=10) { if (digitalRead(t1) == HIGH && onpress[0] ==0 ) { } if (onpress[0] == 1) { onpress[1]++; } if (onpress[1] >= 20) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0 ) { } if (onpress[2] == 1) { onpress[3]++; } if (onpress[3] >= 5) { onpress[3] =0; onpress[2]=0; } blinkt++; onpress[4]=0; }}//tagrum void anirainbow(int8_t ixs, int8_t yps) { if (womerk[ixs][yps][4] ==0){ womerk[ixs][yps][0]=random(5,20); //lifetime womerk[ixs][yps][1]=random(0,2405); //set targetcolor womerk[ixs][yps][2]=random(0,20); //set tgargetfindspeed womerk[ixs][yps][7]=random(200,500); //set brighttarget1 womerk[ixs][yps][8]=random(2,10); //set flashoutspeed womerk[ixs][yps][4]=1; //set active // 1lifetime,1tragetcolor,2tragetspeed,3coorruntime,4active,5tragetspeedram,6colorholdtime,7brighttarge,8flashoutspeed,9flashoutspeedcach } } void setsero(void){ for (int8_t ixig=0; ixig <=5;ixig++) { for (int8_t yrig =0; yrig <=4; yrig++){ for (int8_t diealle =0; diealle <=6; diealle++){ matrix[ixig][yrig][diealle]=0; womerk[ixig][yrig][diealle]=0; }}}} uint8_t malrandomX=random(0,5); uint8_t malrandomY=random(0,4); void zeitreise(void){ while ((millis()- maintime) >= 5) { //onpress[4]++; maintime = millis(); } while ((micros()- isnetime) >= speedup) { diefarben(machso); isnetime = micros(); } while ((micros()- maintime2) >= 100) { maintime2 = micros(); //inactiveout(); } while ((millis()- maintime3) >= 100) { // anirainbow(random(0,5),random(0,4)); for (int8_t spalte=0; spalte <=5;spalte++) { for (int8_t reihe=0; reihe <=4; reihe++){ if (womerk[spalte][reihe][0]>0) {womerk[spalte][reihe][0]--;} }} malrandomX=random(0,5); malrandomY=random(0,4); if (womerk[malrandomX][malrandomY][0]==0){setnew(malrandomX,malrandomY);} speedupcounter++; if (speedupcounter >1200) {speedup=random(5,35); speedupcounter=random(0,800); randomspeetz=random(5+((speedup/5)*2),5+((speedup/4)*2));} maintime3 = millis();}} void setnew(uint8_t xden , uint8_t ydas) { womerk[xden][ydas][0]=random(2,80); //lifetime womerk[xden][ydas][1]=random(0,2405); //set targetcolor matrix[xden][ydas][0]=random(0,2405); //istcolor matrix[xden][ydas][1]=random(300,800); //isthell womerk[xden][ydas][2]=random(0,randomspeetz); //set tgargetfindspeed womerk[xden][ydas][7]=random(0,randomspeetz); //set brightspeed // 1lifetime,1tragetcolor,2tragetspeed,3coorruntime,5tragetspeedram,6colorholdtime,7brightspeed,8brightcach,9flashoutspeedcach } void inactiveout() { for (int8_t nosix=0; nosix <=5;nosix++) { for (int8_t rosiy=0;rosiy <=4; rosiy++){ if (womerk[nosix][rosiy][4]==0 && matrix[nosix][rosiy][1]>0) {matrix[nosix][rosiy][1]--;} }} } uint8_t fastyrain=4; //steppsize uint8_t fastbright=4; //steppsize void diefarben(uint8_t diedann){ if (diedann==0) { for (int8_t foxfer=0; foxfer <=5;foxfer++) { for (int8_t pfoyer=0;pfoyer <=4; pfoyer++){ if (womerk[foxfer][pfoyer][0]>=1) { //pixel aktive womerk[foxfer][pfoyer][5]++; //countimer for next colorstep if(womerk[foxfer][pfoyer][5]> womerk[foxfer][pfoyer][2]) { //react if counter if colorholdtime0 if((matrix[foxfer][pfoyer][0]+fastyrain) > womerk[foxfer][pfoyer][1]){matrix[foxfer][pfoyer][0]-=fastyrain;} //gotocolor if((matrix[foxfer][pfoyer][0]-fastyrain) < womerk[foxfer][pfoyer][1]){matrix[foxfer][pfoyer][0]+=fastyrain;} //gotocolor if ((womerk[foxfer][pfoyer][0]<10)&&(matrix[foxfer][pfoyer][1] > 0)){matrix[foxfer][pfoyer][1]-=(10-womerk[foxfer][pfoyer][0]);}//next activestep womerk[foxfer][pfoyer][5]=0;} womerk[foxfer][pfoyer][8]++; //gotobright if(womerk[foxfer][pfoyer][8]> womerk[foxfer][pfoyer][7]) { if((matrix[foxfer][pfoyer][1]) > 0){matrix[foxfer][pfoyer][1]--;} //fadedown womerk[foxfer][pfoyer][8]=0;} } if (womerk[foxfer][pfoyer][0]<=0 && matrix[foxfer][pfoyer][1]>=1) {matrix[foxfer][pfoyer][1]--;} }}} if (diedann==1) { for (int8_t foxer=0; foxer <=5;foxer++) { for (int8_t poyer=0;poyer <=4; poyer++){ if (womerk[foxer][poyer][4]==1) { //pixel aktive womerk[foxer][poyer][5]++; //countimer for next colorstep if(womerk[foxer][poyer][5]> womerk[foxer][poyer][2]) { //react if counter if colorholdtime0 if(matrix[foxer][poyer][0] > womerk[foxer][poyer][1]){matrix[foxer][poyer][0]--;} //gotocolor if(matrix[foxer][poyer][0] < womerk[foxer][poyer][1]){matrix[foxer][poyer][0]++;} //gotocolor if(matrix[foxer][poyer][1] < womerk[foxer][poyer][7]){matrix[foxer][poyer][1]++;} //gotobright if(matrix[foxer][poyer][0] == womerk[foxer][poyer][1]){ //targetcolorreached womerk[foxer][poyer][6]=random(5,20); // hold colortimeset womerk[foxer][poyer][7]=random(500,800); //set flashtargetbrightness womerk[foxer][poyer][4]=2;} //next activestep womerk[foxer][poyer][5]=0;}} //reset counttime if (womerk[foxer][poyer][4]==2) { //hold color step if (womerk[foxer][poyer][6] >0) {womerk[foxer][poyer][6]--;} if (womerk[foxer][poyer][6] <=0) {womerk[foxer][poyer][4]=3;}} //next steüp if (womerk[foxer][poyer][4]==3) { womerk[foxer][poyer][9]++; //time flashwhuitecount if (womerk[foxer][poyer][9] > womerk[foxer][poyer][8]) { if(matrix[foxer][poyer][1] < womerk[foxer][poyer][7]){matrix[foxer][poyer][1]++;} //gotobright if(matrix[foxer][poyer][1] >= womerk[foxer][poyer][7]){womerk[foxer][poyer][4]=4;} //next step womerk[foxer][poyer][9]=0;}} if (womerk[foxer][poyer][4]==4) { matrix[foxer][poyer][1] =810; //set no light if (womerk[foxer][poyer][0]>1) { womerk[foxer][poyer][0]--;} //wait for making led aviable again if (womerk[foxer][poyer][0]<=0) {womerk[foxer][poyer][4]=0;} //go to stwep0 }}}} } int duty[3]; int rainbow=0; void rainbowcalc(void) { for( int horizon = 0; horizon <=5; horizon++) { for( int senkr = 0; senkr <=4; senkr++) { rainbow=matrix[horizon][senkr][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; matrix[horizon][senkr][0]=0;} matrix[horizon][senkr][2]=duty[0]; matrix[horizon][senkr][3]=duty[1]; matrix[horizon][senkr][4]=duty[2]; }}} long startriger=micros(); int32_t light,darkness,dcach; //1//3//4 void machlicht(void) { for( int xder = 0; xder <=5; xder++) { for( int ydas = 0; ydas <=4; ydas++) { if (matrix[xder][ydas][1] > 400){matrix[xder][ydas][6]=matrix[xder][ydas][1]-400; matrix[xder][ydas][5]=0;}//white 200 white 100color working on brightenes but rainbow running if (matrix[xder][ydas][1] <=400){matrix[xder][ydas][5]=(400-(matrix[xder][ydas][1])); matrix[xder][ydas][6]=0;}//dark 100 color, 0less }} while ((micros()-startriger) >= 1000) {rainbowcalc(); for (int8_t spalten=0; spalten <=4; spalten++) { for (int8_t liene=0; liene <=2; liene+=2) { nol(); if (liene==0) { if (spalten==0) { digitalWrite(row1, LOW );} if (spalten==1) { digitalWrite(row3, LOW );} if (spalten==2) { digitalWrite(row5, LOW );} if (spalten==3) { digitalWrite(row7, LOW );} if (spalten==4) { digitalWrite(row9, LOW );} } if (liene==2) { if (spalten==0) { digitalWrite(row2, LOW );} if (spalten==1) { digitalWrite(row4, LOW );} if (spalten==2) { digitalWrite(row6, LOW );} if (spalten==3) { digitalWrite(row8, LOW );} if (spalten==4) { digitalWrite(row10, LOW );} } for (uint16_t fcount1=0; fcount1 <=802; fcount1++) { // if (fcount1 == 0) {noc();} if (fcount1 <= 399 && fcount1 >=1) { if (matrix[spalten][liene][1]>0) { if (fcount1 == ((401+matrix[spalten][liene][5])-matrix[spalten][liene][2])) { digitalWrite(rot0, HIGH );} if (fcount1 == ((401+matrix[spalten][liene][5])-matrix[spalten][liene][3])) { digitalWrite(grun0, HIGH );} if (fcount1 == ((401+matrix[spalten][liene][5])-matrix[spalten][liene][4])) { digitalWrite(blau0, HIGH );}} if (matrix[spalten][liene+1][1]>0){ if (fcount1 == ((401+matrix[spalten][liene+1][5])-matrix[spalten][liene+1][2])) { digitalWrite(rot1, HIGH );} if (fcount1 == ((401+matrix[spalten][liene+1][5])-matrix[spalten][liene+1][3])) { digitalWrite(grun1, HIGH );} if (fcount1 == ((401+matrix[spalten][liene+1][5])-matrix[spalten][liene+1][4])) { digitalWrite(blau1, HIGH );}} } if (fcount1 == (400 + matrix[spalten][liene][6])) { digitalWrite(rot0, LOW );} if (fcount1 == (400 + matrix[spalten][liene][6])) { digitalWrite(grun0, LOW );} if (fcount1 == (400 + matrix[spalten][liene][6])) { digitalWrite(blau0, LOW );} if (fcount1 == (400 + matrix[spalten][liene+1][6])) { digitalWrite(rot1, LOW );} if (fcount1 == (400 + matrix[spalten][liene+1][6])) { digitalWrite(grun1, LOW );} if (fcount1 == (400 + matrix[spalten][liene+1][6])) { digitalWrite(blau1, LOW );} if (fcount1 >= 801) {noc();} } nol(); } }startriger = micros();}} void nol(void) { digitalWrite(row1,HIGH); digitalWrite(row2,HIGH); digitalWrite(row3,HIGH); digitalWrite(row4,HIGH); digitalWrite(row5,HIGH); digitalWrite(row6,HIGH); digitalWrite(row7,HIGH); digitalWrite(row8,HIGH); digitalWrite(row9,HIGH); digitalWrite(row10,HIGH); } void noc(void) { digitalWrite(rot0,LOW); digitalWrite(grun0,LOW); digitalWrite(blau0,LOW); digitalWrite(rot1,LOW); digitalWrite(grun1,LOW); digitalWrite(blau1,LOW); } /* int heller=0; void capfadetest(void) { while ((micros()-startriger) >= 1500) { digitalWrite(grun1,HIGH); for (int8_t colorz=1; colorz <=3; colorz++) { for (int8_t liene=1; liene <=2; liene++) { for (int16_t fcount1=0; fcount1 <2002; fcount1++) { if (fcount1 == (2000-heller)){ digitalWrite(B1, LOW); } if (fcount1 >= 2000) {digitalWrite(B1, HIGH);} }}} startriger = micros(); heller++; if (heller >2000) {heller=0;} } } */ // [MEOW] more rainbowpower!