//super simplen program for driving this https://marderchen.lima-city.de/NEU+/matrix_smdcircuit.jpg a 12GPIO (6channel,6colors,3x5mm leds/36channeltotal) the FLASHING colorSpot light fo the transparentprint mirror background catsPURRRRRt poster.. //its working but idea from mind so not aways optimal far tomuch led glowing from settet of ones.. have to find hasrdware or kot sulution.. // https://marderchen.lima-city.de/NEU+/matrixcontrolworking_butmuchbackglowing.jpg //actualy function flashing chaoticly of not actualy fading out on one of the 36channel every tenth part of second and fading it out.. //MEOW its free use it or parts if usefull.. lines =PNP, LEDcolors = NPN #define line1 PB12 #define line2 PB13 #define line3 PB14 #define line4 PB15 #define line5 PB5 #define line6 PB6 #define t1 PA8 #define t2 PA9 #define t3 PA10 #define t4 PA12 #define t5 PA15 #define rot PC13 #define gelb PC14 #define grun PC15 #define blau PA0 #define UV PA1 #define white PA2 int8_t onpress[15]; uint16_t spotbattery[7][7][5]; void setup() { delay(500); pinMode(rot, OUTPUT); pinMode(gelb, OUTPUT); pinMode(grun, OUTPUT); pinMode(blau, OUTPUT); pinMode(UV, OUTPUT); pinMode(white, OUTPUT); pinMode(line1, OUTPUT); pinMode(line2, OUTPUT); pinMode(line3, OUTPUT); pinMode(line4, OUTPUT); pinMode(line5, OUTPUT); pinMode(line6, OUTPUT); pinMode(t1, INPUT); pinMode(t2, INPUT); pinMode(t3 ,INPUT); pinMode(t4 ,INPUT); pinMode(t5 ,INPUT); digitalWrite(line1,HIGH); digitalWrite(line2,HIGH); digitalWrite(line3,HIGH); digitalWrite(line4,HIGH); digitalWrite(line5,HIGH); digitalWrite(line6,HIGH); } uint16_t laaag,zeit1; uint16_t timeon=20; uint16_t speedzi=600; void loop() { zeitreise(); istinput(); //spotbattery[drei][2][0]=25; } void istinput(void){ if (zeit1 >=2) { if (digitalRead(t1) == HIGH && onpress[0] ==0) { onpress[0] =1; timeon++;} if (onpress[0] == 1) { onpress[1]++; } if (onpress[1] >= 20) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0) { onpress[2] =1; timeon--; } if (onpress[2] == 1) { onpress[3]++;} if (onpress[3] >= 25) { onpress[3] =0; onpress[2]=0; } if (digitalRead(t3) == HIGH && onpress[4] ==0) { onpress[4] =1; } if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] >= 10) { onpress[5] =0; onpress[4]=0; } if (digitalRead(t4) == HIGH && onpress[6] ==0) { onpress[6] =1; speedzi++;} if (onpress[6] == 1) { onpress[7]++; } if (onpress[7] >= 10) { onpress[7] =0; onpress[6]=0;} if (digitalRead(t5) == HIGH && onpress[8] ==0) { onpress[8] =1; speedzi++; } if (onpress[8] == 1) { onpress[9]++;} if (onpress[9] >= 10) { onpress[9] =0; onpress[8]=0; } zeit1=0;} } long maintime=millis(); long maintime2=millis(); long maintime3=micros(); long timez=millis(); long flash=micros(); void zeitreise(void){ while ((millis()- maintime) >= 5){zeit1++; maintime = millis();} while ((micros()- maintime3) >= speedzi) { maintime3 = micros();} while ((millis()- maintime2) >= 10) {negativation(); maintime2 = millis();} while ((millis()- timez) >= 100) {timez = millis(); choseone(random(0,36));} while ((micros()-flash) >= 1000) { schaltzeugs(laaag); flash = micros();} } long sunriger=micros(); void negativation(void){ for (int8_t eins=0; eins <=5; eins++) { for (int8_t zwei=0;zwei <=5; zwei++) { if( spotbattery[eins][zwei][0] >0) { spotbattery[eins][zwei][0]--;}}} } uint8_t merkdirdas=0; void choseone (uint8_t ones){ merkdirdas=0; for (int8_t drei=0; drei <=5; drei++) { for (int8_t vier=0;vier <=5; vier++) { merkdirdas++; if (merkdirdas == ones && spotbattery[drei][vier][0] ==0) {spotbattery[drei][vier][0]=30;}}} } void schaltzeugs(uint16_t laaag) { noled();norest(); for (int8_t welchs=0; welchs <=5; welchs++) { if (welchs==0) { digitalWrite(rot, HIGH );} if (welchs==1) { digitalWrite(gelb,HIGH );} if (welchs==2) { digitalWrite(grun,HIGH );} if (welchs==3) { digitalWrite(blau,HIGH );} if (welchs==4) { digitalWrite(UV, HIGH );} if (welchs==5) { digitalWrite(white,HIGH );} for (int8_t laag=0; laag <=31; laag++) { if (laag == 0) {norest();} if (laag <= 30 && laag >=1) { if (laag == (30-spotbattery[welchs][0][0])) { digitalWrite(line1, LOW );} if (laag == (30-spotbattery[welchs][1][0])) { digitalWrite(line2, LOW );} if (laag == (30-spotbattery[welchs][2][0])) { digitalWrite(line3, LOW );} if (laag == (30-spotbattery[welchs][3][0])) { digitalWrite(line4, LOW );} if (laag == (30-spotbattery[welchs][4][0])) { digitalWrite(line5, LOW );} if (laag == (30-spotbattery[welchs][5][0])) { digitalWrite(line6, LOW );} } if (laag >=30) {noled();norest();} }}} void noled(void) {digitalWrite(rot,LOW); digitalWrite(gelb,LOW); digitalWrite(grun,LOW); digitalWrite(blau,LOW); digitalWrite(UV,LOW); digitalWrite(white,LOW);} void norest(void) {digitalWrite(line1,HIGH); digitalWrite(line2,HIGH); digitalWrite(line3,HIGH); digitalWrite(line4,HIGH); digitalWrite(line5,HIGH); digitalWrite(line6,HIGH); } // [MEOW] more rainbowpower!