//7digs hhh:mm:ss nosleep time counter caused sometiimes doing nosleep experiment and need one :3 /* * https://www.marderchen.lima-city.de/rest/nosleep_counter_partsset.jpg * https://www.marderchen.lima-city.de/rest/nosleep_counter_ledsplacedtested.jpg * https://www.marderchen.lima-city.de/rest/nosleep_counter_wiering.jpg * https://www.marderchen.lima-city.de/rest/nosleep_counter_wiered.jpg */ #define dig1 PB11 #define dig2 PB10 #define dig3 PB1 #define dig4 PB0 #define dig5 PA7 #define dig6 PA6 #define dig7 PA5 #define dig8 PA4 //NPN J3Y #define seg1 PB12 #define seg2 PB13 #define seg3 PB14 #define seg4 PB15 #define seg5 PA8 #define seg6 PA9 #define seg7 PA10 //NPN J3Y #define dot PA3 //analoge 7taster #define tasterM PA0 int16_t digitise[14][10],eintag=86400,ddot=0; //last: brighteness int8_t onpress[18],toleranz=50; void setup() { pinMode(dig1,OUTPUT); pinMode(dig2,OUTPUT); pinMode(dig3,OUTPUT); pinMode(dig4,OUTPUT); pinMode(dig5,OUTPUT); pinMode(dig6,OUTPUT);pinMode(dig7,OUTPUT);pinMode(dig8,OUTPUT); pinMode(seg1,OUTPUT); pinMode(seg2,OUTPUT); pinMode(seg3,OUTPUT); pinMode(seg4,OUTPUT); pinMode(seg5,OUTPUT); pinMode(seg6,OUTPUT); pinMode(seg7,OUTPUT); pinMode(dot,OUTPUT); } void loop() {zeitreise();} uint16_t dasist[]={3700,3400,3150,2900,2700,2550,2400},wert,fadefine=200,ani=199,aus=0;//measure values oh just many taster you want with one GPIO and resistors uint8_t auswahlzi=0; uint32_t Secs=600;uint8_t xdigs=7; boolean tplusset=false,tminusset=false,updatez=false; void drueckmich(void){onpress[14]++; if (onpress[14] >=2) {onpress[14]=0; wert=analogRead(tasterM); if (wert>(dasist[0]-toleranz)&&wert<(dasist[0]+toleranz)&& onpress[0] ==0 && auswahlzi>0) {onpress[0]=1;auswahlzi--;} if (onpress[0]==1){onpress[1]++;}if(onpress[1]>=10){onpress[1]=0;onpress[0]=0;} if (wert>(dasist[1]-toleranz)&&wert<(dasist[1]+toleranz)&& onpress[2] ==0&& auswahlzi <8) {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 (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[5]-toleranz)&&wert<(dasist[5]+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;} 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;} }} uint16_t adder=1; //auswahl 1=setz stunden1, 2=setz stunden2, 3=setz minuten1, 4=setz minuten2, void configdas() { // digitise[10][auswahlzi]=ani; if (auswahlzi==1) {adder=360000; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}} if (auswahlzi==2) {adder=36000; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}} if (auswahlzi==3) {adder=3600; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}} if (auswahlzi==4) {adder=600; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}} if (auswahlzi==5) {adder=60; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}} if (auswahlzi==6) {adder=10; if (tplusset ==true){tplusset=false; Secs+=adder;} if (tminusset==true && Secs >=adder){tminusset=false; Secs-=adder;}}} String michauch=""; void zeigseczeit(uint32_t runningSecs){michauch=""; if ((((runningSecs/60)/60)) <100){ michauch+="0";} if ((((runningSecs/60)/60)) <10){ michauch+="0";} michauch +=((runningSecs/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";} if (mich <10000) {michauch+="0";} if (mich <100000) {michauch+="0";}//caused 6digs michauch+=mich; setzbalken(michauch); } void setzbalken(String showme) {zeigzeugs(0,showme[0]); zeigzeugs(1,showme[1]); zeigzeugs(2,showme[2]); zeigzeugs(3,showme[3]); zeigzeugs(4,showme[4]); zeigzeugs(5,showme[5]); zeigzeugs(6,showme[6]);} boolean einszwei; uint8_t zehl,on=99; long maintime=millis(),maintime2=millis(),maintime3=micros(),flink=micros(),nochmal=millis(); void zeitreise(void){ while ((millis()- maintime) >=20) { 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;ddot=ani;}else{einszwei=false;}ddot=ani; maintime2 = millis();}//dots here while ((micros()- maintime3) >= 996500) {//correction or correct clock speed zeigseczeit(Secs); //zeigzahl(1234567); maintime3 = micros(); Secs++;}// thistime without date while ((micros()- flink) >= 2) { machlicht(); flink=micros();} while ((millis()- nochmal) >= 167) {//z0rt 1k/6 if(auswahlzi==0){digitise[7][zehl]=ani/2;}else{digitise[7][auswahlzi]=ani/2;} nochmal=millis();//change here last npn>pnp channel bars below+dots zehl++;if(zehl>7){zehl=0;} } } uint8_t steptz=2; void downfade(void) { if(ddot>=12){ddot-=12;} for (int16_t digs=7; digs <=xdigs; 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)-digitise[5][sekt])) { digitalWrite(dig6,HIGH);} if (fcount1 == ((fadefine)-digitise[6][sekt])) { digitalWrite(dig7,HIGH);} if (fcount1 == ((fadefine)-digitise[7][sekt])) { digitalWrite(dig8,HIGH);} if (fcount1 == ((fadefine)-ddot)) { digitalWrite(dot,HIGH);} } if (fcount1 >= (fadefine)) {nodig();norest();} }}}} void nodig(void) { digitalWrite(dig1,LOW); digitalWrite(dig2,LOW); digitalWrite(dig3,LOW); digitalWrite(dig4,LOW); digitalWrite(dig5,LOW); digitalWrite(dig6,LOW); digitalWrite(dig7,LOW);digitalWrite(dig8,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);} void norest(void){ digitalWrite(dot,LOW); } //[MEOW] project by marderchen us3e it or parts if usefull :3