//4 digs 40*(5*0603 singlecolor led)channels 4 digs realsound by relai clock //7tasters, 3raleis, 4x 0.5Watt status, 6 led colors, temp sensor, additional 6 channels from 40 arround //hours blue, minutes green, dots red, line belos each number white, line above first 3 taster yellow, line above last 3 tasters orange. //bars below numbers and above taster=digitise[4][1-8] (1-7=horizontalbars, 8=dots) ääh think countig starting by 1 and not by 0 even if array playe 0 alrealy exists //5V2A boost stepup seted to 5.64Volt by solder (3* 10kOhm inline)=20kOhm between +Volt output>30kOhm>(factory measure resistor)>chip (solderpoint border from module, side positive pole USB output, realy near border 1rst solderpoint from smal resistor above big brown smc capacitor)result=adjusting output hihi //NPN J3Y> PNP Y2 caused higher voltage for digs than 3.3V #define dig1 PB10 #define dig2 PB1 #define dig5 PB0 #define dig3 PA7 #define dig4 PA6//reorder dots position 3 but on end //NPN J3Y #define seg1 PA10 #define seg2 PA9 #define seg4 PA8 #define seg3 PB15 #define seg5 PB14 #define seg6 PB13 #define seg7 PB12 #define seg8 PB11 //NPN J3Y #define coil1 PB9 #define coil2 PC15 #define coil3 PC14 #define coil4 PC13 //NPN D882 #define drain1 PB5 #define drain2 PB6 #define drain3 PB7 #define drain4 PB8 //analoge 7tasters GND>4700R[GPIO]-470R[t1]-470R[t2]-470R[t3]-470R[t4]-470R[t5]-470R[t6]-470R[t7]-470R[t8]-470R[t9]-470R[t10]-? (tasters switching 3V3 between resistors #define tasterM PA1 #define temp PA0 int16_t digitise[14][10]; //last: brighteness int8_t onpress[18]; void setup() { pinMode(dig1,OUTPUT); pinMode(dig2,OUTPUT); pinMode(dig3,OUTPUT); pinMode(dig4,OUTPUT); pinMode(dig5,OUTPUT); pinMode(seg1,OUTPUT); pinMode(seg2,OUTPUT); pinMode(seg3,OUTPUT); pinMode(seg4,OUTPUT); pinMode(seg5,OUTPUT); pinMode(seg6,OUTPUT); pinMode(seg7,OUTPUT); pinMode(seg8,OUTPUT); pinMode(coil1,OUTPUT);pinMode(coil2,OUTPUT);pinMode(coil3,OUTPUT);pinMode(coil4,OUTPUT);pinMode(drain1,OUTPUT);pinMode(drain2,OUTPUT);pinMode(drain3,OUTPUT);pinMode(drain4,OUTPUT); neuesequenz(); } boolean alon=false; boolean downcount=false;uint16_t alarmsec=0;uint8_t downmod=0; void loop() { zeitreise(); } uint16_t dasist[]={3700,3400,3150,2900,2700,2550,2400},wert,fadefine=100,ani=99,aus=0;//measure values oh just many taster you want with one GPIO and resistors uint8_t toleranz=50,auswahlzi=0,soundmodus=0; uint32_t Secs=600,eintag=86400; boolean tplusset=false,tminusset=false,istan=false,updatez=false; uint8_t Relais[9]; void drueckmich(void){onpress[14]++; if (onpress[14] >=2) {onpress[14]=0; wert=analogRead(tasterM); if (wert>(dasist[1]-toleranz)&&wert<(dasist[1]+toleranz)&& onpress[0] ==0 && auswahlzi<8) {onpress[0]=1;auswahlzi++;} if (onpress[0]==1){onpress[1]++;}if(onpress[1]>=10){onpress[1]=0;onpress[0]=0;} if (wert>(dasist[0]-toleranz)&&wert<(dasist[0]+toleranz)&& onpress[2] ==0&& auswahlzi >0) {onpress[2]=1;auswahlzi--;} if (onpress[2]==1){onpress[3]++;}if(onpress[3]>=15){onpress[3]=0;onpress[2]=0;} if (wert>(dasist[2]-toleranz)&&wert<(dasist[2]+toleranz)&& onpress[4] ==0) { onpress[4] =1;} if (onpress[4]==1){onpress[5]++;}if(onpress[5]>=10){onpress[5]=0;onpress[4]=0;} if (wert>(dasist[3]-toleranz)&&wert<(dasist[3]+toleranz)&& onpress[6] ==0) { onpress[6] =1; if(istan==true){istan=false;}else{istan=true;}} if (onpress[6]==1){onpress[7]++;}if(onpress[7]>=20){onpress[7]=0;onpress[6]=0;} if (wert>(dasist[4]-toleranz)&&wert<(dasist[4]+toleranz)&& onpress[8] ==0) { onpress[8] =1; tminusset=true;} if (onpress[8]==1){onpress[9]++;}if(onpress[9]>=10){onpress[9]=0;onpress[8]=0;} if (wert>(dasist[6]-toleranz)&&wert<(dasist[6]+toleranz)&& onpress[10] ==0) { onpress[10] =1; tplusset=true;} if (onpress[10]==1){onpress[11]++;}if(onpress[11]>=10){onpress[11]=0;onpress[10]=0;} if (wert>(dasist[5]-toleranz)&&wert<(dasist[5]+toleranz)&& onpress[12] ==0) { onpress[12] =1; } if (onpress[12]==1){onpress[13]++;}if(onpress[13]>=10){onpress[13]=0;onpress[12]=0;} configdas(); updatez=false; for(uint8_t durchgeh=0;durchgeh<12;durchgeh+=2){if(onpress[durchgeh]==1){updatez=true;}} if(updatez==true){zeigseczeit(Secs);updatez=false;} }} void leuchtetbalken(void){//auswahlzi } uint16_t adder=1; //auswahl 0=zeit helligkeit, 1=setz stunden1, 2=setz stunden2, 3=setz minuten1, 4=setz minuten2,5=sound wie void configdas() { digitise[4][auswahlzi]=ani; if (auswahlzi==0) {adder=20; if (tplusset ==true && ani <100) {tplusset=false; ani+=adder;} if (tminusset==true && ani >=adder){tminusset=false; ani-=adder;}} if (auswahlzi==1) {adder=36000; if (tplusset ==true && Secs =adder){tminusset=false; Secs-=adder;}} if (auswahlzi==2) {adder=3600; if (tplusset ==true && Secs =adder){tminusset=false; Secs-=adder;}} if (auswahlzi==3) {adder=600; if (tplusset ==true && Secs =adder){tminusset=false; Secs-=adder;}} if (auswahlzi==4) {adder=60; if (tplusset ==true && Secs =adder){tminusset=false; Secs-=adder;}} if (auswahlzi==5) {adder=1; if (tplusset ==true && Secs =adder){tminusset=false; Secs-=adder;}} if (auswahlzi==6) {adder=1; if (tplusset ==true && soundmodus <10) {tplusset=false; soundmodus+=adder;} if (tminusset==true && soundmodus >=adder){tminusset=false;soundmodus-=adder;}} if (auswahlzi==7) {} if (auswahlzi==8) {} } String michauch=""; void zeigseczeit(uint32_t runningSecs){michauch=""; if ((((runningSecs/60)/60)%60) <10){ michauch+="0";} michauch +=((runningSecs/60)/60)%60; if (((runningSecs/60)%60) <10){ michauch+="0";} michauch +=(runningSecs/60)%60; if ((runningSecs%60) <10){ michauch+="0";} michauch +=runningSecs%60; setzbalken(michauch);} void zeigzahl(uint32_t mich){michauch=""; if (mich <10) {michauch+="0";} if (mich <100) {michauch+="0";} if (mich <1000) {michauch+="0";} michauch+=mich; setzbalken(michauch);} void setzbalken(String showme) {zeigzeugs(0,showme[0]); zeigzeugs(1,showme[1]); zeigzeugs(2,showme[2]); zeigzeugs(3,showme[3]);}//reorder if needet boolean einszwei; uint8_t zehl,on=99; long maintime=millis();long maintime2=millis();long maintime3=millis();uint32_t flink=micros();uint32_t nochmal=millis(); void zeitreise(void){ while ((millis()- maintime) >=20) {relaiknatator(); drueckmich();downfade(); maintime = millis();} while ((millis()- maintime2) >= 499) {//zeigzahl(analogRead(tasterM)); //hihi so my 8digs display working just a display running to lazy calculyte taster values by risitorvalues just led print them out :3 result in dasist if(einszwei=false){einszwei=true;}else{einszwei=false;digitise[4][7]=ani;}maintime2 = millis();} while ((millis()- maintime3) >= 998) { Relais[1]=on; zeigseczeit(Secs);maintime3 = millis(); if((Secs%60)==0){neuesequenz();} Secs++; if(Secs>eintag){Secs=0;}}// thistime without date while ((micros()- flink) >= 3) { machlicht();flink=micros();} while ((millis()- nochmal) >= 250) { zehl++;if(zehl>3){zehl=0;} if(auswahlzi==0){digitise[4][zehl+1]=ani/2;} nochmal=millis();} } uint8_t tenfivtelsec,sequenz[52];; void relaiknatator(void){ if((tenfivtelsec%10)==0){for(uint8_t ratter =1; ratter <8;ratter++){Relais[ratter]=0;}}//if(Relais[ratter]>=10){Relais[ratter]-=10;}}}// tenfivtelsec++;if(tenfivtelsec>=50){tenfivtelsec=0;} Relais[sequenz[tenfivtelsec]]=on; digitise[4][5]=Relais[5]; digitise[4][6]=Relais[6]; } boolean warnix=false; void neuesequenz(void){ warnix=true; for(uint8_t das=1;das<8;das++){sequenz[das]=0; if(random(0,100)<20) {sequenz[das]=random(2,6);}if(sequenz[das]>0){warnix=false;}} if(warnix ==true){neuesequenz();} } uint8_t steptz=4; void downfade(void) { for (int16_t digs=0; digs <=8; digs++) { for (int16_t ad=0; ad <=7; ad++) { if(digitise[digs][ad]>0) { digitise[digs][ad]--;} if(digitise[digs][ad]<(ani-(ani/4))&&digitise[digs][ad]>=steptz) { digitise[digs][ad]-=steptz;} }} } /*thingy the dig "PLAN" for setting array stuff (bars in digital display) for havving stuff there if build own digitdisplay must be a plan for translation somwhere usable: * zeigzeugs(position(number),character(number,alpha,ascii)); =1) { if (fcount1 == ((fadefine)-digitise[0][sekt])) { digitalWrite(dig1,HIGH);} if (fcount1 == ((fadefine)-digitise[1][sekt])) { digitalWrite(dig2,HIGH);} if (fcount1 == ((fadefine)-digitise[2][sekt])) { digitalWrite(dig3,HIGH);} if (fcount1 == ((fadefine)-digitise[3][sekt])) { digitalWrite(dig4,HIGH);} if (fcount1 == ((fadefine)-digitise[4][sekt])) { digitalWrite(dig5,HIGH);} if (fcount1 == ((fadefine)-Relais[1])) { digitalWrite(coil1,HIGH);} if (fcount1 == ((fadefine)-Relais[2])) { digitalWrite(coil2,HIGH);} if (fcount1 == ((fadefine)-Relais[3])) { digitalWrite(coil3,HIGH);} if (fcount1 == ((fadefine)-Relais[4])) { digitalWrite(coil4,HIGH);} if (fcount1 == ((fadefine)-Relais[5])) { digitalWrite(drain1,HIGH);} if (fcount1 == ((fadefine)-Relais[6])) { digitalWrite(drain2,HIGH);} if (fcount1 == ((fadefine)-Relais[7])) { digitalWrite(drain3,HIGH);} if (fcount1 == ((fadefine)-Relais[8])) { digitalWrite(drain4,HIGH);} } if (fcount1 > (fadefine)) {nodig();norest();} }}}} void nodig(void) { digitalWrite(dig1,LOW); digitalWrite(dig2,LOW); digitalWrite(dig3,LOW); digitalWrite(dig4,LOW); digitalWrite(dig5,LOW);} void noseg(void) { digitalWrite(seg1,LOW); digitalWrite(seg2,LOW); digitalWrite(seg3,LOW); digitalWrite(seg4,LOW); digitalWrite(seg5,LOW); digitalWrite(seg6,LOW); digitalWrite(seg7,LOW); digitalWrite(seg8,LOW);} void norest(void){digitalWrite(coil1,LOW);digitalWrite(coil2,LOW);digitalWrite(coil3,LOW);digitalWrite(coil4,LOW); digitalWrite(drain1,LOW); digitalWrite(drain2,LOW); digitalWrite(drain3,LOW); digitalWrite(drain4,LOW);} //[MEOW] project by marderchen us3e it or parts if usefull :3