// Importando headers / arquivos separados de código
#include "questions.h" // Pras questões, struct, array da struct, e variáveis úteis
#include "oled_desenho.h" // Pro setup do OLED, #defines e tudo, ah e aqui tem a inicialização do monitor Serial
#include "encoder.h" // Aqui tem bastante coisa, encoder, processa variação no encoder e no botão, ah e tem a definição inicial da questão atual também
#include "display.h" // Aqui tem as principais funções de desenho, DesenharLogoIF, RenderizarPerguntas, Resultado, e RenderizarMenu
void setup() {
SetupEncoder();
SetupOled();
DesenharMenu(2000); // Tempo em milissegundos, divide por 4 dentro da função
}
void loop() {
LerDecoder(); // int direcao vem daqui, BotaoVariado e EncoderGirado também
if (BotaoVariado || EncoderGirado) {
AtualizarGame();
RenderizarGame();
}
delay(2); // Pra não travar, debounce
}
void AtualizarGame () {
if (EncoderGirado) AtualizarEncoder(direcao);
if (BotaoApertado) AtualizarBotao();
}
void RenderizarGame() {
if (BotaoApertado) RenderizarResultado();
else RenderizarPerguntas();
tela.drawRect(0, 0, 128, 64, WHITE);
tela.display();
if (BotaoApertado) delay(2000);
}
/* 30/07/2025 - 13:56
Acumulei umas 12 horas, fiz 3:24 no domingo, tamo na quarta, vou avançar agora,
modularizei todo o código, separei em vários headers, agora é organizar o loop e adicionar
mais questões eu acho, o que eu fiz tá no email.
09/08/2025 - Aproximadamente 21:10 do dia 08/08 até 02:23 do dia 09/08
Tô umas 4 horas e 12, adicionei a logo do IF no início feito à mão e depois
passado, adicionei mais perguntas e melhorei o desenho do menu, tô começando a
me preocupar com a otimização, tá ficando pesado por algum motivo, e bom, documentei
mais o código, e dei uma analisada geral, acho que deixei o mais organizado que dava,
e o mais bem otimizado também, agora é focar em colocar mais perguntas talvez, uma
animação melhor pra tela de início, e um algoritmo que torna menos aleatório a escolha
das perguntas, porque é muito fácil ficar se repetindo pergunta sabe ;--;, e isso é bem
chato, ou talvez colocar até em ordem mesmo, depois é talvez provavelmente passar a lista
de questões pra um banco de dados, ver sobre isso da otimização e do porquê estar meio lento,
ah e o servidor que eu tava pensando em usar era o FireBase da Google, tenho que ver se
o sor prefere deixar nos headers, ou em um servidor, provavelmente nos servidores se pá.
Ah e por último acredito que talvez trabalhar no segundo projeto alternativo, em que vou
manter as principais lógicas de processamento e renderização, mas vou focar bem mais
em otimização, porque vai ter que vários FPS, vou fazer um jogo visual, principalmente
em relação aos delays e tempos, que trava toda a execução, eu posso usar millis() depois,
e esses delays já se provaram bem ruins por travarem tudo mesmo, mas são bem bons porque
são mais leves, sem executar a cada certo tempo fica bem mais leve pro simulador rodar, ah
e no projeto alternativo vou focar em modularidade desde cedo também.
*/