Recriando o Pong Game em um Esp32 com Rust
Introdução
Bom, vim aqui compartilhar uma jornada em que eu me envolvi totalmente sem querer: Embarcados
Meu pai chego pra mim e falo "toma, um esp32, programa um sistema pra fazer X coisa pra mim, depois tu faz oq tu quiser".
E eu como sou desempregado e tenho bastante tempo livre, fui descobrir como esse tal "Esp" funcionava.
O que é um Esp32?
Resumindo bem porcamente, Esp32 é um microcontrolador programável de baixo custo. Ele vem equipado com módulo Wifi e Bluetooth, então ele é basicamente um SoC (System-on-a-chip).
Ele foi feito pra automação, robótica e vários outros fins.
Microcontroladores são muito usados para controle de máquinas, basicamente qualquer máquina que você provavelmente tem na sua casa, usa algum tipo de microcontrolador. Teu microondas é um exemplo disso.
Caso você se pergunte (eu me perguntava isso também), as pessoas costumam chamar esses sistemas controlados por uma plaquinha e chatinho de programar pra quem é iniciante de Embarcados
.
O início da jornada
Depois que meu pai tacou essa bomba na minha mão, eu fui atrás pra descobrir como programar isso.
Pesquisando um pouco eu descobri que eu tinha algumas opções: C/C++, Python, Javascript, Go e Rust.
Considerando que eu queria aprender coisas novas, eu exclui Python e javascript (também pelo fato de eu ter só 520KB de Ram).
Tentei usar o Arduino IDE e programar usando C++ com as libs do Esp e foi horrível. Aquela IDE é horrivel, achei chato e feio.
Ai me veio um Insight de quando eu tava descobrindo o Rust e passei o olho na home deles, onde dizia que Rust era recomendado para microcontroladores.
E agora começa o maior sofrimento de todos: Um completo amador em Rust tentando programar um microcontrolador.
Depois de alguns vídeos gringos do youtube e um pouco de documentação, consegui rodar meu primeiro Hello World, depois disso foi só alegria, muita mas MUITA documentação e horas e horas a fio quebrando cabeça.
Quando terminei o projeto do meu Pai, postei no twitter e algumas pessoas gostaram da ideia e me motivaram. Ai eu tava sem nada pra fazer e pensei "Bom, e se eu recriasse um dos primeiros jogos do mundo em um display de 128x64 na base da força de vontade?".
Pra quem não tem noção do quão pequeno é isso, olhe para o seu dedão da mão. A tela é menor que isso, ela tem 0.96 polegadas
Depois disso meus amigos, foi só ladeira a baixo. Nada funcionava, tava dando tudo errado, mas desistir não faz parte do meu ser, então eu fui e dei uma pausa de algumas horinhas e voltei depois com a cabeça mais fria.
Nesse meio tempo fui pedir ajuda a uns magos do Rust no twitter que foram minha luz no fim de túnel.
Depois de 6 horas e muito código ruim, tava pronto minha maior obra de arte, o Pong game (quase) totalmente funcional em um Esp32 com Rust e um display minúsculo.
(Sim, tem como jogar com dois jogadores igual no Pong, mas no vídeo do meu twitter eu não consegui gravar e jogar com os dois jogadores ao mesmo tempo pois sou limitado)
Vou deixar uma fotinha aqui de como ficou o projeto final pq eu não sei colocar vídeo aqui.
Encerramento
Bom, essa foi a minha jornada recriando o Pong game em um microcontrolador, foi muito divertido e com certeza essa jornada não para por aqui, só me falta ídeias do que fazer, mas vontade tem de sobra!
Meu maior objetivo escrevendo esse post e criando esses projetos é compartilhar conhecimento, aprender mais e inspirar as pessoas a tentarem criar coisas diferentes do padrão.
Todo mundo ta acostumado com front-end e back-end, mas vejo muito pouca gente olhando pra coisas igualmente legais, divertidas e que estão presente em basicamente tudo que a gente usa hoje em dia.
Se você é iniciante ou até mesmo já ta no mercado a um tempo, tenta dar uma chance pra projetinhos simples que por mais que sejam inuteis, são legais e agregam conhecimento pras pessoas e pra si mesmo.
Nem tudo que é inútil pra vc, é inútil pra outras pessoas que estão começando em algo novo.
Por fim, vou deixar aqui o link do projeto e o link do meu twitter onde tem um video mostrando o projeto.
Obrigado pela atenção de todo mundo que leu até aqui!