Skip to content
Snippets Groups Projects
Verified Commit 4599c6cc authored by Andrea Trentini's avatar Andrea Trentini
Browse files

monitor + fanloop

parent 4de0204a
No related branches found
No related tags found
No related merge requests found
...@@ -30,10 +30,11 @@ volatile long timestamp=0; ...@@ -30,10 +30,11 @@ volatile long timestamp=0;
volatile long durata=0; volatile long durata=0;
volatile long durataMedia=0; // media mobile (molto corta, a 2 elementi) 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; // % float duty=.3; // %
int periodpwm=1000; //millis int periodpwm=1000; //millis
boolean dutyOn=false; boolean dutyOn=false;
#define MIN .2 // sotto diventa troppo instabile
// TaskScheduler // TaskScheduler
#include <TaskScheduler.h> #include <TaskScheduler.h>
...@@ -43,7 +44,7 @@ void pwmDeiPovery(); ...@@ -43,7 +44,7 @@ void pwmDeiPovery();
Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, pwmDeiPovery); Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, pwmDeiPovery);
void plot(); void plot();
Task plotTask(50*TASK_MILLISECOND, TASK_FOREVER, plot); Task plotTask(200*TASK_MILLISECOND, TASK_FOREVER, plot);
void pwmDeiPovery() { void pwmDeiPovery() {
//Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, [](){ //Task pwmDeiPoveryTask(periodpwm*(1-duty), TASK_FOREVER, [](){
...@@ -63,12 +64,14 @@ void pwmDeiPovery() { ...@@ -63,12 +64,14 @@ void pwmDeiPovery() {
dutyOn=!dutyOn; dutyOn=!dutyOn;
// "strategia" LOOPBACK! // "strategia" LOOPBACK!
duty+=(durataMedia-durataDesiderata)*.01; duty+=(durataMedia-durataDesiderata)*.001;
//duty+=(durataMedia-durataDesiderata)*.01; //duty+=(durataMedia-durataDesiderata)*.001;
//Serial.println(duty);
// capping // capping
if(duty>=1) duty=1.0; if(duty>=1) duty=1.0; // in ogni caso più di 100% non ha senso, il relé resta attivo sempre
if(duty<0.2) duty=.2; if(duty<MIN) duty=MIN; // troppo lento, si ferma ventola
//}); //});
} }
......
...@@ -23,22 +23,26 @@ sudo stty -F $COM 115200 ...@@ -23,22 +23,26 @@ sudo stty -F $COM 115200
DIR=Studenti DIR=Studenti
echo "(dir studenti: $DIR)" echo "(dir studenti: $DIR)"
TOUT="15.0s" TOUT="5"
echo "(timeout: $TOUT)" echo "(timeout: $TOUT)"
processaLinee(){ LINEE=100
while 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 read line
do do
if
test -n $line
then
echo "[$dir] $line" echo "[$dir] $line"
fi mqtt "$line" "/$dir"
done done | tee $dir/$SKETCH.run
} }
compila(){ compilaLancia(){
echo ___ $1 ___ echo ___ $1 ___
if if
arduino-cli compile --fqbn arduino:avr:uno $1 arduino-cli compile --fqbn arduino:avr:uno $1
...@@ -46,25 +50,25 @@ compila(){ ...@@ -46,25 +50,25 @@ compila(){
if if
arduino-cli upload -p $COM --fqbn arduino:avr:uno $1 arduino-cli upload -p $COM --fqbn arduino:avr:uno $1
then then
echo SUCCESS, lanciare monitor con timeout
mqtt $dir /running 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 #cat $COM
fi fi
fi fi
} }
mqtt(){
mosquitto_pub -h atrent.it -t SistEmbed/arduino-cli$2 -m "$1"
}
while while
echo === $(date) === echo === $(date) ===
do do
for dir in $(find $DIR -type d |grep $SKETCH|grep -v '\.st') for dir in $(find $DIR -type d |grep $SKETCH|grep -v '\.st')
do do
echo +++ $dir +++ echo +++ $dir +++
compila $dir compilaLancia $dir
#mqtt senzatopic #mqtt senzatopic
#mqtt "contopic sadlkjasldk asldj asldj alskdj" /TOPIC #mqtt "contopic sadlkjasldk asldj asldj alskdj" /TOPIC
done done
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment