#include <WiFi.h>
#include <SevSeg.h>
#define DEBUG false // Modo de depuração
#define SSID "SCOREBOARD" // Nome da rede Wi-Fi
#define PASSWORD "1234567890" // Senha da rede Wi-Fi
#define NUM_DIGIT 4 // Define o número de digitos
#define DIG_1_PIN 14 // Define o pino seletor do 1° digito
#define DIG_2_PIN 15 // Define o pino seletor do 2° digito
#define DIG_3_PIN 2 // Define o pino seletor do 3° digito
#define DIG_4_PIN 5 // Define o pino seletor do 4° digito
#define SEG_A_PIN 12 // Define o pino do segmento a
#define SEG_B_PIN 4 // Define o pino do segmento b
#define SEG_C_PIN 19 // Define o pino do segmento c
#define SEG_D_PIN 26 // Define o pino do segmento d
#define SEG_E_PIN 27 // Define o pino do segmento e
#define SEG_F_PIN 13 // Define o pino do segmento f
#define SEG_G_PIN 18 // Define o pino do segmento g
#define SEG_P_PIN 25 // Define o pino do segmento dot point
#define DELAY_COUNTER 40 // Define o tempo de incremento do contador (ms)
#define MAX_COUNTER 9999 // Degine o número máximo do score
uint16_t counter = 0;
unsigned long currentTime = 0;
unsigned long previousTime = 0;
SevSeg sevseg;
// Define o número da porta do servidor web para 80
// WiFiServer server(80);
void setup() {
#if DEBUG
Serial.begin(115200);
#endif
// Define os pinos do segmentos (1..4)
uint8_t digitPins[] = {DIG_1_PIN, DIG_2_PIN, DIG_3_PIN, DIG_4_PIN};
// Define os pinos dos digitos (a..g,dp)
uint8_t segmentPins[] = {
SEG_A_PIN, SEG_B_PIN, SEG_C_PIN, SEG_D_PIN, SEG_E_PIN, SEG_F_PIN,
SEG_G_PIN, SEG_P_PIN
};
// 'false' significa que os resistores estão em pinos digitais
bool resistorsOnSegments = true;
uint8_t hardwareConfig = COMMON_ANODE; // Define como anodo comum
// O padrão 'falso' é recomendado
bool updateWithDelays = true;
// Use 'true' se quiser manter os zeros à esquerda
bool leadingZeros = true;
// Use 'true' se o seu ponto decimal não existir ou não estiver conectado
// Então, você só precisa especificar 7 segmentPins []
bool disableDecPoint = false;
sevseg.begin(hardwareConfig, NUM_DIGIT, digitPins, segmentPins,
resistorsOnSegments, updateWithDelays, leadingZeros,
disableDecPoint);
// Inicializa a rede WiFi no modo de estação
// WiFi.disconnect();
// WiFi.mode(WIFI_AP_STA);
// WiFi.softAP(SSID, PASSWORD);
#if DEBUG
// Serial.println("\nStarting Wi-Fi " + String(SSID) + "...");
// Obtendo o endereco IP do servidor
// IPAddress ip = WiFi.softAPIP();
// Serial.print("Server IP: ");
// Serial.println(ip);
#endif
// Inicia o servidor Web
// server.begin();
#if DEBUG
// Serial.println("Server Ok");
#endif
}
void loop() {
// Atualiza o valor no display
sevseg.setNumber(counter);
sevseg.refreshDisplay();
currentTime = millis();
// Verifica se ultrapassou 1 segundo
if (currentTime - previousTime >= DELAY_COUNTER) {
previousTime = millis();
#if DEBUG
Serial.print(counter);
Serial.print(' ');
#endif
counter++;
if (counter > MAX_COUNTER) {
counter = 0;
#if DEBUG
Serial.println();
#endif
}
}
}