minor changes, bug fixes

This commit is contained in:
Michael Wesemann 2019-06-03 12:43:31 +02:00
parent b8a657de73
commit 659ae261b1
2 changed files with 49 additions and 27 deletions

View File

@ -7,7 +7,7 @@
#define SX Serial.print #define SX Serial.print
#define SXN Serial.println #define SXN Serial.println
String VERSION = "1.7.0"; String VERSION = "1.7.1";
int SPEEDINC = 50; // speed increment (rpm) int SPEEDINC = 50; // speed increment (rpm)
@ -42,9 +42,9 @@ long RINTERVAL = 5000;
long RDELAY = 3000; // regulation delay on changes (ms) long RDELAY = 3000; // regulation delay on changes (ms)
int RTOL = 8; // regulation tolerance (rpm) 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 SAVERAGE = 4; // speed measurement average
int SAVETAG = 1014; // save tag 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 aup[] = {0x04,0x0E,0x1F,0x00,0x00,0x00,0x00,0x00};
byte arnd[] = {0x0E,0x0E,0x0E,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) 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 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(); updatelcd();
for (int i=0;i<2;i++) { 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(F[i]);SX(":"); // 0, 16
SX(xpm[i]);SX(":");SX(r[i]);SX(":");SX(bstate[i]);SX(":");SX(btime[i]);SX(":"); SX((int)(v[i]));SX(":"); // 1, 17
SX(cat[i]);SX(":");SX(ctime[i]);SX(":");SX(rtime[i]);SX(":");SX(otime[i]);SX(":");SX(rnval[i]);SX(":"); SX((int)(b[i]));SX(":"); // 2, 18
if (bstate[i]) SX((((long)btime[i]*60000)-(MS-(long)bts[i]))/1000+1); else SX(0);SX(":"); SX(rpm[i]);SX(":"); // 3, 19
if (ostate[i]) SX((((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000+1); else SX(0);SX(":"); 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 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++) { 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(); rnd[i]=int(random(0,rnval[i]+1)/10)*10;rndts[i]=MS;updatelcd();
} }

41
stirctl
View File

@ -19,23 +19,26 @@ $cmd=join(':',@ARGV);$cmd='info' if ($cmd=~/^\s*$/);
@r=split(':',&scmd($cmd)); @r=split(':',&scmd($cmd));
print " Left Right\n"; print " Left Right\n";
printf("Stirrer On: %6d %6d\n", $r[0],$r[15]); printf("Stirrer On: %6d %6d\n", $r[0],$r[16]);
printf("Speed: %6d %6d\n", $r[1],$r[16]); printf("Speed: %6d %6d\n", $r[1],$r[17]);
printf("Boost Speed: %6d %6d\n", $r[2],$r[17]); printf("Boost Speed: %6d %6d\n", $r[2],$r[18]);
printf("RPM: %6d %6d\n", $r[3],$r[18]); printf("RPM: %6d %6d\n", $r[3],$r[19]);
printf("Average RPM: %6d %6d\n", $r[4],$r[19]); printf("Average RPM: %6d %6d\n", $r[4],$r[20]);
printf("Regulation: %6d %6d\n", $r[5],$r[20]); printf("Regulation: %6d %6d\n", $r[5],$r[21]);
printf("Boost On: %6d %6d\n", $r[6],$r[21]); printf("Boost On: %6d %6d\n", $r[6],$r[22]);
printf("Boost Time: %6d %6d\n", $r[7],$r[22]); printf("Boost Time: %6d %6d\n", $r[7],$r[23]);
printf("Catch On: %6d %6d\n", $r[8],$r[23]); printf("Catch On: %6d %6d\n", $r[8],$r[24]);
printf("Catch Time: %6d %6d\n", $r[9],$r[24]); printf("Catch Time: %6d %6d\n", $r[9],$r[25]);
printf("Rise Time: %6d %6d\n", $r[10],$r[25]); printf("Rise Time: %6d %6d\n", $r[10],$r[26]);
printf("Off Time: %6d %6d\n", $r[11],$r[26]); printf("Off Time: %6d %6d\n", $r[11],$r[27]);
printf("Random Value: %6d %6d\n", $r[12],$r[27]); printf("Random Range: %6d %6d\n", $r[12],$r[28]);
printf("Boost Remain: %6d %6d\n", $r[13],$r[28]); printf("Random Value: %6d %6d\n", $r[13],$r[29]);
printf("Off Remain: %6d %6d\n", $r[14],$r[29]); printf("Boost Remain: %6d %6d\n", $r[14],$r[30]);
printf("Error: %d\nVersion: %s\n", $r[30],$r[31]); 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 sub scmd() { ##################################################################################### send command
my($cmd,$quiet)=@_; my($cmd,$quiet)=@_;
@ -58,4 +61,10 @@ sub scmd() { ###################################################################
return $msg; 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 ########################################################################################################### END