//seens to be this is the kote running on the 5mm micro Tablet SMD multilightfader White polaris star //simple maybe change it if want //case open cover magnet holted (not to carry round on microled PEAK) //original Acryl polaris in plastic box be carefull ACRYL verry easy goes broken :3 //Project by marderchen MEOW =^.^= have fun #define rot PC13 #define grun PC14 #define blau PC15 #define rot1 PA0 #define grun1 PA1 #define blau1 PA2 #define w01 PA3 #define w02 PA4 #define w03 PA5 #define w04 PA6 #define w05 PA7 #define w06 PA8 #define w07 PB12 #define w08 PB13 #define w09 PB14 #define w10 PB15 #define w11 PA9 #define w12 PA10 #define w13 PB7 #define w14 PB8 #define w15 PB9 #define w16 PB11 /* #define grun7 PB5 #define blau7 PB6 #define rot8 PB10 #define grun8 PB1 #define blau8 PB0 //can be addet more just no pins left */ #define t1 PA15 #define t2 PA12 //#define weis PB4 int ledmeng=15; int duty[8]; int dutys[27]; int dutysol[27][8]; //0 = zielwert, 1= zielwert plushaktor,2 zielwert minusfaktor, 3= repeattempo,4= zeitzählerrepeat,5=erreichtmerker 6gehauscounter,7 gehauszeitlimit int hilfscach[27]; int slowly,zeitchange,zeitchange2,farbenso,irgentwas,rainbow,brightcach,bouncer,zwicker; int zeit[12]; int zeitlimitz,zeitlimit1,zeitlimit2,zeitlimit3,zeitlimit4,zeitlimit5,zeitlimit6,zeitlimit7,zeitlimit8,zeitlimit9,zeitlimit10,zeitlimit11; int denda,zeitlimitscach; int rainbowcach,bright; int wuseldiezeit1=5; int wuseldiezeit2=400; int rainzspeedy=1; int brightspeedy=1; int bounce =false; long maintime=millis(); long maintime2=micros(); long maintime3=millis(); void setup() { pinMode(rot, OUTPUT); pinMode(grun, OUTPUT); pinMode(blau, OUTPUT); pinMode(rot1, OUTPUT); pinMode(grun1, OUTPUT); pinMode(blau1, OUTPUT); pinMode(w01, OUTPUT); pinMode(w02, OUTPUT); pinMode(w03, OUTPUT); pinMode(w04, OUTPUT); pinMode(w05, OUTPUT); pinMode(w06, OUTPUT); pinMode(w07, OUTPUT); pinMode(w08, OUTPUT); pinMode(w09, OUTPUT); pinMode(w10, OUTPUT); pinMode(w11, OUTPUT); pinMode(w12, OUTPUT); pinMode(w13, OUTPUT); pinMode(w14, OUTPUT); pinMode(w15, OUTPUT); pinMode(w16, OUTPUT); /* pinMode(grun7, OUTPUT); pinMode(blau7, OUTPUT); pinMode(rot8, OUTPUT); pinMode(grun8, OUTPUT); pinMode(blau8, OUTPUT); pinMode(weis, OUTPUT); */ pinMode(t1, INPUT); //using it later still writi9ng maybe to sett brightenes or speed spectrum pinMode(t2, INPUT); } void loop() { zeitreise(); bisselRGBregenbogenfun(); andersspeed(); nofading(); wuschelgesamtspeed(); rainbowcalc(); machlicht(); wuseldieabwechslung(); assimiliercach(); } void wuschelgesamtspeed(void) { if (zeit[10] > zeitlimit10) {zeit[10]=0; zeitlimit10=random(5,60); wuseldiezeit1=random(1,9); wuseldiezeit2=random(100,600); }//ori wusel1 =5, ori wusel2 =400 } void nofading(void) { if (zeit[9] > zeitlimit9) {zeit[9]=0; bouncer=random(0,20); zeitlimit9=random(5,40); if (bouncer <=15) {bounce=false;} if (bouncer >15) {bounce=true;}} } void wuseldieabwechslung(void) { if (slowly >zeitchange) {zeitchange=random(15,90); slowly=0; farbenso=random(0,9); if (irgentwas > zeitchange2) {zeitchange2=random(10,30); irgentwas=0; } if (farbenso==0) {wuselzumzufall();} if (farbenso==1 ){ lauflicht();} if (farbenso==2) { lauflicht(); nurrandomviele();} if (farbenso==3) { nurrandomviele();} if (farbenso==4) { wuselzumzufall(); } if (farbenso==6) { switching();} if (farbenso==7) { switching(); wuselzumzufall();} if (farbenso==8) { nurrandomviele(); wuselzumzufall();} if (farbenso==9) { lauflicht(); wuselzumzufall();} } } void switching(void){ if (zeit[11] > zeitlimit11) {zeit[11]=0; zwicker=random(0,1); zeitlimit11=random(1,15); for( int zwick= 0; zwick < ledmeng; zwick++) { if (zwick == 3 || zwick == 6 || zwick ==10 || zwick == 13) { if (zwicker==0) {dutysol[zwick][0]= random(650,800);} if (zwicker==1) {dutysol[zwick][0]= random(0,20);}} else { if (zwicker==1) {dutysol[zwick][0]= random(650,800);} if (zwicker==0) {dutysol[zwick][0]= random(0,20);}} } }} void wuselzumzufall(void) { if (zeit[1] > zeitlimitz) {zeit[1]=0; denda=random(0,ledmeng); dutysol[denda][0]=random(0,800); zeitlimitz=random(10,100);} if (zeit[2] >zeitlimitscach) {zeit[2]=0; zeitlimitscach=random(2,10); } } void nurrandomviele(void){ for( int durchgehen = 0; durchgehen < ledmeng; durchgehen++) { if (denda != durchgehen) {dutysol[durchgehen][0]-=dutysol[durchgehen][2];} }} void lauflicht(void) { if (zeit[1] > zeitlimitz) {zeit[1]=0; denda++; if (denda> ledmeng) {denda=0;}dutysol[denda][0]=random(600,800);} } void andersspeed(void) { if (zeit[2] >zeitlimitscach) {zeit[2]=0; zeitlimitz=random(10,100); zeitlimitscach=random(2,10); for( int flausch = 0; flausch < ledmeng; flausch++) { if (dutysol[flausch][5] ==1) {dutysol[flausch][0] =0; dutysol[flausch][5]=0; dutysol[flausch][1]=random(1,4); dutysol[flausch][2]=random(1,5); dutysol[flausch][3]=random(0,6);} }} } void assimiliercach(void) { for( int katzenkoennennichtzaehlen = 0; katzenkoennennichtzaehlen < ledmeng; katzenkoennennichtzaehlen++) { if (bounce ==false){ if (dutysol[katzenkoennennichtzaehlen][4] > dutysol[katzenkoennennichtzaehlen][3]) { if (dutys[katzenkoennennichtzaehlen] < dutysol[katzenkoennennichtzaehlen][0]){ dutys[katzenkoennennichtzaehlen]+=dutysol[katzenkoennennichtzaehlen][1];} if (dutys[katzenkoennennichtzaehlen] > dutysol[katzenkoennennichtzaehlen][0]){ dutys[katzenkoennennichtzaehlen]-=dutysol[katzenkoennennichtzaehlen][2];} if (dutys[katzenkoennennichtzaehlen] >= (dutysol[katzenkoennennichtzaehlen][0]-20)|| dutys[katzenkoennennichtzaehlen] <= (dutysol[katzenkoennennichtzaehlen][0]+20) && dutysol[katzenkoennennichtzaehlen][5] ==0 ){ dutysol[katzenkoennennichtzaehlen][5]=1;} dutysol[katzenkoennennichtzaehlen][4]=0; }} if (bounce ==true) {dutys[katzenkoennennichtzaehlen]=dutysol[katzenkoennennichtzaehlen][0];} }} void bisselRGBregenbogenfun(void) { if (zeit[3] > zeitlimit3) {zeit[3]=0; rainbowcach+=rainzspeedy; if (rainbowcach > 2406) {rainbowcach=0;} if (rainbow < rainbowcach) {rainbow+=rainzspeedy;} if (rainbow > rainbowcach) {rainbow-=rainzspeedy;}} if (zeit[4] > zeitlimit4) {zeit[4]=0; zeitlimit4=random(3,60); zeitlimit3=random(1,10);} if (zeit[5] > zeitlimit5) {zeit[5]=0; rainbowcach=random(0,2406); zeitlimit5=random(5,30); rainzspeedy=random(1,10);} if (zeit[6] > zeitlimit6) {zeit[6]=0; brightcach=random(0,400); zeitlimit6=random(5,60); zeitlimit8=random(5,60); } if (zeit[7] > zeitlimit7) {zeit[7]=0; brightspeedy=random(1,6); zeitlimit7=random(5,60);} if (zeit[8] > zeitlimit8) {zeit[8]=0; if (bright < brightcach) {bright+=brightspeedy;} if (bright > brightcach) {bright-=brightspeedy;}} } void zeitreise(void){ while ((millis()- maintime) >= wuseldiezeit1) { for( int ticktack = 0; ticktack < ledmeng; ticktack++) { if (bounce==false) {dutysol[ticktack][4]++; } }slowly++; zeit[1]++; zeit[8]++; maintime = millis(); } while ((micros()- maintime2) >= wuseldiezeit2) { zeit[3]++; maintime2 = micros(); } while ((millis()- maintime3) >= 1000) { zeit[2]++; zeit[4]++; zeit[5]++; zeit[6]++; zeit[7]++; zeit[9]++; zeit[10]++; zeit[11]++; for( int endtime = 0; endtime < ledmeng; endtime++) { if (dutysol[endtime][5]== 0) {dutysol[endtime][6]++;} if (dutysol[endtime][6] > dutysol[endtime][7]){dutysol[endtime][7]=random(5,15); dutysol[endtime][6]=0; dutysol[endtime][5]=1;}} maintime3 = millis(); }} void rainbowcalc(void) { 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;} } //10light //11darkness //12cach long startriger=micros(); void machlicht(void) { while ((micros()-startriger) >= 2) { for (int32_t fcount1=0; fcount1 <(804); fcount1++) { if (fcount1 == (401-duty[0])) {digitalWrite(rot,HIGH);} if (fcount1 == (401-duty[1])) {digitalWrite(grun,HIGH);} if (fcount1 == (401-duty[2])) {digitalWrite(blau,HIGH);} if (fcount1 == (801-dutys[0])) {digitalWrite(w01,HIGH);} if (fcount1 == (801-dutys[1])) {digitalWrite(w02,HIGH);} if (fcount1 == (801-dutys[2])) {digitalWrite(w03,HIGH);} if (fcount1 == (801-dutys[3])) {digitalWrite(w04,HIGH);} if (fcount1 == (801-dutys[4])) {digitalWrite(w05,HIGH);} if (fcount1 == (801-dutys[5])) {digitalWrite(w06,HIGH);} if (fcount1 == (801-dutys[6])) {digitalWrite(w07,HIGH);} if (fcount1 == (801-dutys[7])) {digitalWrite(w08,HIGH);} if (fcount1 == (801-dutys[8])) {digitalWrite(w09,HIGH);} if (fcount1 == (801-dutys[9])) {digitalWrite(w10,HIGH);} if (fcount1 == (801-dutys[10])) {digitalWrite(w11,HIGH);} if (fcount1 == (801-dutys[11])) {digitalWrite(w12,HIGH);} if (fcount1 == (801-dutys[12])) {digitalWrite(w13,HIGH);} if (fcount1 == (801-dutys[13])) {digitalWrite(w14,HIGH);} if (fcount1 == (801-dutys[14])) {digitalWrite(w15,HIGH);} if (fcount1 == (801-dutys[15])) {digitalWrite(w16,HIGH);} if (fcount1 >= (402 + bright)) {digitalWrite(rot, LOW ); digitalWrite(grun, LOW ); digitalWrite(blau, LOW );} if (fcount1 >= 802) { digitalWrite(w01, LOW ); digitalWrite(w02, LOW ); digitalWrite(w03, LOW ); digitalWrite(w04, LOW ); digitalWrite(w05, LOW ); digitalWrite(w06, LOW ); digitalWrite(w07, LOW ); digitalWrite(w08, LOW ); digitalWrite(w09, LOW ); digitalWrite(w10, LOW ); digitalWrite(w11, LOW ); digitalWrite(w12, LOW ); digitalWrite(w13, LOW ); digitalWrite(w14, LOW ); digitalWrite(w15, LOW ); digitalWrite(w16, LOW ); } } startriger = micros(); } } //free like everythink use it or parts if realy usefull =^.^=