hola gente como estan?Espero que esten bien y sanos todos en estos tiempos que corren..les quiero hacer llegar una inquietud que tengo,resulta que estoy haciendo las primeras pruebas con el hardware de mi proyecto,la idea es que el servo motor en una funcion automatica vaya desde los 2 a los 65 grados paulatinamente(lo estoy realizando con un for) y luego poder utilizarlo en ese margen de grados pero mediante un potenciometro.
Resulta ser que,inicie haciendo las pruebas con el potenciometro y todo funcionaba bien..luego agregue en el mismo programa el for para que lo haga paulatino(sin crear funciones ni nada ,solamente todo dentro del loop para probar)..resulta ser que iba y venia como esperaba..se me ocurrio aprovechando que se repetia el ciclo de loop en un momento probar el potenciometro para ver si sucedia algo(por si en un futuro,se tocaba por error mientras estaba automatico)..y no sucedio nada,siguio repitiendo la ida y vuelta paulatina..
Luego,borre el for para que lo haga paulatino y quise volver a hacerlo con la lectura analoga del pot y no hace nada..
La señal del potenciometro se lee bien(probe imprimiendo en el serial y se ve todos los valores cuando giro),pero en la funcion no hace nada..osea,el servo funciona porque si cargo el programa "paulatino"funciona normalmente,pero si pongo solo el del pot no lo hace...que puede estar pasando?
dejo el codigo aca
#include <Servo.h>
int Lecturas[10]; //Vector de lecturas.
int Val, i = 0, Total = 0, Promedio = 0;
int ang1;
Servo MiServo;
void setup() {
MiServo.attach(9);
for (i = 0; i < 10; i++) //Inicialización del vector.
Lecturas[i] = 0;
i = 0;
}
void loop() {
Total = Total - Lecturas[i];
Lecturas[i] = analogRead(A5);
Total = Total + Lecturas[i];
i = i + 1;
if (i >= 10) {
i = 0;
Promedio = Total / 10;
Val = map(Promedio, 0, 1023, 2, 65); // el "2"es la altura el "65"es el descanso(2 alto 65 bajo)
for ( ang1 = 2; ang1 < 65 ; ang1++ )
{ MiServo.write(ang1);
delay(75);//velocidad bajar(mayor mas lento)
}
delay(1000);//tiempo que se mantiene abajo
for ( ang1 = 65; ang1 > 2 ; ang1-- )
{ MiServo.write(ang1);
delay(10);//velocidad subir(menor mas rapido)
}
delay(3000);//tiempo que se mantiene arriba
}
}