#define LED_R D2
#define LED_G D3
#define LED_B D4
#define BTN D12
const int segmentos[7] = {
D5, D6, D7, D8, D9, D10, D11
};
int numerosNombre[] = {
1, 3, 9, 7, 2, 1, 5, 1, 2
};
int indice = 0;
unsigned long previousMillis = 0;
const long intervalo = 1000;
const byte digitos[10][7] = {
{0,0,0,0,0,0,1},
{1,0,0,1,1,1,1},
{0,0,1,0,0,1,0},
{0,0,0,0,1,1,0},
{1,0,0,1,1,0,0},
{0,1,0,0,1,0,0},
{0,1,0,0,0,0,0},
{0,0,0,1,1,1,1},
{0,0,0,0,0,0,0},
{0,0,0,0,1,0,0}
};
void setup() {
Serial.begin(115200);
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(BTN, INPUT_PULLUP);
for (int i = 0; i < 7; i++) {
pinMode(segmentos[i], OUTPUT);
}
randomSeed(analogRead(A0));
Serial.println("Sistema iniciado");
}
void loop() {
dadoElectronico();
controlSerial();
}
void dadoElectronico() {
static bool lastButton = HIGH;
bool estado = digitalRead(BTN);
if (lastButton == HIGH && estado == LOW) {
int dado = random(1, 7);
mostrarNumero(dado);
Serial.print("Dado: ");
Serial.println(dado);
}
lastButton = estado;
}
void mostrarNumero(int numero) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentos[i], digitos[numero][i]);
}
}
void controlSerial() {
if (Serial.available()) {
String comando = Serial.readStringUntil('\n');
comando.toLowerCase();
if (comando.indexOf("apagar") >= 0) {
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
Serial.println("LEDs apagados");
}
else {
if (comando.indexOf("rojo") >= 0) {
digitalWrite(LED_R, HIGH);
}
if (comando.indexOf("verde") >= 0) {
digitalWrite(LED_G, HIGH);
}
if (comando.indexOf("azul") >= 0) {
digitalWrite(LED_B, HIGH);
}
}
}
}