// its still the little modificated plarisstar kote 21x white (source tablet lcd backlight, micro SMDHIGH power LEDs ) and 2x 0603 RGB micro SMD leds (anode together //conntection: white direct to kathode: STMF102C8T6 outputs Anode to +5V (bith 10V 1000yF capacitor to ground to stabilise also HEATSINK on STM chip required!) // RGB diodes kathode over 1000V1A diode to outputs (caused resistor >RGB les voltage than high power tablet leds) anode to +5V (the 0603 leds little biger than 1mm) so need to glued on heatsink is no latine used // caused have not enough boards, and 3V3 minimum systemboard supply easy goes broken the 3V3 supply is replaced with one 5V->3V4 chip i have from other device // powered by 1 Li-ion cell and 5V 2A stepup ++IN VIDEO // meassured powerconsumtion from STM chip: 5V ~1100mA <-lol.. 5.5Watt direct switching power.. (think there is more possible, should try it :3 )did you know? should marten reading a STM datasheet if the content is just theoretical and have nothing todo with reality? // datasheet sais: maximum output: 3V3, 25mA each output.. /* * https://www.verical.com/datasheet/stmicroelectronics-microcontroller-stm32f103c8t6-69880.pdf :: VDD ? VSS External main supply voltage (including VDDA and VDD) (1) 1. All main power (VDD, VDDA) and ground (VSS, VSSA) pins must always be connected to the external power supply, in the permitted range. –0.3V to 4.0V V VIN(2) 2. VIN maximum must always be respected. Refer to Table 7: Current characteristics for the maximum allowed injected current values. Input voltage on five volt tolerant pin VSS ? 0.3 VDD + 4.0V Input voltage on any other pin VSS ?0.3V to 4.0V |?VDDx| Variations between different VDD power pins - 50 mV |VSSX ?VSS| Variations between all the different ground pins - 50 VESD(HBM) Electrostatic discharge voltage (human body model) see Section 5.3.11: Absolute maximum ratings (electrical sensitivity) Table 7. Current characteristics Symbol Ratings Max. Unit IVDD Total current into VDD/VDDA power lines (source)(1) 1. All main power (VDD, VDDA) and ground (VSS, VSSA) pins must always be connected to the external power supply, in the permitted range. 150 mA IVSS Total current out of VSS ground lines (sink)(1) 150 IIO Output current sunk by any I/O and control pin 25mA <============oh yes lol Output current source by any I/Os and control pin ? 25mA <============oh yes lol IINJ(PIN)(2) 2. Negative injection disturbs the analog performance of the device. See note 2. on page 76. Injected current on five volt tolerant pins(3) 3. Positive injection is not possible on these I/Os. A negative injection is induced by VIN800){testzeit=0;} } 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 (sHIGHly >zeitchange) {zeitchange=random(15,90); sHIGHly=0; farbenso=1; //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]++; } }sHIGHly++; zeit[1]++; zeit[8]++; testzeit++; 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,LOW);} if (fcount1 == (401-duty[1])) {digitalWrite(grun,LOW);} if (fcount1 == (401-duty[2])) {digitalWrite(blau,LOW);} if (fcount1 == (801-dutys[0])) {digitalWrite(w01,LOW);} if (fcount1 == (801-dutys[1])) {digitalWrite(w02,LOW);} if (fcount1 == (801-dutys[2])) {digitalWrite(w03,LOW);} if (fcount1 == (801-dutys[3])) {digitalWrite(w04,LOW);} if (fcount1 == (801-dutys[4])) {digitalWrite(w05,LOW);} if (fcount1 == (801-dutys[5])) {digitalWrite(w06,LOW);} if (fcount1 == (801-dutys[6])) {digitalWrite(w07,LOW);} if (fcount1 == (801-dutys[7])) {digitalWrite(w08,LOW);} if (fcount1 == (801-dutys[8])) {digitalWrite(w09,LOW);} if (fcount1 == (801-dutys[9])) {digitalWrite(w10,LOW);} if (fcount1 == (801-dutys[10])) {digitalWrite(w11,LOW);} if (fcount1 == (801-dutys[11])) {digitalWrite(w12,LOW);} if (fcount1 == (801-dutys[12])) {digitalWrite(w13,LOW);} if (fcount1 == (801-dutys[13])) {digitalWrite(w14,LOW);} if (fcount1 == (801-dutys[14])) {digitalWrite(w15,LOW);} if (fcount1 == (801-dutys[15])) {digitalWrite(w16,LOW);} if (fcount1 == (801-dutys[16])) {digitalWrite(w17,LOW);} if (fcount1 == (801-dutys[17])) {digitalWrite(w18,LOW);} if (fcount1 == (801-dutys[18])) {digitalWrite(w19,LOW);} if (fcount1 == (801-dutys[19])) {digitalWrite(w20,LOW);} if (fcount1 == (801-dutys[20])) {digitalWrite(w21,LOW);} if (fcount1 >= (402 + bright)) {digitalWrite(rot, HIGH ); digitalWrite(grun, HIGH ); digitalWrite(blau, HIGH );} if (fcount1 >= 801) { digitalWrite(w01, HIGH ); digitalWrite(w02, HIGH ); digitalWrite(w03, HIGH ); digitalWrite(w04, HIGH ); digitalWrite(w05, HIGH ); digitalWrite(w06, HIGH ); digitalWrite(w07, HIGH ); digitalWrite(w08, HIGH ); digitalWrite(w09, HIGH ); digitalWrite(w10, HIGH ); digitalWrite(w11, HIGH ); digitalWrite(w12, HIGH ); digitalWrite(w13, HIGH ); digitalWrite(w14, HIGH ); digitalWrite(w15, HIGH ); digitalWrite(w16, HIGH ); digitalWrite(w17, HIGH ); digitalWrite(w18, HIGH ); digitalWrite(w19, HIGH ); digitalWrite(w20, HIGH ); digitalWrite(w21, HIGH ); } } startriger = micros(); } }