From 4599c6cc085028634113c46589499c200ed0c068 Mon Sep 17 00:00:00 2001 From: Andrea Trentini <andrea.trentini@unimi.it> Date: Thu, 21 May 2020 09:39:28 +0200 Subject: [PATCH] monitor + fanloop --- Esempi/FanLoop/FanLoop.ino | 15 +++++++++------ monitorStudenti.sh | 38 +++++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Esempi/FanLoop/FanLoop.ino b/Esempi/FanLoop/FanLoop.ino index 3af9d17..0c1acfc 100644 --- a/Esempi/FanLoop/FanLoop.ino +++ b/Esempi/FanLoop/FanLoop.ino @@ -30,10 +30,11 @@ volatile long timestamp=0; volatile long durata=0; volatile long durataMedia=0; // media mobile (molto corta, a 2 elementi) -long durataDesiderata=50; // inverso velocità +long durataDesiderata=180; // inverso velocità (10 fin troppo veloce, 180 limite di lentezza) float duty=.3; // % int periodpwm=1000; //millis boolean dutyOn=false; +#define MIN .2 // sotto diventa troppo instabile // TaskScheduler #include <TaskScheduler.h> @@ -43,7 +44,7 @@ void pwmDeiPovery(); Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, pwmDeiPovery); void plot(); -Task plotTask(50*TASK_MILLISECOND, TASK_FOREVER, plot); +Task plotTask(200*TASK_MILLISECOND, TASK_FOREVER, plot); void pwmDeiPovery() { //Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, [](){ @@ -63,12 +64,14 @@ void pwmDeiPovery() { dutyOn=!dutyOn; // "strategia" LOOPBACK! - duty+=(durataMedia-durataDesiderata)*.01; - //duty+=(durataMedia-durataDesiderata)*.01; + duty+=(durataMedia-durataDesiderata)*.001; + //duty+=(durataMedia-durataDesiderata)*.001; + + //Serial.println(duty); // capping - if(duty>=1) duty=1.0; - if(duty<0.2) duty=.2; + if(duty>=1) duty=1.0; // in ogni caso più di 100% non ha senso, il relé resta attivo sempre + if(duty<MIN) duty=MIN; // troppo lento, si ferma ventola //}); } diff --git a/monitorStudenti.sh b/monitorStudenti.sh index bfa9936..152334f 100755 --- a/monitorStudenti.sh +++ b/monitorStudenti.sh @@ -23,22 +23,26 @@ sudo stty -F $COM 115200 DIR=Studenti echo "(dir studenti: $DIR)" -TOUT="15.0s" +TOUT="5" echo "(timeout: $TOUT)" -processaLinee(){ - while +LINEE=100 +echo "(linee di output: $LINEE)" + +mqtt(){ + mosquitto_pub -h atrent.it -t SistEmbed/arduino-cli$2 -m "$1" +} + +processaSerial(){ + sed '/^\s*$/d' $COM | head -n $LINEE |nl| while read line do - if - test -n $line - then - echo "[$dir] $line" - fi - done + echo "[$dir] $line" + mqtt "$line" "/$dir" + done | tee $dir/$SKETCH.run } -compila(){ +compilaLancia(){ echo ___ $1 ___ if arduino-cli compile --fqbn arduino:avr:uno $1 @@ -46,25 +50,25 @@ compila(){ if arduino-cli upload -p $COM --fqbn arduino:avr:uno $1 then - echo SUCCESS, lanciare monitor con timeout mqtt $dir /running - timeout $TOUT cat $COM | processaLinee | tee $dir/$SKETCH.run + + #echo SUCCESS, lanciare monitor con timeout + #timeout -v $TOUT processaSerial + + processaSerial + #cat $COM fi fi } -mqtt(){ - mosquitto_pub -h atrent.it -t SistEmbed/arduino-cli$2 -m "$1" -} - while echo === $(date) === do for dir in $(find $DIR -type d |grep $SKETCH|grep -v '\.st') do echo +++ $dir +++ - compila $dir + compilaLancia $dir #mqtt senzatopic #mqtt "contopic sadlkjasldk asldj asldj alskdj" /TOPIC done -- GitLab