buenas tardes, ya hacia tiempo que no entraba pero me he encontrado con un muro que no doy solucionado yo solo descargue este codigo para mover unos servos. pero
es un ciclo continuo, quisiera añadirle un pulsador para que iniciara el ciclo , este es el codigo :
#include <ESP32Servo.h>
// create four servo objects
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
// Published values for SG90 servos; adjust if needed
int minUs = 500;
int maxUs = 2500;
// These are all GPIO pins on the ESP32
// Recommended pins include 2,4,12-19,21-23,25-27,32-33
int servo1Pin = 18;
int servo2Pin = 19;
int servo3Pin = 22;
int servo4Pin = 23;
int pos = 0; // initial position in degrees
void setup()
{
servo1.attach(servo1Pin, minUs, maxUs);
servo2.attach(servo2Pin, minUs, maxUs);
servo3.attach(servo3Pin, minUs, maxUs);
servo4.attach(servo4Pin, minUs, maxUs);
}
void loop() {
for (pos = 0; pos <= 45; pos += 1) {
// in steps of 1 degree
servo1.write(pos);
delay(20);
}
for (pos = 0; pos <= 45; pos += 1) {
// in steps of 1 degree
servo2.write(pos);
delay(20);
}
for (pos = 45; pos >= 0; pos -= 1) {
// in steps of 1 degree
servo3.write(pos);
delay(20);
}
for (pos = 0; pos <= 60; pos += 1) {
// in steps of 1 degree
servo4.write(pos);
delay(20);
}
for (pos = 45; pos >= 0; pos -= 1) {
servo1.write(pos);
delay(20);
}
for (pos = 45; pos >= 0; pos -= 1) {
servo2.write(pos);
delay(20);
}
for (pos = 0; pos <= 45; pos += 1) {
servo3.write(pos);
delay(20);
}
for (pos = 60; pos >= 0; pos -= 1) {
servo4.write(pos);
delay(20);
}
}
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
Piensa un título y descriptivo. nada de "Una ayudada? no me aclaro" es un título que no dice nada.
Los códigos/errores deben postearse usando etiquetas. Corrige por favor
pero no acepta el input pullup etc por eso pregunto
encontre este codigo pero no se como mandarle que inicie el ciclo :
// Declaramos el pin al que estará conectado el pulsador
int pinPulsador=4;
// Declaramos el pin al que estará conectado el led
int pinLed=2;
void setup()
{
//Determinamos que el pin del pulsador sera para recibir
pinMode(pinPulsador, INPUT);
//Determinamos que el pin del led sera para salir
pinMode(pinLed, OUTPUT);
}
void loop()
{
//Si la señal del pulsador es activa encendemos el led
if (digitalRead(pinPulsador) == HIGH) {
digitalWrite(pinLed, HIGH);
}
//de lo contrario apagamos el led
else {
digitalWrite(pinLed, LOW);
}
delay(10);
}
use un pull up para iniciar el ciclo pero estaba mal y ya me quede ahi atrancado, ahi puse el tutorial que me dierais para el led pero no tengo ahora mismo ni repajolera idea de como añadirlo al programa de los servos y no encuentro nada para leer que me de alguna direccion , no te enfades maximo que hace un año que no toco el arduino
mil perdones pensé que lo puse en el primer post ,fuente partida (usb para el esp32 y alimentanción de 5v para los servos) gnd y masa aqui lo uso igual (ya ya se que no es lo mismo), como como hay ya me has perdido mas aun
El GPIO02 no es la mejor opción para conectar el pulsador porque está conectado el LED "L" y además lo usa el bootloader, te recomiendo que uses otro pin para evitarte posibles dolores de cabeza.
al final he cambiado al arduino leonardo(pro micro pone en la placa) pero sigo sin dar con la forma de iniciar el ciclo con un pulsador, ya no se que hacer
Es tu dinero, no voy a decirte como gastarlo pero si no empiezas por entender lo que haces, por más que cambies de placa, las cosas no van a funcionar mágicamente.
Como ya te dije, te lo han explicado en otra consulta, se nota que mucha importancia no le has dado sino ya sabrías hacerlo. Así y todo te pasé una solución en #8.
No había visto tu respuesta en #13.
No, está mal, eso que escribiste es lo mismo que
int PIN_BOTON = 4 ;
int pos = 0; // initial position in degrees
void setup()
{
byte boton = digitalRead(PIN_BOTON);
while (boton == HIGH) yield(); // el punto y coma termina la instrucción
boton = digitalRead(PIN_BOTON); // esto quedó fuera del while()
como ves, el lazo while() queda en un bucle infinito ejecutando yield() porque nunca más se vuelve a leer el pulsador.
Y todo por no prestar atención.
Yo dije que pusieras yield()dentro del lazo, y dentro es entre las llaves.
aah coño que no lo entendi (ando con mas cosas maximo, por mucho que me esfuerce con entenderlo, a la media hora ya no tengo ni idea y luego ya me pierdo por completo, el cambio de placa fur por un problema que daba interferencias y los servos (7 en total) se volvian locos, muchisimas gracias por tu infinita paciencia y mil perdones