Excelente. A efectos de optimizar el diseño de la caja, en lo personal hubiese colocado los pulsadores por debajo de la tapa, que solo sobresalgan los botones. De igual modo, hubiese colocado una etiqueta que identifique los botines. Bueno, solo algo de diseño. Por lo demás, excelente proyecto. Gracias por la generosidad de compartirlo. Estoy aprendiendo estas cosas. Tienes un nuevo suscriptor.
Excelente proyecto Pero creo que se te pasó un detalle mi importante , utilizar la eeprom del Arduino para guardar los datos en caso que falle o se apague la alimentación por lo que los datos del tiempo se perderían
Hola amigo viendo el viedeo me surgio una pregunta ya que el ultimo While no lo cerraste con su llave} , pero colocaste nada mas 2 llaves abajo. Eso me da ha entender que el ultimo If mencionado va pero afuera o adentro del ultimo while?
le podemos anexar que despues de que acabe el tiempo se vuelva encender dentro de 2 minutos si nadie lo reinicio? y vuelva a contar el tiempo anterior?
una consulta tengo un proyecto que quiero hacer un remporizador para cortar la comunicacion hdmi entre una consola xbox y un televisor. me podrias indicar maso que leementos deberia usar para armar el hardware asi puedo investigar sobre el tema ?
Saludos, gran proyecto, me interesa hacer un timer con ds3231 para que pueda durar desde minutos a dias y el temporizador no se pueda interrumpir manualmente aunque se corte la batería.
Una consulta!!! Si lo pones en 5 segundos y pones Star y pasan 2 segundos y tocas el Star en ese momento el timer se reinicia o ese pulso no cuánta por qué está ejecutando ese tiempo de 5 segundos... Espero ser claro !
Como puedo realizar el cambio de frecuencia y pwm . La frecuencia de 1 a 100 hz y el pwm de 1 a 20 con entradas analogicas tambien realizarle un temporizador . Para 4 salidas
Excelente y este circuito puede ser acoplado a una lavadora que se quemó la tarjeta y convertirlo a manual y el giro de adelante y hacia atrás para que lave hacerlo también con un Arduino, y cómo se puede hacer todo en un solo circuito. Saludos desde Arequipa Perú
se podria hacer con dos o tres salidas temporizadas automaticamente ? es decir que encienda 10 segundos una, se apague, encienda 1 minuto la otra y se apague de forma automatica ?
@@Ideatronic1 claro, pero te dare los creditos a ti, casi no me gusta hacer proyectos de otro canal, aveces veo la miniatura y en vez de ver el video completo de como hacerlo, hago yo solo todo, aunque aveces si me llevo buenos problemas, pero de los errores se aprende :D
Yo necesito hacer un programita que encienda una bomba, se apague, espere dos horas (o tal vez mas) y vuelva a encender.... si no entendi mal tenes un while que cumple el ciclo cada 1 segundo, no? entonces pasas el tiempo total a segundos, y con eso haces la funcion de timer... es asi? gracias, saludos
Hola amigo, una pregunta, con este temporizador puedo hacer q un motor de 110 voltios, trabaje durante 20 segundos, se detenga x 30 segundd , trabaje x 12 más luego se detenga, y que comienze el ciclo de nuevo, y la otra duda es que si puede hacer trabajar a un motor 20 segundos hacia la derecha y luego 20 segundos hacia la izquierda, muchas gracias de antemano🥺
Y como se podría hacer que cada día se encienda a una hora ejemplo y por ejemplo tal como lo tienes como se podría hacer programar 3 horas por ejemplo pero que no se encienda hasta dentro de 5 horas por ejemplo
Existos hermano! Necesito un programa en alduino (codigo) con retardo. la necesidad es la siguiente: mientras el pulsador este sin accionar el pin x este encendido, luego que se accione el pulsador se quede encendido por 10 minutos y luego se apague pero que para volver a encender dure 3 minutos. Lo he hecho con delay pero enciende y apaga cuando desea y no es lo que quiero.
aca comparto el codigo es practicamente el mismo, yo mismo lo modifique para usar 3 pines digitales y uno analogico #include #include #include //////////////////1.-AGREGAR LOS DEFINE--/////////////////////////////////// #define TONO_ERROR 600 #define TIME_INTERVAL 3000 ///////////////////////////////////////////////////////////////////////////// //Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas LiquidCrystal_I2C lcd(0x27,16,2); // intentar con direccion 0x20, 0x27, 0x3F ///////////////////-2.- AGREGAR LAS VARIABLES /////////////////////////////// int buzzer = 7; //Alarma int ahoras = 0; //Variable a mostrar por LCD de las horas int aminutos = 0; //Variable a mostrar por LCD de los minutos int asegundos = 0; //Variable a mostrar por LCD de los segundos int segundostotal = 0; //Tiempo total int msg= 0; //Barrera para el mensaje de bienvenida int start = A1; //Pulsador de arranque //CAMBIAR A1 POR D6 int empieza = 1024; // Variable para almacenaje del pulsador de arranque // NO VA YA QUE ES DIGITAL int buth = 5; //Pulsador de Horas //CAMBIAR A5 POR D5 int butm = 4; //Pulsador de Minutos //CAMBIAR A4 POR D4 int buts = 3; //Pulsador de segundos //CAMBIAR A3 POR D3 int varbuth = 0; //Variable para almacenar el valor del pulsador de horas // NO VA int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos //NO VA int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos // NOVA /////////////////////////CREAMOS VARIABLES NUEVAS///////////////////////////////////////////////////////////////// int horas; //con esta variable leemos la entrada para horas int minutos; //con esta variable leeemos la entrada para minutos int segundos; //con esta variable leemos la entrada para segundos ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void setup() { // Inicializar el LCD lcd.init(); //Encender la luz de fondo. lcd.backlight(); //////////////////////////////////////3.- CONFIGURANDO LOS PINES DE ENTRADA / SALIDA //// pinMode(buzzer, OUTPUT); //Pin de alarma --> Salida pinMode(buth, INPUT); //Pin de pulsador de horas --> Entrada pinMode(butm, INPUT); //Pin de pulsador de minutos --> Entrada pinMode(buts, INPUT); //Pin de pulsador de segundos --> Entrada pinMode(start, INPUT); //Pin de pulsador de arranque --> Entrada msg = 0; //Barrera del mensaje de bienvenida empieza = 1024; //Barrera de arranque varbuth = 1; //Barrera de horas varbutm = 1; //Barrera de minutos varbuts = 1; //Barrera de segundos Serial.begin(9600); /////////////////////////////////////////////////////////////////////////////////////////////// } void loop() { if(msg==0) //Mostramos el mensaje de bienvenida solo una vez { lcd.setCursor(0,0); lcd.print(" Temporizador "); //ACA CAMBIAMOS EL MENSAJE DE BIENVENIDA AREA SUPERIOR lcd.setCursor(1,1); lcd.print(" de Bobinas"); //ACA CAMBIAMOS EL MENSAJE DE BIENVENIA AREA INFERIOR delay(2500); msg = 1; lcd.clear(); } //------------------------------------------------------------------------------------------------- // LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR // EL BOTON DE ARRANQUE //------------------------------------------------------------------------------------------------- do { horas=digitalRead(buth); //Leemos boton de horas //varbuth = analogRead(buth); //Leemos boton de horas minutos=digitalRead(butm); //Leemos boton de minutos //varbutm = analogRead(butm); //Leemos boton de minutos segundos=digitalRead(buts); //Leemos boton de segundos //varbuts = analogRead(buts); //Leemos boton de segundos if (horas==HIGH) //Si el boton ha sido pulsado, aumentamos las horas en una unidad //ACA MODIFICAMOS { ahoras = ahoras + 1 ; delay(250); } if (minutos==HIGH) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad //ACA MODIFICAMOS { aminutos = aminutos + 1; if(aminutos == 60) aminutos = 0; delay(250); } if (segundos==HIGH) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad //ACA MODIFICAMOS { asegundos = asegundos + 1; if(asegundos == 60) asegundos = 0; delay(250); } lcd.setCursor(0,0); lcd.print("Elige el tiempo"); //Muestra mensaje y las HH:MM:SS que vayamos aumentando lcd.setCursor(4,1); if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante. lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S) lcd.print(":"); if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante. lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S) lcd.print(":"); if (asegundos < 10) lcd.print("0"); // Si los segundos son menor que 10, pone un "0" delante. lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1) } while(analogRead(start) == 0); // Se repite el menu de elegir tiempo hasta que pulsemos el boton de arranque. //MODIFICAR EL ARRANQUE segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60); //Convierte el tiempo elegido en segundos!! //------------------------------------------------------------------------------------------------- // UNA VEZ PULSADO EL BOTON DE ARRANQUE Y ACUMULADO EL TIEMPO, ENTRA EN EL SIGUIENTE WHILE // Y NO FINALIZA HASTA TERMINAR LA CUENTA. //------------------------------------------------------------------------------------------------- while (segundostotal > 0) { delay (1000); //Descontamos en periodos de 1 segundo segundostotal--; ahoras = ((segundostotal / 60)/ 60); //Convertimos los segundos totales en horas aminutos = (segundostotal / 60) % 60; //Convertimos los segundos totales en minutos asegundos = segundostotal % 60; //Convertimos los segundos totales en periodos de 60 segundos lcd.setCursor(0,0); lcd.print("Tiempo restante"); //Mostramos mensaje de tiempo restante lcd.setCursor(4,1); if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante. lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S) lcd.print(":"); if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante. lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S) lcd.print(":"); if (asegundos < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1) if (segundostotal == 0) //Si finaliza el tiempo { while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led { lcd.clear(); lcd.setCursor(5,0); lcd.print("Tiempo"); lcd.setCursor(3,1); lcd.print("Finalizado"); sonarTono(TONO_ERROR,TIME_INTERVAL); exit(0); } } } } // ------------------------------------ //SONAR TONO //------------------------------------ void sonarTono(int tono, int duracion) { tone(buzzer,tono,duracion); ////////////////espera////////////// delay (2000); lcd.clear(); return loop(); delay (4000); //espera 4 segundos para volver al inicio }
Gracias por compartir tus conocimientos..... y no se si me podrías apoyar con un mini proyectito que estoy asiendo en Sprint Layout6 te podria mandar mis archivos si esque se puede Gracias Saludos!!!
Hola amigo necesito tu ayuda URGENTEEEEE por favor, te envíe un mensaje al correo con los detalles que necesito añadirle al proyecto y poder graduarme. AYUDAME PORFAVOR....
aca comparto el codigo es practicamente el mismo, yo mismo lo modifique para usar 3 pines digitales y uno analogico #include #include #include //////////////////1.-AGREGAR LOS DEFINE--/////////////////////////////////// #define TONO_ERROR 600 #define TIME_INTERVAL 3000 ///////////////////////////////////////////////////////////////////////////// //Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas LiquidCrystal_I2C lcd(0x27,16,2); // intentar con direccion 0x20, 0x27, 0x3F ///////////////////-2.- AGREGAR LAS VARIABLES /////////////////////////////// int buzzer = 7; //Alarma int ahoras = 0; //Variable a mostrar por LCD de las horas int aminutos = 0; //Variable a mostrar por LCD de los minutos int asegundos = 0; //Variable a mostrar por LCD de los segundos int segundostotal = 0; //Tiempo total int msg= 0; //Barrera para el mensaje de bienvenida int start = A1; //Pulsador de arranque //CAMBIAR A1 POR D6 int empieza = 1024; // Variable para almacenaje del pulsador de arranque // NO VA YA QUE ES DIGITAL int buth = 5; //Pulsador de Horas //CAMBIAR A5 POR D5 int butm = 4; //Pulsador de Minutos //CAMBIAR A4 POR D4 int buts = 3; //Pulsador de segundos //CAMBIAR A3 POR D3 int varbuth = 0; //Variable para almacenar el valor del pulsador de horas // NO VA int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos //NO VA int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos // NOVA /////////////////////////CREAMOS VARIABLES NUEVAS///////////////////////////////////////////////////////////////// int horas; //con esta variable leemos la entrada para horas int minutos; //con esta variable leeemos la entrada para minutos int segundos; //con esta variable leemos la entrada para segundos ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void setup() { // Inicializar el LCD lcd.init(); //Encender la luz de fondo. lcd.backlight(); //////////////////////////////////////3.- CONFIGURANDO LOS PINES DE ENTRADA / SALIDA //// pinMode(buzzer, OUTPUT); //Pin de alarma --> Salida pinMode(buth, INPUT); //Pin de pulsador de horas --> Entrada pinMode(butm, INPUT); //Pin de pulsador de minutos --> Entrada pinMode(buts, INPUT); //Pin de pulsador de segundos --> Entrada pinMode(start, INPUT); //Pin de pulsador de arranque --> Entrada msg = 0; //Barrera del mensaje de bienvenida empieza = 1024; //Barrera de arranque varbuth = 1; //Barrera de horas varbutm = 1; //Barrera de minutos varbuts = 1; //Barrera de segundos Serial.begin(9600); /////////////////////////////////////////////////////////////////////////////////////////////// } void loop() { if(msg==0) //Mostramos el mensaje de bienvenida solo una vez { lcd.setCursor(0,0); lcd.print(" Temporizador "); //ACA CAMBIAMOS EL MENSAJE DE BIENVENIDA AREA SUPERIOR lcd.setCursor(1,1); lcd.print(" de Bobinas"); //ACA CAMBIAMOS EL MENSAJE DE BIENVENIA AREA INFERIOR delay(2500); msg = 1; lcd.clear(); } //------------------------------------------------------------------------------------------------- // LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR // EL BOTON DE ARRANQUE //------------------------------------------------------------------------------------------------- do { horas=digitalRead(buth); //Leemos boton de horas //varbuth = analogRead(buth); //Leemos boton de horas minutos=digitalRead(butm); //Leemos boton de minutos //varbutm = analogRead(butm); //Leemos boton de minutos segundos=digitalRead(buts); //Leemos boton de segundos //varbuts = analogRead(buts); //Leemos boton de segundos if (horas==HIGH) //Si el boton ha sido pulsado, aumentamos las horas en una unidad //ACA MODIFICAMOS { ahoras = ahoras + 1 ; delay(250); } if (minutos==HIGH) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad //ACA MODIFICAMOS { aminutos = aminutos + 1; if(aminutos == 60) aminutos = 0; delay(250); } if (segundos==HIGH) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad //ACA MODIFICAMOS { asegundos = asegundos + 1; if(asegundos == 60) asegundos = 0; delay(250); } lcd.setCursor(0,0); lcd.print("Elige el tiempo"); //Muestra mensaje y las HH:MM:SS que vayamos aumentando lcd.setCursor(4,1); if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante. lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S) lcd.print(":"); if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante. lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S) lcd.print(":"); if (asegundos < 10) lcd.print("0"); // Si los segundos son menor que 10, pone un "0" delante. lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1) } while(analogRead(start) == 0); // Se repite el menu de elegir tiempo hasta que pulsemos el boton de arranque. //MODIFICAR EL ARRANQUE segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60); //Convierte el tiempo elegido en segundos!! //------------------------------------------------------------------------------------------------- // UNA VEZ PULSADO EL BOTON DE ARRANQUE Y ACUMULADO EL TIEMPO, ENTRA EN EL SIGUIENTE WHILE // Y NO FINALIZA HASTA TERMINAR LA CUENTA. //------------------------------------------------------------------------------------------------- while (segundostotal > 0) { delay (1000); //Descontamos en periodos de 1 segundo segundostotal--; ahoras = ((segundostotal / 60)/ 60); //Convertimos los segundos totales en horas aminutos = (segundostotal / 60) % 60; //Convertimos los segundos totales en minutos asegundos = segundostotal % 60; //Convertimos los segundos totales en periodos de 60 segundos lcd.setCursor(0,0); lcd.print("Tiempo restante"); //Mostramos mensaje de tiempo restante lcd.setCursor(4,1); if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante. lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S) lcd.print(":"); if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante. lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S) lcd.print(":"); if (asegundos < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1) if (segundostotal == 0) //Si finaliza el tiempo { while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led { lcd.clear(); lcd.setCursor(5,0); lcd.print("Tiempo"); lcd.setCursor(3,1); lcd.print("Finalizado"); sonarTono(TONO_ERROR,TIME_INTERVAL); exit(0); } } } } // ------------------------------------ //SONAR TONO //------------------------------------ void sonarTono(int tono, int duracion) { tone(buzzer,tono,duracion); ////////////////espera////////////// delay (2000); lcd.clear(); return loop(); delay (4000); //espera 4 segundos para volver al inicio }