Hola, buenas noches desde Barcelona España. lo primero es agradecer al Sr. Surbyte que gracias a el he podido entrar en este foro.
Bueno soy muy nuevo en esto de Arduino y espero lo tengan en cuenta y por mi parte ajustarme a las normas del foro.
En el sketch que pongo tengo varios errores y no se como arreglarlo, por separado funciona bien pero al juntarlos no, cuando lo pongo en marcha siempre arranca en 90º y quiero que arranque en 0º o 180º y no se como hacerlo, y el strobo cuando pulso el boton1 el strobo funciona, bueno en realidad empieza a funcionar cuando conecto el Aduino, cuando el servo va de 0 a 180 o al reves se para el strobo y luego sigue funcionando,
la idea es que cuando arranque ya sea 0º o 180º este apagado, pulsando boton1 el servo gire de 0º hasta 180º y estrobo encienda hasta que apriete boton2 y se apague y el servo pase de 180º a 0º..
P.D. es para la rampa trasera o porton de un camion o trailer gracias por su ayuda por adelantado
[
#include <Servo.h>
Servo servo1;
int pos = 0; //Posicion del servo que arranque en (0) o en (180) No en (90)
int boton1 = 2; //Arriba Rampa
int boton2 = 4; //Abajo Rampa
int estadoLed; //guarda el estado del led (encendido o apagado)
int estadoLed1; //guarda el estado del led (encendido o apagado)
int periodo = 100; // tiempo que esta el LED en alto y bajo
int periodo1 = 50; // tiempo que esta el LED en alto y bajo
unsigned long tiempoAnterior = 0; //guarda tiempo de referencia para comparar
unsigned long tiempoAnterior1 = 0; //guarda tiempo de referencia para comparar
void setup()
{
servo1.attach(3);
pinMode(boton1, INPUT); //configura la salida del boton (Arriba Rampa)
pinMode(boton2, INPUT); //configura la salida del boton (Abajo Rampa)
pinMode(5,OUTPUT); //configura la salida
pinMode(6,OUTPUT); //configura la salida
}
void loop()
{
if(digitalRead(boton1) == HIGH && digitalRead(boton2) == LOW)
{
for(pos = 0; pos <=180 ; pos +=1)
{
servo1.write(pos);
delay(10);
}
}
if(millis()>tiempoAnterior+periodo){ //si ha transcurrido el periodo programado
estadoLed=!estadoLed; //cambia el estado del led cada 10ms
digitalWrite(5,estadoLed); //actualiza el estado del led
tiempoAnterior=millis(); //guarda el tiempo actual como referencia
}
if(millis()>tiempoAnterior1+periodo1){ //si ha transcurrido el periodo programado
estadoLed1=!estadoLed1; //cambia el estado del led cada 10ms
digitalWrite(6,estadoLed1); //actualiza el estado del led
tiempoAnterior1=millis(); //guarda el tiempo actual como referencia
}
if(digitalRead(boton2) == HIGH && digitalRead(boton1) == LOW)
{
for(pos = 180; pos >=0 ; pos-=1)
{
servo1.write(pos);
delay(10);
}
}
}]