Salve a tutti, avrei necessità di muovere un servo motore con la tastiera del mio pc; mio spiego meglio: voglio utilizzare il pulsanti (numeri) da 0 a 7 per spostare il mio servo motore che fa una rotazione di 180°. ho scritto un codice che mi da dei problemi, mi fa girare il motore con i pulsanti, ma non torna indietro, incrementa solo i gradi, ad esempio premendo su pulsante 1 non torna in posizione 1 ma avanza e poi stranamente premendo un pulsante fuori range ad esempio 9 torna indietro un pò alla volta continuando a premere sempre 9 lo faccio ritornare alla posizione originaria.
Il codice:
int servoPin = 2; // Pin di controllo per il servo motore
int minPulse = 500; // Posizione minima del servo
int maxPulse = 2500; // Posizione massima del servo
int pulse = 0; // Quantità di impulso per il servo
long lastPulse = 0; // Tempo in millisecondi dell'ultimo impulso
int refreshTime = 20; // Tempo richiesto tra gli impulsi
int analogValue = 0; // Valore restituito dal sensore analogico
int analogPin = 0; // Pin analogico del potenziometro
int val;
void setup() {
pinMode(servoPin, OUTPUT); // Setta il pin del servo in modalità output
pulse = minPulse; // Setta la posizione del motore sul valore minimo
Serial.begin(9600);
}
void loop() {
if (Serial.available() >0) {
val = Serial.read();
pulse = map(val,0,7,minPulse,maxPulse); // Converte il valore analogico in un intervallo tra minPulse e maxPulse.
// Invia un nuovo impulso al servo se il tempo di refresh (20 ms) è trascorso
if (millis() - lastPulse >= refreshTime) { // millis() Restituisce il numero di millisecondi da quando la scheda Arduino ha iniziato l'esecuzione del programma corrente.
// Questo numero di overflow (tornare a zero), dopo circa 50 giorni.
digitalWrite(servoPin, HIGH); // Accende il motore
delayMicroseconds(pulse); // La lunghezza dell'impulso setta la posizione del motore.Mette in pausa il programma per la quantità di tempo specificato come parametro.
digitalWrite(servoPin, LOW); // Spegne il motore
lastPulse = millis(); // Salva il tempo dell'ultimo impulso
}
}
}
Aiuto!!!