// STUDIO SERVO PER OSCILLAZIONE BACINELLA
//
// 2024/04/20
#include <Servo.h>
Servo servo1;
unsigned long time;
unsigned long timeServo;
// verificare durataServo con oscillazione liquido nella bacinella
unsigned long durataServo=25;
// angoli da valutare
int ang1=30;
int ang2=150;
void setup() {
Serial.begin(9600);
servo1.attach(9);
oscilla(30); // passare tempo in secondi
}
void loop() {
}
void oscilla(unsigned long durata) { // passare tempo in secondi
durata=durata*1000;
time=millis();
timeServo=millis();
int ang=ang1;
do {
do {
if(millis()-time>durata) break;
if(millis()-timeServo>durataServo) {
servo1.write(ang); Serial.println(ang);
ang++;
timeServo=millis();
}
} while(ang<=ang2);
ang=ang2;
do {
if(millis()-time>durata) break;
if(millis()-timeServo>durataServo) {
servo1.write(ang);Serial.println(ang);
ang--;
timeServo=millis();
}
} while(ang>=ang1);
} while(millis()-time<durata);
Serial.println(millis()-time);
Serial.println(ang);
// ripristina posizione iniziale servo
for(int i=ang;i>=ang1;i--) {
servo1.write(i);
delay(durataServo);
}
}