Hola,soy newbie, quizas no vaya en este foro pero al editar no soy capaz de cambiarlo para otro el tema es que me tire a la piscina con esto, el tema que me ocupa ahora es sustituir una electronica de un porton de garaje abatible que se quemo, mi idea es sustituirla por un arduino nano con dos reles de fuerza 24v cc y un modulador de pulsos para controlar el motor de 24v cc ( el modulador seria el ibt2), aprovecharia las señales de los finales de carrera que me llegan a la caja original , y probablemente le añada y que no esta implementado en el codigo una barrera fotosensible.
El funcionamiento intento que sea como la electronica original, el decir posicion inicial final de carrera inf pisado le damos un pulso y abre (hace una pequeña rampa de arranque) si mientras esta abriendo le doy otro pulso para, le doy otro pulso y baja, haciendo lo mismo si esta cerrando, por supuesto cuando pisa algun fin de carrera para. el problema que tengo es que no soy capaz de implementar en codigo el uso de millis() en la temporizacion de la rampa de subida o bajada y actualmente uso delay(), pero el problema que veo es de seguridad que si le doy un pulso mientras esta en la rampa de arranque no para hasta que no agota la temporizacion de los dos delays.
Os agradeceria me ayudaseis a implementar esa funcion en los void bjar y subir para que el micro no se detuviera en los delays
void subir()// programacion apertura puerta
{
analogWrite(Pbajar,0);
digitalWrite(Rf1,HIGH);
analogWrite(Psubir,100);
digitalWrite(Rf2,HIGH);
delay(2000);
for(subiendo=100; subiendo<=255; subiendo++){
analogWrite(Psubir,subiendo);
delay (10);
abriendo=1;
motor=1;
}
}
void bajar()// programacion cierre puerta
{
analogWrite(Psubir,0);
digitalWrite(Rf1,HIGH);
analogWrite(Pbajar,100);
digitalWrite(Rf2,HIGH);
delay(2000);
for(bajando=100; bajando<=255; bajando++){
analogWrite(Pbajar,bajando);
delay (10);
cerrando=1;
motor=1;
}
un saludo y gracias