#include <LiquidCrystal.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
// Definición de pines
const int botonNuevaPartidaPin = 33;
const int botonPedirCartaPin = 25;
const int botonPlantarsePin = 26;
// Configuracion Variables para WiFi
const char* id = "Wokwi-GUEST";
const char* contrasenia = "";
// Configuración Variables para MQTT
const char* mqttServer = "instrumentacion-uji.dynv6.net";
const int mqttPort = 1883;
const char* jugador = "Alvaro_Casino";
//Configuración MQTT y WiFi
WiFiClient espClient;
PubSubClient client(espClient);
//Inicializa la pantalla LCD con los pines específicos
LiquidCrystal lcd(12,13,17,16,27,14);
//Publicación de mensajes MQTT en formato JSON
void PubMQTT(int accion)
{
char mensaje[50];
const char* acciones[] = {"Nueva", "Carta", "Planto"};
sprintf(mensaje, "{\"jugador\":\"%s\",\"accion\":\"%s\"}", jugador, acciones[accion - 1]);
client.publish("instrumentacion/blackjack", (uint8_t*) mensaje, strlen(mensaje), true);
Serial.print("instrumentacion/blackjack: ");
Serial.println(mensaje);
}
void lectura(char* topic, byte* playload, unsigned int length){
Serial.print (topic);
Serial.print(" : ");
char message[length+1] = {0x00};
for (int i=0; i<length; i++)
message[i] = (char)playload[i];
message[length] = 0x00;
Serial.println(message);
}
void setup() {
//Inicializa la pantalla LCD con 16 columnas y 2 filas
lcd.begin(16, 2);
Serial.begin(9600);
// Conexión a WiFi
WiFi.begin(id, contrasenia);
Serial.print("Conectando a la WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Conexión a servidor MQTT
client.setServer(mqttServer, mqttPort);
client.setCallback (lectura);
while (!client.connected()) {
Serial.print("Conectando a MQTT...");
if (client.connect(jugador)) {
Serial.print("Conectado a MQTT");
client.subscribe("instrumentacion/blackjackjugador");
}
else {
Serial.print("Error de conexión MQTT.");
delay(2000);
}
}
// Configuración de pines de botones
pinMode(botonNuevaPartidaPin, INPUT_PULLUP);
pinMode(botonPedirCartaPin, INPUT_PULLUP);
pinMode(botonPlantarsePin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}