#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() {
mostrarNombre();
controlSerial();
}
void mostrarNombre() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= intervalo) {
previousMillis = currentMillis;
mostrarNumero(numerosNombre[indice]);
indice++;
if (indice >= 9) {
indice = 0;
}
}
}
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);
}
}
}
}