// the ORIGINAL marten CHAOS polaris star with 3D effect using: // layers tabletbacklight light knickering foil 100%mirrorfoil so try to polish //aluminium with caramic well worked grinding stone.. labled PENTIUM and oil + clear laque against oxidation.. //thistime use.. never seen smaler brighter leds.. source: tablet backlight (soldering realy fine work) they are verry much brighter than 1.8mm but cant get full power even if powering STM with 3.42V constand source // maybe buy NPN S8050 25V 1.5A transistors as led amplifier.. caused they are cheap // *each eye become diferent picture so awsome none reality 3D mind fucking effect.. // my created shape as svg http://marderchen.de/NEU/led_BLEND_STARTRY_printcutshape.svg (colored): http://marderchen.de/NEU/led_BLEND_STARTRY2.svg //the differnt length peaks and the fading/changing different brighteness durring running creating typical 3D stareffect caused the peaks are completly light disconnectet.. //you saw bright long peak and some degress nearby short dark peak = its a flat astar but you just thinking the bright long peak must be in front and the dark short somwhere behint hihi // its wow even better than the acryl bpolarisstar,.. but much fine work.. *purrrr* //specs: STM32F103C8T6 minimum systemboart 128kB flash, 20kB ram, 72Mhz, leds direct connected to STM boarduntil transistors arrive //3.42V constand source over switch to Li-ion (not case now so don't know how many) + 1x microusb up to 1.84A charger .. stand alone runntime hope 4-6 days, charging over microusb oder driving permanently on it //MEOW its free do with content whatever you want! //pictures from device: (video upcomming) //PICS // http://marderchen.de/NEU/polish_aluminium.jpg // http://marderchen.de/NEU/smalest_powerfullst_tabletbacklight_LED_1.jpg arrent they smal? // http://marderchen.de/NEU/cutest_brightest_smalest_tabletbacklight_microleds.jpg so smal! // http://marderchen.de/NEU/smalest_powerfullst_tabletbacklight_LED_3.jpg and so bright (not full powerusing actuall) // http://marderchen.de/NEU/2nd_3D_polaris_reflectors.jpg realy not sogood mirror like 100%mirrorfoil // http://marderchen.de/NEU/2nd_polaris_gluing_1.jpg // http://marderchen.de/NEU/2nd_polaris_gluing_2.jpg // http://marderchen.de/NEU/solderdevice_silica_upgrade.jpg just rebuild solderdevice with silica and chrome nickl resistorwire.. again.. and agein.. // http://marderchen.de/NEU/polaris_V2_21xSmmMirco_ultrabright+2x5mmRGB_STMlightfadersource.jpg //nice.. but realy much work.. <-programm running here // http://marderchen.de/NEU/polaris_V2_21xSMDmicro_ultrabright+5mm_STMlightfadersource.jpg // <-programm running here but.. its just little bit of possible brightness.. need more power! // so suspend tablet star and cutting some peaks for some more want test tiffrent lightsources like 3mm fast flashing cheap rainbow leds or 0.5W SMD white leds i alrealy have // until S8050 arrived maybe.. using DB237 but.. 21x the big 2A 50V transistors .. kind of sensles.. // using the 32bit micropontroler only for fading leds.. not sensles.. caused more expensive to buy multiplexer and 8bit microcontroller if want the complex (**800 brighteness-steps)fading of 27leds.. // the hole STMF103C8T6 minimum systemboard cost less than 2euro soldering LEDs on it, flash it, connect to li-po (on 5V)or power on the micro USB port on.. and it works! and its fast enough to handle my martencodemess :3 // http://marderchen.de/NEU/cutparts_2nd+3rd_polariscaused_wanttrylighteffects.jpg (used LCd kathode backlight knickering foil from 1st star) // http://marderchen.de/NEU/cuttet_polarisstarpeaks.jpg maybe also 2layers for stronge effect.. // if i can create a strange 3D fusing mind object by cutting some plastic and soldering a some leds .. better do some material none FLASH ART flashing the real world =°.^= .. //Project by marderchen MEOW =^.^= have fun #define rot PA10 #define grun PB5 #define blau PB6 #define rot1 PB7 #define grun1 PB8 #define blau1 PB9 #define w01 PC13 #define w02 PC14 #define w03 PC15 #define w04 PA0 #define w05 PA1 #define w06 PA2 #define w07 PA3 #define w08 PA4 #define w09 PA5 #define w10 PA6 #define w11 PA7 #define w12 PB0 #define w13 PB1 #define w14 PB10 #define w15 PB11 #define w16 PB12 #define w17 PB13 #define w18 PB14 #define w19 PB15 #define w20 PA8 #define w21 PA9 //#define t1 PA15 //#define t2 PA12 //#define weis PB4 int ledmeng=21; 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=10; int 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(w17, OUTPUT); pinMode(w18, OUTPUT); pinMode(w19, OUTPUT); pinMode(w20, OUTPUT); pinMode(w21, OUTPUT); // possible input pins: PA12, PA15 // 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(); } void wuschelgesamtspeed(void) { if (zeit[10] > zeitlimit10) {zeit[10]=0; zeitlimit10=random(5,60); wuseldiezeit1=random(1,4); wuseldiezeit2=random(30,500); }//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); //random farbenso=1; if knightrider only if (irgentwas > zeitchange2) {zeitchange2=random(10,30); irgentwas=0; }} if (farbenso==0) {wuselzumzufall();} if (farbenso==1 ){ lauflicht();} // fading knight rider running light updated if (farbenso==2) { lauflicht(); nurrandomviele();} if (farbenso==3) { nurrandomviele();} if (farbenso==4) { wuselzumzufall(); } if (farbenso==6) { lauflicht(); wuselzumzufall();} if (farbenso==7) { nurrandomviele(); wuselzumzufall();} if (farbenso==8) { switching(); wuselzumzufall();} if (farbenso==9) { switching();} if (farbenso != 1) {assimiliercach();} } 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];} }} int randomb,randomup,randomdown,randomt,merky; void lauflicht(void) { if (zeit[1] > zeitlimitz) {zeit[1]=0; if (merky==0) {denda++;} if (merky==1) {denda--;} if(denda <=0 && merky==1) {merky=0;} wuseldiezeit1=5; wuseldiezeit2=50; if (denda> ledmeng && merky ==0) {merky=1; bounce=false; randomup=random(1,3); randomdown=random(1,3); randomt=random(1,6); randomb=800;} dutysol[denda][5]=1; dutysol[denda][0]=randomb; dutysol[denda][3]=randomt; dutysol[denda][1]=randomup; dutysol[denda][2]=randomdown;} for( int weisnicht = 0; weisnicht < ledmeng; weisnicht++) { if (dutysol[weisnicht][4] > dutysol[weisnicht][3]) { if (dutys[weisnicht] < (dutysol[weisnicht][0]+dutysol[weisnicht][1]) && dutysol[weisnicht][5] ==1){ dutys[weisnicht]+=dutysol[weisnicht][1];} if (dutys[weisnicht] > (dutysol[weisnicht][0]-dutysol[weisnicht][2]) && dutysol[weisnicht][5] ==0){ dutys[weisnicht]-=dutysol[weisnicht][2];} dutysol[weisnicht][4]=0;} if (dutys[weisnicht] >= (dutysol[weisnicht][0]-20)|| dutys[weisnicht] <= (dutysol[weisnicht][0]+20) && dutysol[weisnicht][5] ==1 && weisnicht != denda){ dutysol[weisnicht][5]=0; dutysol[weisnicht][0]=0;} // if (dutysol[weisnicht][5] == 1)) { if (weisnicht != denda){ dutys[weisnicht]-=randomdown;}}} }} 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=1; fcount1 <(802); 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 == (801-dutys[16])) {digitalWrite(w17,HIGH);} if (fcount1 == (801-dutys[17])) {digitalWrite(w18,HIGH);} if (fcount1 == (801-dutys[18])) {digitalWrite(w19,HIGH);} if (fcount1 == (801-dutys[19])) {digitalWrite(w20,HIGH);} if (fcount1 == (801-dutys[20])) {digitalWrite(w21,HIGH);} if (fcount1 >= (402 + bright)) {digitalWrite(rot, LOW ); digitalWrite(grun, LOW ); digitalWrite(blau, LOW );} if (fcount1 >= 801) { 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 ); digitalWrite(w17, LOW ); digitalWrite(w18, LOW ); digitalWrite(w19, LOW ); digitalWrite(w20, LOW ); digitalWrite(w21, LOW ); } } startriger = micros(); } }