//indgange int kaffe; int dbkaffe; int kakao; int dbkakao; int maelk; int dbmaelk; float temp; int niveau; int start; //udgange int kaffemotor; int kakaomotor; int maelkemotor; int pumpe; int done; int varme; int brygning; int klar; int brygger; int fejl; //interne int og floats float a; //kaffe timetæller float b; //kakao timetæller float cc; //mælk timetæller float e; //pumpe timetæller int d; //aktuel step float f; long g; float h; float i; float j; float k; float l; float m; float n; float o; float p; float q; float r; float s; float t; float kaffekoeretidwifi; //tid fra server hvor meget kaffe der skal bruges float kakaokoeretidwifi; //tid fra server hvor meget kakao der skal bruges float maelkekoeretidwifi; //tid fra server hvor meget mælk der skal bruges //forskellige køretider til div motorer long sek2; long sek3; long sek4; long sek5; long sek6; long sek7; long sek8; //starttidspunkt for millis timere unsigned long starttime; unsigned long starttime2; unsigned long starttime3; unsigned long currenttime; //"ur" i arduino void setup() { pinMode(48,OUTPUT); pinMode(49,OUTPUT); pinMode(50,OUTPUT); pinMode(51,OUTPUT); pinMode(44,OUTPUT); pinMode(45,OUTPUT); pinMode(46,OUTPUT); pinMode(47,OUTPUT); //sætter forskellige tider til køretider af motorer sek2=2000; sek3=3000; sek4=4000; sek5=5000; sek6=6000; sek7=7000; sek8=8000; // sætter floats til 0 for at have en start værdi float l=0; float m=0; float n=0; float o=0; float p=0; float q=0; // giver ind- og udgange navne //indgange temp =A0; kaffe =22; dbkaffe =23; kakao =24; dbkakao =25; maelk =26; dbmaelk =27; start =28; niveau =29; //udgange kaffemotor =48; kakaomotor =49; maelkemotor =50; pumpe = 51; varme = 44; klar = 45; brygger = 46; fejl = 47; //fortæller hvilke der er indgange og udgange pinMode(22,INPUT); pinMode(23,INPUT); pinMode(24,INPUT); pinMode(25,INPUT); pinMode(26,INPUT); pinMode(27,INPUT); pinMode(28,INPUT); pinMode(29,INPUT); //sørger for at motorerne er slukket digitalWrite(kaffemotor,HIGH); digitalWrite(kakaomotor,HIGH); digitalWrite(maelkemotor,HIGH); digitalWrite(pumpe,HIGH); d=0; Serial.begin(9600); } void loop() { currenttime = millis(); if ((analogRead(temp)>=425)&&(digitalRead(niveau)==LOW)) digitalWrite(varme,LOW); //tænder for varmen når vandet bliver for koldt else if ((analogRead(temp)<=423)||(digitalRead(niveau)==HIGH)) digitalWrite(varme,HIGH); //slukker for varmen når vandet er varmt nok else(delay(0)); if ((digitalRead(niveau)==HIGH)||(analogRead(temp)>=430)){ //hvis vandet ikke er varmt nok eller der ikke er vand i beholderen så tænder den digitalWrite(fejl,HIGH);} //"fejl" dioden og slukker "klar" dioden else digitalWrite(fejl,LOW); //hvis der er vand nok i beholderen og varmt nok så tænder den //"klar" dioden og slukker "fejl" dioden if (d==0){ digitalWrite(brygger,LOW);} //slukker "brygger" dioden else digitalWrite(brygger,HIGH); //tænder "brygger" dioden if (((d==0)&&(digitalRead(niveau)==LOW)&&(analogRead(temp)<=430))){ digitalWrite(klar,HIGH);} //tænder "klar" dioden else digitalWrite(klar,LOW); //slukker "klar" dioden //hvis den er i standby step og der er vand i tanken og dee er varmt nok og man trykker start så starter processen if ((d==0)&&(digitalRead(start)==HIGH)&&(digitalRead(niveau)==LOW)&&(analogRead(temp)<=430)){ d=1; } else delay(0); //kaffe if ((d==1)&&(digitalRead(kaffe)==HIGH)){ //hvis kaffe 1 er valgt kører dette "step" digitalWrite(kaffemotor,LOW); starttime=currenttime; d=2;} else if ((d==1)&&(digitalRead(dbkaffe)==HIGH)){ //hvis kaffe 2 er valgt kører dette "step" digitalWrite(kaffemotor,LOW); starttime=currenttime; d=3;} else if ((d==1)&&((digitalRead(kaffe)==LOW)&&(digitalRead(dbkaffe)==LOW)))(d=4); //hvis kaffe ikke er valgt kører dette "step" else delay(0); if ((d==2)&&(currenttime-starttime>=sek5)){ //hvis kaffe 2 er valgt kører dette "step" digitalWrite(kaffemotor,HIGH); a=a+5; l=l+5; d=4;} else delay(0); if ((d==3)&&(currenttime-starttime>=sek8)){ //hvis kaffe 1 er valgt kører dette "step" digitalWrite(kaffemotor,HIGH); a=a+8; l=l+8; d=4;} else delay(0); //kakao if ((d==4)&&(digitalRead(kakao)==HIGH)){ //hvis kakao 1 er valgt kører dette "step" digitalWrite(kakaomotor,LOW); starttime=currenttime; d=5;} else if ((d==4)&&(digitalRead(dbkakao)==HIGH)){ //hvis kakao 2 er valgt kører dette "step" digitalWrite(kakaomotor,LOW); starttime=currenttime; d=6;} else if ((d==4)&&((digitalRead(kakao)==LOW)&&(digitalRead(dbkakao)==LOW)))(d=7);//hvis kakao ikke er valgt kører dette "step" else delay(0); if ((d==5)&&(currenttime-starttime>=sek5)){ //hvis kakao 1 er valgt kører dette "step" digitalWrite(kakaomotor,HIGH); b=b+5; m=m+5; d=7;} else delay(0); if ((d==6)&&(currenttime-starttime>=sek8)){ //hvis kakao 2 er valgt kører dette "step" digitalWrite(kakaomotor,HIGH); b=b+8; m=m+8; d=7;} else delay(0); //maelk if ((d==7)&&(digitalRead(maelk)==HIGH)){ //hvis mælk 1 er valgt kører dette "step" digitalWrite(maelkemotor,LOW); starttime=currenttime; d=8;} else if ((d==7)&&(digitalRead(dbmaelk)==HIGH)){ //hvis mælk 2 er valgt kører dette "step" digitalWrite(maelkemotor,LOW); starttime=currenttime; d=9;} else if ((d==7)&&((digitalRead(maelk)==LOW)&&(digitalRead(dbmaelk)==LOW)))(d=10); //hvis mælk ikke er valgt kører dette "step" else delay(0); if ((d==8)&&(currenttime-starttime>=sek5)){ //hvis mælk 1 er valgt kører dette "step" digitalWrite(maelkemotor,HIGH); cc=cc+2; n=n+2; d=10;} else delay(0); if ((d==9)&&(currenttime-starttime>=sek8)){ //hvis mælk 2 er valgt kører dette "step" digitalWrite(maelkemotor,HIGH); cc=cc+4; n=n+4; d=10;} else delay(0); // pumpe if (d==10){ //tænder pumpen starttime=currenttime; digitalWrite(pumpe,LOW); d=11;} else delay(0); if ((d==11)&&(currenttime-starttime>=sek7)){ //slukker pumpen digitalWrite(pumpe,HIGH); e=e+7; d=0;} else delay(0); ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //via database if ((d==0)&&(k==1)&&(digitalRead(niveau)==LOW)&&(analogRead(temp)<=430)){ d=21; starttime2=currenttime; } else delay(0); //kaffe if (d==21){ //hvis kaffe 1 er valgt kører dette "step" digitalWrite(kaffemotor,LOW); starttime=currenttime; d=22;} else delay(0); if ((d==22)&&(currenttime-starttime>=kaffekoeretidwifi)){ digitalWrite(kaffemotor,HIGH); a=a+(kaffekoeretidwifi/1000); l=l+(kaffekoeretidwifi/1000); d=24;} else delay(0); //kakao if (d==24){ digitalWrite(kakaomotor,LOW); starttime=currenttime; d=25;} else delay(0); if ((d==25)&&(currenttime-starttime>=kakaokoeretidwifi)){ digitalWrite(kakaomotor,HIGH); b=b+(kakaokoeretidwifi/1000); m=m+(kakaokoeretidwifi/1000); d=27;} else delay(0); //maelk if (d==27){ //hvis mælk 1 er valgt kører dette "step" digitalWrite(maelkemotor,LOW); starttime=currenttime; d=28;} else delay(0); if ((d==28)&&(currenttime-starttime>=maelkekoeretidwifi)){ digitalWrite(maelkemotor,HIGH); cc=cc+(maelkekoeretidwifi/1000); n=n+(maelkekoeretidwifi/1000); d=30;} else delay(0); // pumpe if (d==30){ starttime=currenttime; digitalWrite(pumpe,LOW); d=31;} else delay(0); if ((d==31)&&(currenttime-starttime>=sek7)){ digitalWrite(pumpe,HIGH); e=e+7; d=0;} else delay(0); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //procent hvor langt brygningen er f=100/(kaffekoeretidwifi+kakaokoeretidwifi+maelkekoeretidwifi+sek7); g=currenttime-starttime2; h= (float)g; i=h*f; if (d<=20)i=0; else delay(0); while(Serial.available()>0){ j += Serial.parseFloat();} //her tager den dataene fra arduino og laver dem og lægger dem i de rigtige variabler if ((j >= 2)&&(j<=10002)) kaffekoeretidwifi=j-2; else delay(0); if ((j >= 10003)&&(j<=20003)) kakaokoeretidwifi=j-10003; else delay(0); if ((j >= 20004)&&(j<=30004)) maelkekoeretidwifi=j-20004; else delay(0); if (j==1)k=1; else k=0; r=((l-o)*-1)+100; s=((m-p)*-1)+100; t=((n-q)*-1)+100; Serial.print(a); Serial.print(","); Serial.print(b); Serial.print(","); Serial.print(cc); Serial.print(","); Serial.print(e); Serial.print(",:,"); Serial.print(analogRead(temp)*-0.5+297.5); Serial.print(","); Serial.print(j); Serial.print(","); Serial.print(i); Serial.print(","); Serial.print(r); Serial.print(","); Serial.print(s); Serial.print(","); Serial.print(t); Serial.println(""); if (j==24007){ a=0; b=0; cc=0; e=0; } if (j==24008){ o=l; } if (j==24009){ p=m; } if (j==24010){ q=n; } j=0; delay(100); }