/*
Autor: G.Milimelis 2025
*/
#include "LedControl.h" // incluye libreria LedControl
#include <OneButton.h> // https://github.com/mathertel/OneButton
#define BUZZER 4 // Definir el pin donde está conectado el buzzer
LedControl lc=LedControl(10,12,11,1); // crea objeto
//OneButton
const byte pinBoton = 13; // pin 2 ---- botón ---- GND
OneButton boton(pinBoton); // Crear un objeto OneButton asociado al pin pinBoton
int EstadoJuego=0;
int Caza=0;
void setup() {
lc.shutdown(0,false); // enciende la matriz
lc.setIntensity(0,4); // establece brillo
lc.clearDisplay(0); // blanquea matriz
Serial.begin(9600); // Inicializar la comunicación serial
boton.attachClick(clicSimple); // Asociar la función clicSimple() al evento de un clic
boton.attachDoubleClick(dobleClic); // Asociar la función dobleClic() al evento de doble clic
boton.attachLongPressStart(clicLargo); // Asociar la función clicLargo() al evento de clic largo
pinMode(BUZZER, OUTPUT); // Establecer el pin del buzzer
}
void loop(){
noTone(BUZZER);
boton.tick(); // Se debe llamar al método tick() en cada ciclo para manejar los eventos del botón
// Enciende_1Led();
}
void Enciende_Leds(){
for(int fila = 0; fila < 8; fila++) { // itera por las filas
for(int columna = 0; columna < 8; columna++) { // itera por las columnas
lc.setLed(0,fila,columna,true); // enciende LED
delay(100); // demora de 100 mseg.
lc.setLed(0,fila,columna,false); // apaga LED
delay(100); // demora de 100 mseg.
}
}
}
void Enciende_1Led(){
int fila = 0;
int columna = 0;
lc.setLed(0,fila,columna,true); // enciende LED
delay(1000); // demora de 100 mseg.
lc.setLed(0,fila,columna,false); // apaga LED
delay(1000); // demora de 100 mseg.
}
void clicSimple() {
Serial.println("Clic simple");
Serial.println(EstadoJuego);
Serial.println(Caza);
tone(BUZZER, 700,200);
if (EstadoJuego == 1) {
Juego1();
}
if (EstadoJuego == 0) {
JuegoON();
}
}
void dobleClic() {
Serial.println("Doble clic");
}
void clicLargo() {
Serial.println("Clic largo");
EstadoJuego = 0;
Caza = 0;
tone(BUZZER, 700,2000);
//delay(2000);
//noTone(BUZZER);
//delay(1000);
lc.clearDisplay(0);
LedCentralOFF();
delay(500); // demora de 100 mseg.
}
void LedCentralON() {
tone(BUZZER, 700,200);
int fila = 3;
int columna = 3;
lc.setLed(0,fila + 0,columna + 0,true); // enciende LED
lc.setLed(0,fila + 0,columna + 1,true); // enciende LED
lc.setLed(0,fila + 1,columna + 0,true); // enciende LED
lc.setLed(0,fila + 1,columna + 1,true); // enciende LED
}
void LedCentralOFF() {
//tone(BUZZER, 700,200);
int fila = 3;
int columna = 3;
lc.setLed(0,fila + 0,columna + 0,false); // enciende LED
lc.setLed(0,fila + 0,columna + 1,false); // enciende LED
lc.setLed(0,fila + 1,columna + 0,false); // enciende LED
lc.setLed(0,fila + 1,columna + 1,false); // enciende LED
}
void JuegoON() {
for(int i = 0; i<3; i++){
tone(BUZZER, 700,200);
LedCentralOFF();
delay(400); // demora de 100 mseg.
LedCentralON();
delay(400); // demora de 100 mseg.
}
EstadoJuego = 1;
}
void LedCapturasON() {
tone(BUZZER, 700,200);
lc.setLed(0,7,0,true); // enciende LED
lc.setLed(0,7,1,true); // enciende LED
lc.setLed(0,7,2,true); // enciende LED
lc.setLed(0,7,3,true); // enciende LED
lc.setLed(0,7,4,true); // enciende LED
lc.setLed(0,7,5,true); // enciende LED
lc.setLed(0,7,6,true); // enciende LED
lc.setLed(0,7,7,true); // enciende LED
}
void LedCapturasOFF() {
//tone(BUZZER, 700,200);
lc.setLed(0,7,0,false); // apaga LED
lc.setLed(0,7,1,false); // apaga LED
lc.setLed(0,7,2,false); // apaga LED
lc.setLed(0,7,3,false); // apaga LED
lc.setLed(0,7,4,false); // apaga LED
lc.setLed(0,7,5,false); // apaga LED
lc.setLed(0,7,6,false); // apaga LED
lc.setLed(0,7,7,false); // apaga LED
}
void Juego1() {
Serial.print("EstadoJuego: ");
Serial.println(EstadoJuego);
Serial.print("Caza: ");
Serial.println(Caza);
if (Caza == 10) {
tone(BUZZER, 700,200);
LedCentralON();
Caza = 11;
}
if (Caza == 9) {
tone(BUZZER, 700,200);
LedCentralOFF();
for(int i = 0; i<20; i++){
LedCapturasOFF();
delay(200); // demora de 100 mseg.
LedCapturasON();
delay(100); // demora de 100 mseg.
}
Caza = 10;
LedCapturasOFF();
delay(500); // demora de 100 mseg.
LedCentralON();
delay(500); // demora de 100 mseg.
}
if (Caza == 8) {
tone(BUZZER, 700,200);
lc.setLed(0,0,7,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,7,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 9;
}
if (Caza == 7) {
tone(BUZZER, 700,200);
lc.setLed(0,0,6,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,6,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 8;
}
if (Caza == 6) {
tone(BUZZER, 700,200);
lc.setLed(0,0,5,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,5,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 7;
}
if (Caza == 5) {
tone(BUZZER, 700,200);
lc.setLed(0,0,4,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,4,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 6;
}
if (Caza == 4) {
tone(BUZZER, 700,200);
lc.setLed(0,0,3,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,3,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 5;
}
if (Caza == 3) {
tone(BUZZER, 700,200);
lc.setLed(0,0,2,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,2,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 4;
}
if (Caza == 2) {
tone(BUZZER, 700,200);
lc.setLed(0,0,1,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,1,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 3;
}
if (Caza == 1) {
tone(BUZZER, 700,200);
lc.setLed(0,0,0,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,7,0,true); // enciende LED ,FILA,COLUMNA,true/false
Caza = 2;
}
if (Caza == 0) {
for(int i = 0; i<5; i++){
tone(BUZZER, 700,200);
lc.setLed(0,0,0,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,1,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,2,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,3,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,4,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,5,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,6,false); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,7,false); // enciende LED ,FILA,COLUMNA,true/false
delay(400); // demora de 100 mseg.
tone(BUZZER, 700,200);
lc.setLed(0,0,0,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,1,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,2,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,3,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,4,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,5,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,6,true); // enciende LED ,FILA,COLUMNA,true/false
lc.setLed(0,0,7,true); // enciende LED ,FILA,COLUMNA,true/false
delay(400); // demora de 100 mseg.
}
Caza = 1;
}
//EstadoJuego = 2;
}