Muy buenas.
Tengo un proyecto para hacer un dado en el que puedo seleccionar el número de caras y sacar el resultado, generado mediante la función random, por la pantalla del 7 segmentos 4 dígitos y la librería SevSeg.
Consigo que genere correctamente los valores pero al sacarlos por el display los saca dígito a dígito y no el número completo de una tirada, excepto en los dados de 6 y 4 caras, claro.
No es un problema de hardware, puesto que cuando hago que salga un valor concreto lo hace perfectamente, pero al volcar el valor de una variable lo hace dígito a dígito.
Os dejo unas el código, a ver si podéis ayudarme a detectar el error y corregirlo.
Muchas gracias.
#define PULSADOR4 A1//definimos el elemento pulsador4
#define PULSADOR6 A2//definimos el elemento pulsador6
#define PULSADOR20 A3//definimos el elemento pulsador20
#define PULSADOR100 A4//definimos el elemento pulsador100
#include "SevSeg.h"
SevSeg sevseg;
void setup(){
pinMode(PULSADOR4, INPUT);//configuramos el pulsador4 como input
pinMode(PULSADOR6, INPUT);//configuramos el pulsador4 como input
pinMode(PULSADOR20, INPUT);//configuramos el pulsador4 como input
pinMode(PULSADOR100, INPUT);//configuramos el pulsador4 como input
randomSeed(analogRead(A0));//fijamos el A0 como seed, para generar auténtica aleatoriedad a través de la indeterminación
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
bool resistorsOnSegments = true;
bool updateWithDelaysIn = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
int valor4 = digitalRead(PULSADOR4);//Declaramos una variable entera asociada a la lectura del PULSADOR
if (valor4 == HIGH)//Si el el pulsador devuelve HIGH disparamos el IF
{
int resultadoD4= random(1, 5);//Declaramos el resultado del dado como entero función random
delay (200);
sevseg.setNumber(resultadoD4);
sevseg.refreshDisplay();
}
int valor6 = digitalRead(PULSADOR6);//Declaramos una variable entera asociada a la lectura del PULSADOR
if (valor6 == HIGH)//Si el el pulsador devuelve HIGH disparamos el IF
{
int resultadoD6= random(1, 7);//Declaramos el resultado del dado como entero función random
delay (200);
sevseg.setNumber(resultadoD6);
sevseg.refreshDisplay();
}
int valor20 = digitalRead(PULSADOR20);//Declaramos una variable entera asociada a la lectura del PULSADOR
if (valor20 == HIGH)//Si el el pulsador devuelve HIGH disparamos el IF
{
int resultadoD20= random(1, 21);//Declaramos el resultado del dado como entero función random
delay (200);
sevseg.setNumber(resultadoD20);
sevseg.refreshDisplay();
}
int valor100 = digitalRead(PULSADOR100);//Declaramos una variable entera asociada a la lectura del PULSADOR
if (valor100 == HIGH)//Si el el pulsador devuleve HIGH disparamos el IF
{
int resultadoD100= random(1, 101);//Declaramos el resultado del dado como entero función random
delay (1000);
sevseg.setNumber(resultadoD100);
sevseg.refreshDisplay();
}
}