Salve, come mai il mio servo non arriva ansi non parte da 0 e non arriva ad 180?.
Vorrei che non ripetesse i valori all'infinito nella seriale, ora questo me lo fa.. ma ho notato che non e non parte da 0 ad arrivare a 180, mi si ferma prima e parte dopo il 4.
Ecco il codice:
#include <Servo.h>
int ServoPin = 11;
int POTPin= 14;
int POT;
Servo servo;
int oldPOT;
void setup()
{
Serial.begin(115200);
servo.attach(ServoPin);
}
void loop()
{
POT = analogRead(POTPin);
POT = map(POT, 0, 1023, 0, 180);
if(abs(POT - oldPOT)>2)
{
servo.write(POT);
Serial.println(POT);
oldPOT = POT;
}
}
Avete idea come mai ?
Grazie mille e buona serata.
ok, scusate dell'assenza.. ma nel frattempo ho riscritto il codice. Ma perché mangia sempre di 5 gradi e 2 gradi all'inizio. Ho messo la funzione abs, per far che non ripete inutilmente i valori stampati alla seriale.
Questo è il codice scritto adesso:
#include <Arduino.h>
#include <Servo.h>
int SERVOpin = 11;
int POTENZIOMETROpin = A0;
int valPotenziometro;
int mapPotenziometro;
Servo servo;
int tempo = 20;
unsigned long tempo_millis;
int vecchia;
void setup() {
Serial.begin(115200);
servo.attach(SERVOpin);
tempo_millis = millis();
}
void loop() {
valPotenziometro = analogRead(POTENZIOMETROpin);
mapPotenziometro = map(valPotenziometro, 0, 1023, 0, 180);
if (abs(mapPotenziometro - vecchia) > 2) {
if ((millis() - tempo_millis) > tempo) {
servo.write(mapPotenziometro);
Serial.println(mapPotenziometro);
tempo_millis = millis();
}
vecchia = mapPotenziometro;
}
}