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