FELIPE DE OLIVEIRA SAUNDERS
Published

Distribuidor de cartas

Um simples distribuidor de cartas conectado com um front end e um banco de dados firebase afim de facilitar qualquer tipo de jogo de baralho

BeginnerWork in progress10 hours9
Distribuidor de cartas

Things used in this project

Hardware components

ESP32
Espressif ESP32
×1
SparkFun Snappable Protoboard
SparkFun Snappable Protoboard
×1
LED (generic)
LED (generic)
×2
Jumper wires (generic)
Jumper wires (generic)
×3
Resistor 221 ohm
Resistor 221 ohm
×2
USB-A to Micro-USB Cable
USB-A to Micro-USB Cable
×1

Software apps and online services

VS Code
Microsoft VS Code

Story

Read more

Schematics

Foto 1

Foto do circuito com a placa esp 32

Code

main.cpp

C/C++
Implement the database credentials and the Wifi credentials.
#include <Arduino.h>
#include <WiFi.h>
// #include <Firebase_ESP_Client.h>
#include <FirebaseESP32.h>

//Provide the token generation process info.
#include "addons/TokenHelper.h"
//Provide the RTDB payload printing info and other helper functions.
#include "addons/RTDBHelper.h"

// Insert your network credentials
#define WIFI_SSID "xxx"
#define WIFI_PASSWORD "xxx"

// Insert RTDB URLefine the RTDB URL */
#define DATABASE_URL "xxx"
#define DATABASE_SECRET "xxx"

// Define Firebase Data object
FirebaseData fbdo;

FirebaseAuth auth;
FirebaseConfig config;

#define LED_18 18
#define LED_22 22
#define BUTTON_PIN 23

int times_played = 0;

void setup(){
	pinMode(LED_18, OUTPUT);
	pinMode(LED_22, OUTPUT);
	pinMode(BUTTON_PIN, INPUT_PULLUP);

	Serial.begin(115200);
	WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
	Serial.print("Connecting to Wi-Fi");

	while (WiFi.status() != WL_CONNECTED){
		Serial.print(".");
		delay(300);
	}

	Serial.println();
	Serial.print("Connected with IP: ");
	Serial.println(WiFi.localIP());
	Serial.println();

	config.database_url = DATABASE_URL;
	config.signer.tokens.legacy_token = DATABASE_SECRET;

	Firebase.reconnectNetwork(true);
	fbdo.setBSSLBufferSize(4096, 1024);

	Firebase.begin(&config, &auth);
}

void loop(){
	int cards_per_player, players;

	Firebase.getInt(fbdo, "players", &players);
	Firebase.getInt(fbdo, "cards", &cards_per_player);

	Serial.printf("Quantidade de jogadores: %d\n", players);
	Serial.printf("Quantidade de cartas: %d\n", cards_per_player);

	for (int i = 0; i < players; i++){
		// led verde piscando representa a troca de jogador
		digitalWrite(LED_18, true);
		delay(500);
		digitalWrite(LED_18, false);
		delay(500);

		Serial.printf("Troca de jogador!\n");

		for (int i = 0; i < cards_per_player; i++){
			// led vermelho piscando representa a entrega de cartas
			digitalWrite(LED_22, true);
			delay(500);
			digitalWrite(LED_22, false);
			delay(500);

			Serial.printf("Envio de carta!\n");
		}
	}

	while (1) {
		int currentState = digitalRead(BUTTON_PIN);

		if (currentState == 0) {
			Firebase.setInt(fbdo, "times_played", times_played + 1);
			Firebase.getInt(fbdo, "times_played", &times_played);
			Serial.printf("Botão pressionado!\n");
			break;
		}
	}

	return;
}

Credits

FELIPE DE OLIVEIRA SAUNDERS
2 projects • 0 followers

Comments