salve
ho collegato ad arduino uno un FRS e un servo che va da 0 a 180
in base alla pressione applicata all FRS imposto 3 gradazioni...
90 (no pressione)
45 (pressione minima)
135 (pressione massima)
e funziona
il codice è il seguente
#include <SoftwareServo.h>
SoftwareServo myservo; // create servo object to control a servo
int aperto = 0; //variabile per switch case per aprire o chiudere i cassetti
const int limite = 600;
int fsrPin = 0; // the FSR and 10K pulldown are connected to a0
int peso; // the analog reading from the FSR resistor divider
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
peso = analogRead(fsrPin);
if (peso <= 100) {
aperto = 0;
} else if (peso <= limite) {
aperto = 1;
} else {
aperto = 2;
}
switch (aperto) {
case 0:
myservo.write(90);
SoftwareServo::refresh();
break;
case 1:
myservo.write(135);
SoftwareServo::refresh();
break;
case 2:
myservo.write(45);
SoftwareServo::refresh();
break;
}
delay(150);
}
ora la domanda è questa...questo tipo di situazione fa si che COSTANTEMENTE, se si verifica (ad esempio) il caso 0, venga eseguito il comando myservo.write(90)
è possibile evitare di continuare a farlo eseguire se il servo ha effettivamente raggiunto i 90 gradi?
ho provato con la funzione myservo.read() ma non funziona bene o meglio io non sono in grado di farla funzionare a dovere..mi sapreste dare una mano?
oppure è una cosa "stupida" quello che cerco di fare in quanto il servo una volta arrivato lì sa già lui che non deve tentare oltre?
qui un breve video di come si comporta:
grazie
saluti