diff --git a/stir.ino b/stir.ino index f45c18b..f850ce2 100644 --- a/stir.ino +++ b/stir.ino @@ -7,7 +7,7 @@ #define SX Serial.print #define SXN Serial.println -String VERSION = "1.7.0"; +String VERSION = "1.7.1"; int SPEEDINC = 50; // speed increment (rpm) @@ -42,9 +42,9 @@ long RINTERVAL = 5000; long RDELAY = 3000; // regulation delay on changes (ms) int RTOL = 8; // regulation tolerance (rpm) -long RNDINTERVL = 300000; // randon value change interval +long RNDINTERVAL = 300000; // randon value range change interval (ms) -long SINTERVAL = 2000; // speed measurement internval +long SINTERVAL = 2000; // speed measurement internval (ms) int SAVERAGE = 4; // speed measurement average int SAVETAG = 1014; // save tag @@ -56,7 +56,6 @@ byte aright[] = {0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00}; byte aup[] = {0x04,0x0E,0x1F,0x00,0x00,0x00,0x00,0x00}; byte arnd[] = {0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00}; - LiquidCrystal_I2C lcd(0x27,16,2); // LCD display (connect to SDA/SCL) int v[2],b[2],r[2]={0};double q,rpm[2]={0},xpm[2]={0},xb[2]={0},xv[2]={0},rtime[2]; // speed and regulation @@ -136,13 +135,27 @@ void loop() { ////////////////////////////////////////////////////////////////// updatelcd(); for (int i=0;i<2;i++) { - SX(F[i]);SX(":");SX((int)(v[i]));SX(":");SX((int)(b[i]));SX(":");SX(rpm[i]);SX(":"); - SX(xpm[i]);SX(":");SX(r[i]);SX(":");SX(bstate[i]);SX(":");SX(btime[i]);SX(":"); - SX(cat[i]);SX(":");SX(ctime[i]);SX(":");SX(rtime[i]);SX(":");SX(otime[i]);SX(":");SX(rnval[i]);SX(":"); - if (bstate[i]) SX((((long)btime[i]*60000)-(MS-(long)bts[i]))/1000+1); else SX(0);SX(":"); - if (ostate[i]) SX((((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000+1); else SX(0);SX(":"); + SX(F[i]);SX(":"); // 0, 16 + SX((int)(v[i]));SX(":"); // 1, 17 + SX((int)(b[i]));SX(":"); // 2, 18 + SX(rpm[i]);SX(":"); // 3, 19 + SX(xpm[i]);SX(":"); // 4, 20 + SX(r[i]);SX(":"); // 5, 21 + SX(bstate[i]);SX(":"); // 6, 22 + SX(btime[i]);SX(":"); // 7, 23 + SX(cat[i]);SX(":"); // 8, 24 + SX(ctime[i]);SX(":"); // 9, 25 + SX(rtime[i]);SX(":"); // 10, 26 + SX(otime[i]);SX(":"); // 11, 27 + SX(rnval[i]);SX(":"); // 12, 28 + SX(rnd[i]);SX(":"); // 13, 29 + if (bstate[i]) SX((((long)btime[i]*60000)-(MS-(long)bts[i]))/1000+1); else SX(0);SX(":"); // 14, 30 + if (ostate[i]) SX((((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000+1); else SX(0);SX(":"); // 15, 31 } - SX(VERSION);SX(":");SXN(err); + SX(VERSION);SX(":"); // 32 + SX(MS);SX(":"); // 33 + SXN(err); // 34 + save(); } if (SAVE>0 && MS-savets>SAVEDELAY) {;save();SAVE=0;savets=MS;} ////////////////////// save settings if needed @@ -150,7 +163,7 @@ void loop() { ////////////////////////////////////////////////////////////////// for (int i=0;i<2;i++) { - if (MS-rndts[i]>RNDINTERVL) { //////////////////////////////////////////////////////////////// random timer + if (MS-rndts[i]>RNDINTERVAL) { /////////////////////////////////////////////////////////////// random timer rnd[i]=int(random(0,rnval[i]+1)/10)*10;rndts[i]=MS;updatelcd(); } diff --git a/stirctl b/stirctl index ca872b1..ce26f76 100755 --- a/stirctl +++ b/stirctl @@ -19,23 +19,26 @@ $cmd=join(':',@ARGV);$cmd='info' if ($cmd=~/^\s*$/); @r=split(':',&scmd($cmd)); print " Left Right\n"; -printf("Stirrer On: %6d %6d\n", $r[0],$r[15]); -printf("Speed: %6d %6d\n", $r[1],$r[16]); -printf("Boost Speed: %6d %6d\n", $r[2],$r[17]); -printf("RPM: %6d %6d\n", $r[3],$r[18]); -printf("Average RPM: %6d %6d\n", $r[4],$r[19]); -printf("Regulation: %6d %6d\n", $r[5],$r[20]); -printf("Boost On: %6d %6d\n", $r[6],$r[21]); -printf("Boost Time: %6d %6d\n", $r[7],$r[22]); -printf("Catch On: %6d %6d\n", $r[8],$r[23]); -printf("Catch Time: %6d %6d\n", $r[9],$r[24]); -printf("Rise Time: %6d %6d\n", $r[10],$r[25]); -printf("Off Time: %6d %6d\n", $r[11],$r[26]); -printf("Random Value: %6d %6d\n", $r[12],$r[27]); -printf("Boost Remain: %6d %6d\n", $r[13],$r[28]); -printf("Off Remain: %6d %6d\n", $r[14],$r[29]); -printf("Error: %d\nVersion: %s\n", $r[30],$r[31]); +printf("Stirrer On: %6d %6d\n", $r[0],$r[16]); +printf("Speed: %6d %6d\n", $r[1],$r[17]); +printf("Boost Speed: %6d %6d\n", $r[2],$r[18]); +printf("RPM: %6d %6d\n", $r[3],$r[19]); +printf("Average RPM: %6d %6d\n", $r[4],$r[20]); +printf("Regulation: %6d %6d\n", $r[5],$r[21]); +printf("Boost On: %6d %6d\n", $r[6],$r[22]); +printf("Boost Time: %6d %6d\n", $r[7],$r[23]); +printf("Catch On: %6d %6d\n", $r[8],$r[24]); +printf("Catch Time: %6d %6d\n", $r[9],$r[25]); +printf("Rise Time: %6d %6d\n", $r[10],$r[26]); +printf("Off Time: %6d %6d\n", $r[11],$r[27]); +printf("Random Range: %6d %6d\n", $r[12],$r[28]); +printf("Random Value: %6d %6d\n", $r[13],$r[29]); +printf("Boost Remain: %6d %6d\n", $r[14],$r[30]); +printf("Off Remain: %6d %6d\n", $r[15],$r[31]); +printf("Version: %s\n",$r[32]); +printf("Uptime: %s\n",&dhms($r[33]/1000)); +printf("Error: %d\n",$r[34]); sub scmd() { ##################################################################################### send command my($cmd,$quiet)=@_; @@ -58,4 +61,10 @@ sub scmd() { ################################################################### return $msg; } +sub dhms { ######################################################################## convert secs to dd:hh:mm:ss + my($t)=@_;my ($d,$h,$m,$s); + $s=$t%60;$t=($t-$s)/60;$m=$t%60;$t=($t-$m)/60;$h=$t%24;$t=($t-$h)/24;$d=$t; + return sprintf("%d:%02d:%02d:%02d",$d,$h,$m,$s); +} + ########################################################################################################### END