En este POST os voy a explicar cómo crear un cronómetro mediante Arduino UNO y una serie de componentes electrónicos de una manera muy sencilla. Este cronómetro constará de 2 pulsadores, uno para reiniciar el conteo y otro para pausarlo cuando creamos conveniente.
Además se incluye un display LCD 1602 con comunicación I2C, con el que se muestra el tiempo transcurrido en formato HH:MM:SS.
Bueno pues a partir de ahora ya estamos preparados para continuar con el montaje y la programación de nuestro cronómetro.
Además se incluye un display LCD 1602 con comunicación I2C, con el que se muestra el tiempo transcurrido en formato HH:MM:SS.
Bueno pues a partir de ahora ya estamos preparados para continuar con el montaje y la programación de nuestro cronómetro.
Lista de Materiales:
· Arduino UNO Rev.3.
· Cable USB tipo A-B.
· Módulo LCM 1602 I2C V1.
· Display 16x2 LCD 1602.
· 2 Pulsadores.
· 2 Resistencias de 10KΩ.
· Protoboard.
· Cables de conexión.
saludo...este codigo que esta aqui tiene un error tendria la amabilidad de revisarlo y volverlo a subir gracias..el error es el siguiente:
ResponderEliminarsketch_apr04b:63: error: 'POSITIVE' was not declared in this scope
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
^
exit status 1
'POSITIVE' was not declared in this scope
El código está perfecto, porque sino no le hubiera subido...te fallan tus librerías por eso te da error al compilar. En un POST de Diciembre de 2015 de mi BLOG tienes todas las librerías correctas para su descarga y como instalarlas. Saludos
Eliminarde hecho, yo tambien tengo el mismo problema y tengo instalada la libreria correctamente. podrias por favor exolicarme como funciona esa linea? segun yo solo la configuracion es la siguiente:
EliminarLiquidCrystal_I2C lcd(0x27,20,4); // seleccionas la direccion 0x27 para 16 caracteres y 2 lineas
Aquí tienes todo lo necesario para configurar correctamente un LCD 1602
Eliminarhttp://miarduinounotieneunblog.blogspot.com.es/2015/12/display-lcd-16x2-con-comunicacion-i2c.html
Una pregunta, en el armado de circuito en breadboard usted realmente utilizo un modulo para que este le de la hora o simplemente es con el programa eso?
EliminarSi te fijas en la lista de materiales no hay ningún RTC ... en este programa trabajo con el contador interno de arduino (timer) y mas en concreto con la función millis().
EliminarMuchas gracias. Me ha servido de gran manera
Eliminarbuenas tardes
ResponderEliminartengo un programa de un sensor de caudal, y me a cuanta cuanto litros an pasado, pero no se como escribir el codigo para que cuando esta sin energia al comenzar no comience desde cero sino en el numeor que estaba ... gracias
hola te queria preguntar en donde esta el esquema del dibujo , como van conectadas las partes ?
ResponderEliminarMuchas gracias, me sirvió bastante, hecho ala perfección.
ResponderEliminar// Importar librerías
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2);
// Variables para los cálculos internos del cronómetro
int horas = 0;
int minutos = 0;
int segundos = 0;
int decimas = 0;
long milisegundos = 0;
int pulsador_inicio = 10; // pulsador_inicio en PIN digital 10
int pulsador_pausa = 9; // pulsador_pausa en PIN digital 9
void setup()
{
Wire.begin();
Serial.begin(9600); // Comienzo de la comunicación serie
pinMode(pulsador_inicio, INPUT); // Pin digital 10 como entrada
pinMode(pulsador_pausa, INPUT); // Pin digital 9 como entrada
// Inicializamos el LCD
lcd.init();
lcd.clear();
lcd.begin(16,2);
lcd.backlight();
}
void loop()
{
// Si presionamos el pulsador de inicio se pone todo a cero
if(digitalRead(pulsador_inicio) == HIGH)
{
horas = 0;
minutos = 0;
segundos = 0;
decimas = 0;
lcd.clear();
}
// Si presionamos el pulsador de pausa se congela el tiempo hasta que lo volvamos a presionar
if(digitalRead(pulsador_pausa) == HIGH)
{
delay(200);
while(digitalRead(pulsador_pausa) == LOW);
delay(200);
}
// Se cuentan los milisegundos transcurridos
milisegundos = millis();
// Si el tiempo transcurrido es mayor a una décima de segundo
if(milisegundos % 100 == 0)
{
decimas++;
// Si han pasado 10 décimas de segundo se cuenta un segundo
if(decimas == 10)
{
decimas = 0;
segundos++;
}
// Si han pasado 60 segundos se cuenta un minuto
if(segundos == 60)
{
segundos = 0;
minutos++;
}
// Si han pasado 60 minutos se cuenta una hora
if(minutos == 60)
{
minutos = 0;
horas++;
}
// Mostramos el tiempo a través del LCD
lcd.setCursor(0,0);
if(horas < 10)
{
lcd.print("0");
}
lcd.print(horas);
lcd.print(":");
lcd.setCursor(3,0);
if(minutos < 10)
{
lcd.print("0");
}
lcd.print(minutos);
lcd.print(":");
lcd.setCursor(6,0);
if(segundos < 10)
{
lcd.print("0");
}
lcd.print(segundos);
lcd.print("(");
lcd.setCursor(9,0);
lcd.print(decimas);
lcd.print(")");
}
}
Circuito??
ResponderEliminarComo seria para ser regressivo esse cronômetro
ResponderEliminar