//Perspex window star //60 0603 signlecolor LEDs //5stars, 1. red, 3*10leds,2.orange 2*10leds,3. yellow 2*10leds,4. white 10leds,5. blue 10leds (smalest) //leds powerd direct by stm32f103c8t6, inline diode as voltagerreducer for red,orange,yellow //leds all positivpoles same, negative switched by stm32f103c8t6 gpio (minimum systemboard = max 60mA/gpio sitching gound to positive(4.2V?)10leds /gpio (maybe /2gpios) //cute supersmal modern led technology decoration star for moather x-mas present :3 //slow choticly fading 9 channels //use code and idea if usefull for you :3 /*pictuires * https://marderchen.lima-city.de/NEU+/ma_x-maspresent_0603perspex_windowcolorledstar_1.jpg * https://marderchen.lima-city.de/NEU+/ma_x-maspresent_0603perspex_windowcolorledstar_2.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_30red_glued.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_20orange+20yellow.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_all5starsglued.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_same+polewiered.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_4of5stars_fullwired.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_allleds_connected+tested.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorster_protectionlaqued.jpg * https://marderchen.lima-city.de/NEU+/AMS1117-ADJ_6Vtoany_seted4V_stabilised_800mA_converter_10kpoti.jpg * https://marderchen.lima-city.de/NEU+/mum-x-maspresent_0603colorstar_6Vpowered_to4VwithAMS1117-adj.jpg */ #define blue PC14 #define white PA0 #define yellow1 PA2 #define yellow2 PA4 #define orange1 PA6 #define orange2 PB0 #define red1 PB10 #define red2 PB13 #define red3 PB15 #define t1 PB9 //maybe #define t2 PB8 #define t3 PB7 #define t4 PB6 #define ledviele 9 uint8_t onpress[3],modus=0; //\/bright ^0DUNKEL (==HELL-WEISE uint32_t leddata[ledviele+1][9]; //color,brighteness,cach r,g,b,cach brightadd,darkadd // || >color>>> <>0 timer1 colorinterval <>1 wartezeit <>2 colorziel <>3 interfalcounter <>4 wastun <> // \/ >bright>> <>5 timer2 brightinterfall <>6 wartezeit <>7 brightziel <>8 interfalcounter <>9 wastun <>10 brihgmaxtcount <>11 das maxhell <> 12 mehrwarten uint16_t ledzeugs[ledviele+1][13]; uint8_t sohell[11]={80,40,40,80,30,60,10,10,20}; void setup() { pinMode(white, OUTPUT);pinMode(blue, OUTPUT);pinMode(yellow1, OUTPUT); pinMode(yellow2, OUTPUT);pinMode(orange1, OUTPUT);pinMode(orange2, OUTPUT); pinMode(red1, OUTPUT);pinMode(red2, OUTPUT);pinMode(red3, OUTPUT); pinMode(t1,INPUT);pinMode(t2,INPUT);pinMode(t3,INPUT);pinMode(t4,INPUT); ledsaus();ledz1of();ledz2of();ledz3of();delay(100); for(uint8_t daz=0;dazledzeugs[dar][0]){ledzeugs[dar][3]=0; //änderinterfall //| farbenzielsetzen | zielsuchspeed | bleib weile beim ziel | warten! | if(leddata[dar][0]==ledzeugs[dar][2]){ledzeugs[dar][2]=random(0,30)*80;ledzeugs[dar][0]=random(0,10);ledzeugs[dar][1]=random(5,20)*10;ledzeugs[dar][4]=1;} if(leddata[dar][0]> ledzeugs[dar][2]){ leddata[dar][0]--;} //änder zu farbe if(leddata[dar][0]< ledzeugs[dar][2]){ leddata[dar][0]++;}} if(ledzeugs[dar][4]==1){ledzeugs[dar][1]--;if(ledzeugs[dar][1]<1){ledzeugs[dar][4]=0;}} //warten if(ledzeugs[dar][4]==2){} //wusel helligkeit if(ledzeugs[dar][9]==0){ledzeugs[dar][8]++;} //wenn nicht warten if(ledzeugs[dar][8]>ledzeugs[dar][5]){ledzeugs[dar][8]=0; //änderinterfall if(leddata[dar][1]> ledzeugs[dar][7]){leddata[dar][1]--;} //änder zu farbe if(leddata[dar][1]< ledzeugs[dar][7]){leddata[dar][1]++;} //| bleib weile beim ziel | warte | setze maximalzufall| if(leddata[dar][1]==ledzeugs[dar][7]){ledzeugs[dar][6]=random(4,10)*50;ledzeugs[dar][9]=1; ledzeugs[dar][10]++;}} if(ledzeugs[dar][10]>10){ledzeugs[dar][10]=random(0,8); } // ledzeugs[dar][11]=random(0,5); //setze maximalhelligkeit if(ledzeugs[dar][9]==1){ledzeugs[dar][6]--;if(ledzeugs[dar][6]<1){ledzeugs[dar][9]=random(2,3);}} //wastun ?? //| hellihkeitzielsetzen | zielsuchspeed //mach andershell if(ledzeugs[dar][9]==2){ledzeugs[dar][7]=random(4,10)*sohell[ledzeugs[dar][11]];ledzeugs[dar][5]=random(1,(10-(ledzeugs[dar][7]-leddata[dar][1])/100));ledzeugs[dar][9]=0;} //| setzehellikeit0 | schnelltahin | nochmal | //mach dunkel if(ledzeugs[dar][9]>=3){ledzeugs[dar][7]=0; ledzeugs[dar][5]=random(1,(7-(ledzeugs[dar][7]-leddata[dar][1])/200));ledzeugs[dar][9]=0;} }} long maintime1=millis();long maintime2=millis();long startriger=micros(); void zeitreise(void){//digitalWrite(grun2,HIGH); while ((millis()- maintime1) >= 4){autocolor();rainbowcalc();maintime1=millis();} while ((millis()- maintime2) >= 100){ istinput(); maintime2=millis();} while ((micros()-startriger) >= 240) {machlicht(); startriger=micros();}} void istinput(void){onpress[2]++; if (onpress[2] >10) { if (digitalRead(t1) == HIGH && onpress[0] ==0){onpress[0]=1;modus++;if(modus>3){modus=0;}} if (onpress[0] == 1){onpress[1]++;} if(onpress[1]>=10){onpress[1]=0;onpress[0]=0;} onpress[2]=0; }} uint16_t duty[5];uint16_t rainbow; uint16_t brightsize=400; uint16_t maxx=800,darkmulti=1,hellmulti=1; uint32_t fcc=(maxx*darkmulti);//4800^^2400 void rainbowcalc(void) {//old system i created but still best linear rainbow solution i think for(uint8_t menge=0;menge=0 && rainbow <=400) {duty[0] =400; duty[1] =rainbow; duty[2] =0;} //rot ->gelb (rotmax grün+ blau0) if(rainbow >400 && rainbow <=800) {duty[0] =(400 -(rainbow -400)); duty[1] =400; duty[2] =0;} //gelb ->grün (rot- grünmax blau0) if(rainbow >800 && rainbow <=1200) {duty[0] =0; duty[1] =400; duty[2] =(rainbow - 800);} //grün ->cyan (rot0 grünmax blau+) if(rainbow >1200 && rainbow <=1600) {duty[0] =0; duty[1] =(400 -(rainbow - 1200)); duty[2] =400;} //cyan ->blau (rot0 grün- blaumax) if(rainbow >1600 && rainbow <=2000) {duty[0] =(rainbow-1600); duty[1] =0; duty[2] =400;} //blau ->lila (rot+ grün0 blaumax) if(rainbow >2000 && rainbow <=2400) {duty[0] =400; duty[1] =0; duty[2] =(400- (rainbow -2000));}//lila ->rot (rotmax grün0 blau-) if(rainbow >= 2406) {rainbow =0;} leddata[menge][2]=duty[0];leddata[menge][3]=duty[1];leddata[menge][4]=duty[2]; }for (uint8_t meg=0;meg=1) { leddata[0][8]++; if (leddata[0][8]==(leddata[0][5]+(maxx-(leddata[0][2]*hellmulti)))){digitalWrite(red1,LOW);digitalWrite(red2,LOW);}//800-3200(*4?)<->0-800>>4800 if (leddata[0][8]==(leddata[0][5]+(maxx-(leddata[0][3]*hellmulti)))){digitalWrite(red2,LOW);} if (leddata[0][8]==(leddata[0][5]+(maxx-(leddata[0][4]*hellmulti)))){digitalWrite(red3,LOW);} if (leddata[0][8]>=(leddata[0][5]+leddata[0][1])){leddata[0][8]=0;ledz1of();} leddata[1][8]++; if (leddata[1][8]==(leddata[1][5]+(maxx-(leddata[1][2]*hellmulti)))){digitalWrite(orange1,LOW);} if (leddata[1][8]==(leddata[1][5]+(maxx-(leddata[1][3]*hellmulti)))){digitalWrite(orange2,LOW);} if (leddata[1][8]==(leddata[1][5]+(maxx-(leddata[1][4]*hellmulti)))){digitalWrite(orange1,LOW);digitalWrite(orange2,LOW);} if (leddata[1][8]>=(leddata[1][5]+leddata[1][1])){leddata[1][8]=0;ledz2of();} leddata[2][8]++; if (leddata[2][8]==(leddata[2][5]+(maxx-(leddata[2][2]*hellmulti)))){digitalWrite(yellow1,LOW);} if (leddata[2][8]==(leddata[2][5]+(maxx-(leddata[2][3]*hellmulti)))){digitalWrite(yellow2,LOW);} if (leddata[2][8]==(leddata[2][5]+(maxx-(leddata[2][4]*hellmulti)))){digitalWrite(yellow1,LOW);digitalWrite(yellow2,LOW);} if (leddata[2][8]>=(leddata[2][5]+leddata[2][2])){leddata[2][8]=0;ledz3of();} if (fcount ==(fcc-leddata[3][1]*darkmulti)) {digitalWrite(white,LOW);} if (fcount ==(fcc-leddata[4][1]*darkmulti)) {digitalWrite(blue,LOW);} } if (fcount >=fcc){ledsaus();}}} void ledz1of(void){digitalWrite(red1,HIGH);digitalWrite(red2,HIGH);digitalWrite(red3,HIGH);} void ledz2of(void){digitalWrite(orange1,HIGH);digitalWrite(orange2,HIGH);} void ledz3of(void){digitalWrite(yellow1,HIGH);digitalWrite(yellow2,HIGH);} void ledsaus(void){digitalWrite(white,HIGH);digitalWrite(blue,HIGH);}