salve a tutti
mi rivolgo a voi per un aiuto riguardo ad un programma per arduino che mi faccia comandare un servo motore, in modo che quando lo premo vada da 0 gradi a 90, e quando lo premo successivamente da 90 a 0 gradi. purtroppo non sono riuscito a trovare molto su internet e non sono molto esperto di servo motori, quindi se qualcuno mi riuscisse a dare una mano con un programma funzionante (fatto da se o trovato da qualche parte) mi farebbe un grande favore.
ringrazio in anticipo
Io userei una variabile stato che assume due valori 0 e 1, premo il pulsante se la variabile vale 0 la porto a uno, se la variabile vale 1 la porto a zero.
In base al valore della variabile eseguo una cosa o un altra.
NASCE UN PROBLEMA, la rotazione del servo deve in teoria essere eseguita un unica volta, esempio la variabile stato vale 1, eseguo la rotazione ma un unica volta.
Allora ho pensato a una seconda variabile Eseguito che assume due stati true e false, in modo tale da eseguire la rotazione un unica volta.
#include <Servo.h>
#define PULSANTE 10
Servo myservo; // create servo object to control a servo
byte stato=0;
boolean eseguito=true;
void setup() {
pinMode(PULSANTE, INPUT);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(0);
}
void loop() {
if(digitalRead(PULSANTE){
if(stato==0){
stato=1;
eseguito=false;
}else{
stato=0;
eseguito=false;
}
}// end if
if(stato==1 && eseguito==false){
myservo.write(90);
eseguito=true; // esegue una sola volta
}else if(stato==0 && eseguito==false){
myservo.write(0);
eseguito=true; //esegue una sola volta
}
}
Se ti sono stato utile un punto di carma è gradito, il pulsante add qui a fianco
1 Like