Muy agradecido por tu labor pedagógica. Sería posible conseguir el listado del código, estaría perfecto, en tu web no he logrado encontrar la segunda parte, espero que la publique pronto. Creo que tengo todo el código pero estaría bien que lo publicaras , así como el esquemático. Gracias por tu trabajo.
Gracias por la explicación. Sabes si hay algún buffer que deba limpiar cada ciertas horas. Estoy haciendo un programa que corre infinitamente y quería saber si después de unos días o semanas debería limpiar el Buffer.
Buenisimo todos me mandaban a mirar la funcion y no había forma de que la entienda, ahora me quedo mucho mas clara!! Te hago una consulta a ver si me aclaras el panorama, uso 1 boton en en una entrada digital como Star/stop en un contador, quisiera mantener presionado el mismo boton durante 3000ms y que el contador vuelva a 0. Tengo que declarar esos 3000ms antes del void setup o directamente puedo hacerlo en el loop?
Hola tengo una duda estoy haciendo un tablero de control para unas bombas de agua con rele pero quiero que se activen cada 40 minutos con un rtc ds3231 pero solo puedo hacerlo por hora hay alguna manera de pasarlo a minutos y plasmarlo en una lcd
Si, usas millis. En el video explico como usarlo. Ahora vengo sin subir nada por una corrección en la tesis que tengo que hacer. Cuando termine con eso vuelvo a subir y veo si te puedo hacer ese video
ojala puedan ayudarme necesito encender un led por 3 segundos al presionar un boton luego que se mantenga apagado, hasta que presione boton, con millis. muchas gracias
Hola amigo, recientemente he programado un motor a pasos para que gire cuando le introduzco los pasos en el monitor serie y me preguntaba si con la funcion milis se podra contar cuanto tarda en dar dichos pasos. Gracias.
Hola.Haber si me podeis ayudar. Necesito mover un motor de 12 voltios durante 25 segundos en dirreccion horaria luego el motor pare. Tras los 25 segundos y con el motor parado necesito mover un servo 90 grados . Y esperar 30 segundos. Tras esperar los 30 segundos necesito que el servo se mueva 90 grados atras ( volver en donde estaba inicialmente)ahora necesito que el motor se mueva durante 25 segundos en dirreccion antihoraria(reverso) Y asi succesivamente. Todo esto con un arduino. Necesito codigo y esquema.Gracias de antemano
Hola, soy Adrian de Quilmes, como estas?, queria consultarte como hacer un menu con 4 botones, MENU, EXIT, IZQ. Y DER. con maquina de estados finitos. pero viendo que vos usaste un encoder rotatorio para seleccionar las pantallas. me cuesta un poco acceder a todas las pantallas,, ya que en todo momento los botones generan un evento y no dentro de cada pantalla. te agradeceria una respuesta a esto, muchas gracias. excelentes los videos y explicaciones.
hola buenas noches, excelente explicación! quiero ejecutar una funcion x cada 10 minutos, utilizando este código la variable dt tendría que ser igual 600000? en caso de que ese sea el valor sigue siendo una variable int?
Por ahí leí que el millis, resetea después de 50 días o algo asi...tendría que volver a buscar...como no lo uso no le doy pelota...Pero suponiendo que no llegué a medirte 10 minutos y mida 2 minutos por ej...lo que tenés que hacer es contar que esos 2 minutos, ocurran 5 veces...5x2=10...ahí tenés los 10 minutos que precisás...Para mi es mejor usar interrupciones...más arriba dejé un ejemplo de una INT que sucede cada 1 segundo en modo CTC...también podés usar el modo OVERFLOW, es lo mismo...Si ese código parece complicado, (es programación a bajo nivel, directo a los registros del micro), usá attachInterrupt
Tengo una pregunta, como podés reiniciar el reloj interno ?? Esq cuando ya lleva mucho tiempo el valor q retorna millis() es muy grande y me desborda la variable donde lo almaceno 😭
Hola buen día, ¿si por ejemplo quisiera hacer un sistema que tenga encendido un motor 6 horas y apagado otros 6 horas ? Usando esta función el tiempo se desplaza :/, al cabo de 4 ciclos ya no va en 24 minutos si no en 26 :/ , es un error mío o de la función ? Saludos
i dont understand why people using variable for millis(), becuase they can simply call that function without needs of saving that value to variable. You have -4 bytes in RAM because of that...
Super facil...no me anduvo GG...No se que pasa !!! sera que en el MINi PRO no anda millis() ??? no hay caso, meti unos while, reemplace variable DT por 100 por 1000, etc...NO ME ANDA LPMQLP !!!-------------------AGREGO...será la versión del IDE ??? Cual usas ahí ???
Lo estoy probando de todas formas...leyendo un poco por ahi, y por allá...me di cuenta que el problema puede estar en el SO, todavía no largo XP...Parece que reportan algunos problemas con la transmision serie...asi, que probé de bajar los baudios a 1200 y hubo cambios...Pero sigue haciendo lo que quiere...A 9600 los saltos de millis() siempre estan entre 20 y 24ms, sin importar el intervalo (tu variable DT) que intente, es decir no le da bola...Bajando los baudios del puerto serie, sigue sin dar bola, pero refresca cada 200ms...ahi puedo ver parpadear el LED que viene en el PIN13 del MINI...Intenté sacando la transmision serie y el LED queda clavado...GG !!! me parece que no me sirve este MILLIS(), parece una buena opción a interrupciones...Pdta: empecé con ARDUINO hace 2 semanas, soy un viejo programados en ASM desde hace 15 años...con estos bichitos es una locura hoy día !!!
FIJATE ESTE...Ahora busco los otros 12 que hice, con WHILE, con la declaracion de millis() adentro del loop, etc, etc...Pero es lo mismo me parece. unsigned long ahora = 0; int led = 13; boolean estado = true; void setup() { Serial.begin(9600); delay(1000); pinMode(led,OUTPUT); unsigned long ahora = millis(); } void loop(){ if(millis() - ahora > 1000);{ ahora = millis(); estado = digitalRead(led); digitalWrite(led,!estado); Serial.print("tiempo: "); Serial.println(ahora); Serial.print("millis: "); Serial.println(millis()); } Serial.println("HOLA"); }
ESTE ES MAS PARECIDO AL TUYO !!! unsigned long ahora = 0; unsigned long antes = 1500; void setup() { Serial.begin(9600); delay(1000); } void loop(){ unsigned long ahora = millis(); if(ahora - antes > 2000);{ antes = millis(); //antes = ahora; Serial.print("tiempo: "); Serial.println(ahora); Serial.print("millis: "); Serial.println(millis()); } Serial.println("HOLA"); }
que buen aporte me ha ayudado para tomar datos de un sensor cada 1 segundo y hacer promedio de valores cada 1 hora
Muy agradecido por tu labor pedagógica. Sería posible conseguir el listado del código, estaría perfecto, en tu web no he logrado encontrar la segunda parte, espero que la publique pronto. Creo que tengo todo el código pero estaría bien que lo publicaras , así como el esquemático. Gracias por tu trabajo.
Muchas gracias!, en muchos ejemplos de programación esta función suponía un embrollo para mi, pero ahora me ha quedado mas claro, muy bien explicado!
Gracias por la explicacion tan completa , saludos desde colombia
Gracias, bien explicado, un cordial saludo desde Mar del Plata, Argentina.
muchas gracias!
Gracias por la explicación. Sabes si hay algún buffer que deba limpiar cada ciertas horas. Estoy haciendo un programa que corre infinitamente y quería saber si después de unos días o semanas debería limpiar el Buffer.
Excelente explicación amigo me costaba un poco entender esta función.. ahorra la entiendo Saludos
gran video , espero pueda subir mas acerca de arduino Gracias!!!!
Gracias , lo explicaste bien... Un suscrito más .
te mando saludos desde México.
bienvenido......ya ire subiendo mas material..... vengo atareado
Buenisimo todos me mandaban a mirar la funcion y no había forma de que la entienda, ahora me quedo mucho mas clara!! Te hago una consulta a ver si me aclaras el panorama, uso 1 boton en en una entrada digital como Star/stop en un contador, quisiera mantener presionado el mismo boton durante 3000ms y que el contador vuelva a 0. Tengo que declarar esos 3000ms antes del void setup o directamente puedo hacerlo en el loop?
Hola tengo una duda estoy haciendo un tablero de control para unas bombas de agua con rele pero quiero que se activen cada 40 minutos con un rtc ds3231 pero solo puedo hacerlo por hora hay alguna manera de pasarlo a minutos y plasmarlo en una lcd
Muy buen tutorial , pero existe alguna forma de poder detener el programa un tiempo elegido a través de un menú? Gracias.
Muy buena explicación, saludos
Gracias por la explicación... Tienes alguna idea de como programar arduino y un sensor de temperatura ds18b20 sin usar el delay obligatorio...
Si, usas millis. En el video explico como usarlo. Ahora vengo sin subir nada por una corrección en la tesis que tengo que hacer. Cuando termine con eso vuelvo a subir y veo si te puedo hacer ese video
ojala puedan ayudarme necesito encender un led por 3 segundos al presionar un boton luego que se mantenga apagado, hasta que presione boton, con millis. muchas gracias
Sabes si el milli funciona para hacerlo cada media hora?
Amigo muy bueno pero puedes hacer un acercamiento a la pantalla de arduino porque no se puede ver el Codigo muy bien cuando estás explicando gracias
Es muy cierto se ve un carajo
Hola amigo, recientemente he programado un motor a pasos para que gire cuando le introduzco los pasos en el monitor serie y me preguntaba si con la funcion milis se podra contar cuanto tarda en dar dichos pasos. Gracias.
Hola.Haber si me podeis ayudar. Necesito mover un motor de 12 voltios durante 25 segundos en dirreccion horaria luego el motor pare. Tras los 25 segundos y con el motor parado necesito mover un servo 90 grados . Y esperar 30 segundos. Tras esperar los 30 segundos necesito que el servo se mueva 90 grados atras ( volver en donde estaba inicialmente)ahora necesito que el motor se mueva durante 25 segundos en dirreccion antihoraria(reverso) Y asi succesivamente. Todo esto con un arduino. Necesito codigo y esquema.Gracias de antemano
Hola, soy Adrian de Quilmes, como estas?, queria consultarte como hacer un menu con 4 botones, MENU, EXIT, IZQ. Y DER. con maquina de estados finitos. pero viendo que vos usaste un encoder rotatorio para seleccionar las pantallas. me cuesta un poco acceder a todas las pantallas,, ya que en todo momento los botones generan un evento y no dentro de cada pantalla. te agradeceria una respuesta a esto, muchas gracias. excelentes los videos y explicaciones.
hola buenas noches, excelente explicación! quiero ejecutar una funcion x cada 10 minutos, utilizando este código la variable dt tendría que ser igual 600000? en caso de que ese sea el valor sigue siendo una variable int?
Me parece que no, se corta en una valor anterior a ese, vas a tener que usar mayor precisión para lo que vos queres. salu2
Por ahí leí que el millis, resetea después de 50 días o algo asi...tendría que volver a buscar...como no lo uso no le doy pelota...Pero suponiendo que no llegué a medirte 10 minutos y mida 2 minutos por ej...lo que tenés que hacer es contar que esos 2 minutos, ocurran 5 veces...5x2=10...ahí tenés los 10 minutos que precisás...Para mi es mejor usar interrupciones...más arriba dejé un ejemplo de una INT que sucede cada 1 segundo en modo CTC...también podés usar el modo OVERFLOW, es lo mismo...Si ese código parece complicado, (es programación a bajo nivel, directo a los registros del micro), usá attachInterrupt
double en ves de int
Tengo una pregunta, como podés reiniciar el reloj interno ?? Esq cuando ya lleva mucho tiempo el valor q retorna millis() es muy grande y me desborda la variable donde lo almaceno 😭
Hola buen día, ¿si por ejemplo quisiera hacer un sistema que tenga encendido un motor 6 horas y apagado otros 6 horas ? Usando esta función el tiempo se desplaza :/, al cabo de 4 ciclos ya no va en 24 minutos si no en 26 :/ , es un error mío o de la función ? Saludos
El motor prendido 6 minutos y apagado 6 minutos era
Gracias por la explicación, pero me confundí un poco cuando decías mili segundos y al rato decías segundos.
i dont understand why people using variable for millis(), becuase they can simply call that function without needs of saving that value to variable.
You have -4 bytes in RAM because of that...
Super facil...no me anduvo GG...No se que pasa !!! sera que en el MINi PRO no anda millis() ??? no hay caso, meti unos while, reemplace variable DT por 100 por 1000, etc...NO ME ANDA LPMQLP !!!-------------------AGREGO...será la versión del IDE ??? Cual usas ahí ???
porque no me pasas el codigo y lo pruebo a ver si encuentro el problema
Yo uso la última versión del ide de arduino
Lo estoy probando de todas formas...leyendo un poco por ahi, y por allá...me di cuenta que el problema puede estar en el SO, todavía no largo XP...Parece que reportan algunos problemas con la transmision serie...asi, que probé de bajar los baudios a 1200 y hubo cambios...Pero sigue haciendo lo que quiere...A 9600 los saltos de millis() siempre estan entre 20 y 24ms, sin importar el intervalo (tu variable DT) que intente, es decir no le da bola...Bajando los baudios del puerto serie, sigue sin dar bola, pero refresca cada 200ms...ahi puedo ver parpadear el LED que viene en el PIN13 del MINI...Intenté sacando la transmision serie y el LED queda clavado...GG !!! me parece que no me sirve este MILLIS(), parece una buena opción a interrupciones...Pdta: empecé con ARDUINO hace 2 semanas, soy un viejo programados en ASM desde hace 15 años...con estos bichitos es una locura hoy día !!!
FIJATE ESTE...Ahora busco los otros 12 que hice, con WHILE, con la declaracion de millis() adentro del loop, etc, etc...Pero es lo mismo me parece.
unsigned long ahora = 0;
int led = 13;
boolean estado = true;
void setup() {
Serial.begin(9600);
delay(1000);
pinMode(led,OUTPUT);
unsigned long ahora = millis();
}
void loop(){
if(millis() - ahora > 1000);{
ahora = millis();
estado = digitalRead(led);
digitalWrite(led,!estado);
Serial.print("tiempo: ");
Serial.println(ahora);
Serial.print("millis: ");
Serial.println(millis());
}
Serial.println("HOLA");
}
ESTE ES MAS PARECIDO AL TUYO !!!
unsigned long ahora = 0;
unsigned long antes = 1500;
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop(){
unsigned long ahora = millis();
if(ahora - antes > 2000);{
antes = millis();
//antes = ahora;
Serial.print("tiempo: ");
Serial.println(ahora);
Serial.print("millis: ");
Serial.println(millis());
}
Serial.println("HOLA");
}