Hola,
aprendiendo con arduino,
Quiero hacer funcionar un led de 7 segmentos como contador de 8 horas y vuelta a empezar de la manera más fácil,
(ya lo consegui con la función delay pero a la vez quiero poder activar por terminal serie un led, así que he intentado usar la función millis sin exito.)
Este es el código, quizás demasiado sencillo, pensado para que cuente 8 segundos y restart pero me dejo algo importante, puesto que no funciona pero tampoco me da errores de ejecución
Un saludo y gracias
// Intento de contador a ocho segundos con reseteo al final
#define RESTART asm("jmp 0x0000") // esto parece que reinicia la funcion millis
// declaracion de salidas contador led siete segmentos
const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 12;
void setup() {
// declaracion contador LED como ouput
pinMode (a, OUTPUT);
pinMode (b, OUTPUT);
pinMode (c, OUTPUT);
pinMode (d, OUTPUT);
pinMode (e, OUTPUT);
pinMode (f, OUTPUT);
pinMode (g, OUTPUT);
}
void loop()
{
// intento de lectura del tiempo en la funcion millis y encendido del número correspondiente
if (millis () <=2000) {uno();
if (millis () <=3000) {dos();
if (millis () <=4000){tres ();
if (millis () <=5000){cuatro();
if (millis ()<=6000){cinco();
if (millis ()<=7000){ seis();
if (millis () <=8000){siete();
if (millis () <=9000){ocho(); RESTART;
}}}}}}}}
}
// todo lo que sigue es para encender los segmentos corresponientes, esto si funciona
void ocho()
{
digitalWrite (a,LOW);
digitalWrite (b,LOW);
digitalWrite (c,LOW);
digitalWrite (d,LOW);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,LOW);
}
void siete ()
{
digitalWrite (a,LOW);
digitalWrite (b,HIGH);
digitalWrite (c,HIGH);
digitalWrite (d,HIGH);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,HIGH);
}
void seis ()
{
digitalWrite (a,HIGH);
digitalWrite (b,LOW);
digitalWrite (c,LOW);
digitalWrite (d,LOW);
digitalWrite (e,LOW);
digitalWrite (f,HIGH);
digitalWrite (g,LOW);
}
void cinco ()
{
digitalWrite (a,LOW);
digitalWrite (b,LOW);
digitalWrite (c,LOW);
digitalWrite (d,HIGH);
digitalWrite (e,LOW);
digitalWrite (f,HIGH);
digitalWrite (g,LOW);
}
void cuatro ()
{
digitalWrite (a,HIGH);
digitalWrite (b,LOW);
digitalWrite (c,LOW);
digitalWrite (d,HIGH);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,HIGH);
}
void tres ()
{
digitalWrite (a,LOW);
digitalWrite (b,LOW);
digitalWrite (c,HIGH);
digitalWrite (d,HIGH);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,LOW);
}
void dos ()
{
digitalWrite (a,LOW);
digitalWrite (b,LOW);
digitalWrite (c,HIGH);
digitalWrite (d,LOW);
digitalWrite (e,HIGH);
digitalWrite (f,LOW);
digitalWrite (g,LOW);
}
void uno ()
{
digitalWrite (a,HIGH);
digitalWrite (b,HIGH);
digitalWrite (c,HIGH);
digitalWrite (d,HIGH);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,HIGH);
}
void cero ()
{
digitalWrite (a,LOW);
digitalWrite (b,HIGH);
digitalWrite (c,LOW);
digitalWrite (d,LOW);
digitalWrite (e,LOW);
digitalWrite (f,LOW);
digitalWrite (g,LOW);
}