i got a 'invalid header file error' and i do not know how to solve, can someone help? this code was supposed to play "genius" on arduino with buttons and serial, im using tinkerpad. `#include <LiquidCrystal.h>
#include <EEPROM.h>
//Definindo as notas dos botões
#define NOTE_D4 294
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_A5 880
// Variaveis Globais
int tons[4] = { NOTE_A5, NOTE_A4, NOTE_G4, NOTE_D4 };
int sequencia[100] = {};
int rodada_atual = 0;
int passo_atual_na_sequencia = 0;
int nivelDificuldade = 0;
int tempoDelay = 1000;
const long SERIAL_TIMEOUT = 5000; // Timeout de 5 segundos para leitura do Serial
int pinoAudio = 6;
int pinosLeds[4] = {7, 8, 9, 10};
int pinosBotoes[4] = { 2, 3, 4, 5 };
int botao_pressionado = 0;
int perdeu_o_jogo = false;
bool setDificuldade = true;
void setup() {
Serial.begin(5000);
// Definindo os Pinos dos leds como saídas
for (int i = 0; i <= 3; i++) {
pinMode(pinosLeds[i], OUTPUT);
}
// Definindo o modo dos pinos dos Botões como entrada.
for (int i = 0; i <= 3; i++) {
pinMode(pinosBotoes[i], INPUT);
}
// Definindo o modo do pino de Áudio como saída.
pinMode(pinoAudio, OUTPUT);
randomSeed(analogRead(0));
}
void loop() {
Serial.println("* INICIO ");
Serial.println("Comecar? (s/n)");
leserial();
if (recebido.equalsIgnoreCase("s")){/
while(setDificuldade){
for (int i = 0; i <= 3; i++) {
if (digitalRead(pinosBotoes[i]) == HIGH) {
setDificuldade = false;
if (i == 0){
tempoDelay = 750;
}
else if (i == 1){
tempoDelay = 500;
}
else if (i == 2){
tempoDelay = 300;
}
else {
tempoDelay = 100;
}
}
}
}
// Se perdeu o jogo reinicializamos todas as variáveis.
if (perdeu_o_jogo) {
int sequencia[100] = {};
rodada_atual = 0;
passo_atual_na_sequencia = 0;
perdeu_o_jogo = false;
}
// Toca um som de início para anúnicar que o jogo está começando quando é a primeira rodada.
if (rodada_atual == 0) {
tocarSomDeInicio();
delay(500);
}
// Começa a próxima rodada
proximaRodada();
// Reproduz a sequência atual.
reproduzirSequencia();
// Aguarda os botões serem pressionados pelo jogador.
aguardarJogador();
// Aguarda 0,5 segundo entre cada jogada.
delay(500);
/*} else {
Serial.println("Jogo não iniciado");
digitalWrite(pinosLeds[0], HIGH);
digitalWrite(pinosLeds[1], HIGH);
digitalWrite(pinosLeds[2], HIGH);
digitalWrite(pinosLeds[3], HIGH);
delay(100);
digitalWrite(pinosLeds[0], LOW);
digitalWrite(pinosLeds[1], LOW);
digitalWrite(pinosLeds[2], LOW);
digitalWrite(pinosLeds[3], LOW);
delay(100);
}*/
}
// Sorteia um novo item e adiciona na sequência.
void proximaRodada() {
int numero_sorteado = random(0, 4);
sequencia[rodada_atual++] = numero_sorteado;
}
// Reproduz a sequência para ser memorizada.
void reproduzirSequencia() {
for (int i = 0; i < rodada_atual; i++) {
tone(pinoAudio, tons[sequencia[i]]);
digitalWrite(pinosLeds[sequencia[i]], HIGH);
delay(tempoDelay);
noTone(pinoAudio);
digitalWrite(pinosLeds[sequencia[i]], LOW);
delay(100);
}
noTone(pinoAudio);
}
// Aguarda o jogador iniciar sua jogada.
void aguardarJogador() {
for (int i = 0; i < rodada_atual; i++) {
aguardarJogada();
verificarJogada();
if (perdeu_o_jogo) {
setDificuldade = true;
break;
}
passo_atual_na_sequencia++;
}
// Redefine a variável para 0.
passo_atual_na_sequencia = 0;
}
void aguardarJogada() {
boolean jogada_efetuada = false;
while (!jogada_efetuada) {
for (int i = 0; i <= 3; i++) {
if (digitalRead(pinosBotoes[i]) == HIGH) {
// Dizendo qual foi o botao pressionado.
botao_pressionado = i;
tone(pinoAudio, tons[i]);
digitalWrite(pinosLeds[i], HIGH);
delay(300);
digitalWrite(pinosLeds[i], LOW);
noTone(pinoAudio);
jogada_efetuada = true;
}
}
delay(10);
}
}
void verificarJogada() {
if (sequencia[passo_atual_na_sequencia] != botao_pressionado) {
// GAME OVER.
for (int i = 0; i <= 3; i++) {
tone(pinoAudio, tons[i]);
digitalWrite(pinosLeds[i], HIGH);
delay(200);
digitalWrite(pinosLeds[i], LOW);
noTone(pinoAudio);
setDificuldade = true;
}
tone(pinoAudio, tons[3]);
for (int i = 0; i <= 3; i++) {
digitalWrite(pinosLeds[0], HIGH);
digitalWrite(pinosLeds[1], HIGH);
digitalWrite(pinosLeds[2], HIGH);
digitalWrite(pinosLeds[3], HIGH);
delay(100);
digitalWrite(pinosLeds[0], LOW);
digitalWrite(pinosLeds[1], LOW);
digitalWrite(pinosLeds[2], LOW);
digitalWrite(pinosLeds[3], LOW);
delay(100);
}
noTone(pinoAudio);
perdeu_o_jogo = true;
}
}
void tocarSomDeInicio() {
tone(pinoAudio, tons[0]);
digitalWrite(pinosLeds[0], HIGH);
digitalWrite(pinosLeds[1], HIGH);
digitalWrite(pinosLeds[2], HIGH);
digitalWrite(pinosLeds[3], HIGH);
delay(500);
digitalWrite(pinosLeds[0], LOW);
digitalWrite(pinosLeds[1], LOW);
digitalWrite(pinosLeds[2], LOW);
digitalWrite(pinosLeds[3], LOW);
delay(500);
noTone(pinoAudio);
}
void leSerial(){
Serial.println("* Insira sua resposta *");
// Aguardar a resposta do usuário pelo tempo definido em SERIAL_TIMEOUT
long startTime = millis();
while (Serial.available() == 0 && millis() - startTime < SERIAL_TIMEOUT)
{}
// Guarda o valor digitado pelo usuário em recebido
if (Serial.available()) {
recebido = Serial.readString();
} else {
Serial.println("Timeout! Resposta não recebida.");
}
}
void piscaLed(int tempo, int vezes){
for(int i = 0; i < vezes; i++){
for(int j = 0; j < NUM_LEDS; j++){
digitalWrite(LED_PINS[j], HIGH);
}
delay(tempo);
for(int j = 0; j < NUM_LEDS; j++){
digitalWrite(LED_PINS[j], LOW);
}
delay(tempo);
}
}
void geraSequencia(int tempo, int sequencia){
// Criar uma lista de inteiros com o tamanho que é passado como argumento
int ordemLeds[sequencia];
// Gerar sequência aleatória
for (int i = 0; i < sequencia; i++){
ordemLeds[i] = random(1, NUM_LEDS + 1);
}
// Inicialmente, a String sequenciaNumerica é uma String vazia
sequenciaNumerica = "";
// Pisca os LEDs na sequência gerada
for (int j = 0; j < sequencia; j++){
int ledIndex = ordemLeds[j] - 1;
digitalWrite(LED_PINS[ledIndex], HIGH);
delay(tempo);
digitalWrite(LED_PINS[ledIndex], LOW);
delay(tempo);
// Converte a lista em uma String
sequenciaNumerica += String(ordemLeds[j]);
}
}
`