O Raspberry Pi é um computador de placa única projetado com o objetivo de auxiliar no ensino de informática aos alunos da escola. Esta é uma ótima plataforma para experimentar diferentes técnicas de programação e também aprender ferramentas de software. A placa é fornecida com um conector RCA que pode ser usado para conectá-la diretamente a uma tela de TV baseada nos padrões PAL e NTSC. A placa também possui uma saída de conector HDMI que pode ser usada para conectar a placa a uma TV HD. Também se pode usar login remoto para acessar o Raspberry pi e visualize a GUI (Text User Interface) na tela do PC. A placa Raspberry pi também é muito fácil de interagir com dispositivos ou circuitos externos por meio de suas pinagens. Esta placa também é fornecida com uma tomada de áudio. Tudo isso faz do Raspberry pi uma plataforma adequada para jogar e desenvolver jogos interessantes.
Este artigo se concentra em como adicionar som a um jogo que é codificado para ser jogado com um gamepad Raspberry pi. Este jogo gráfico simples é codificado usando a linguagem HTML5 e JavaScript e conectado a um hardware de game pad simples conectado aos pinos da placa Raspberry pi. Este jogo é adicionado com música de fundo e tons de teclado que podem ser apreciados enquanto você joga com a ajuda de um fone de ouvido ou sistema de som.
((wysiwyg_imageupload:11067:))
O gamepad é um circuito simples construído em uma placa de ensaio com poucos botões, LEDs e um conjunto de resistores. Existem oito pinos IO de uso geral nos conectores de 13 * 2 pinos da placa Raspberrypi e entre eles quatro pinos foram selecionados como entrada e os quatro pinos restantes como saída. Os pinos de entrada são conectados ao botão e puxados para baixo usando resistores de 1K. Os pinos de saída são conectados aos LEDs através de outro conjunto de resistores de 1K. Para este projeto, a placa Raspberry pi é carregada com Ubuntu e é acessado remotamente usando VNC. Para acessar os pinos que saem do controlador Broadcom a biblioteca C “bcm2835” foi baixado e instalado.
Este jogo usa dois arquivos MP3 bgm.mp3 e kpm.mp3, um para a música de fundo e outro para reproduzir o tom do teclado. Existem tantos softwares reprodutores de mídia de linha de comando disponíveis que podem ser baixados e instalados no Ubuntu do Raspberry pi. O MPG321 é um reprodutor de áudio de linha de comando que pode ser instalado facilmente usando o seguinte comando;
sudo apt-get -y instalar mpg321
Este MPG321 é um aplicativo reprodutor de MP3 e qualquer arquivo MP3 pode ser reproduzido com a ajuda deste aplicativo digitando o seguinte comando format
mpg321
Este software possui diversas opções como controle de volume, busca de arquivos, modo de operação remota o que o torna perfeito para uso com qualquer tipo de aplicação front end, aqui o jogo HTML como exemplo. Mais detalhes sobre as opções podem ser encontrados nas páginas de manual;
homem mpg321
O jogo é executado em uma janela do navegador e se comunica com o game pad por meio de um Named Pipe ou FIFO. Existem vários processos em execução que podem ler o game pad e gravar os comandos necessários no FIFO para controlar o jogo. O JavaScript escrito no código do jogo simplesmente lê o FIFO para os dados de controle de entrada.
O NAMED PIPE ou FIFO precisa ser criado usando o seguinte comando no mesmo diretório onde existem o executável para o código do gamepad escrito em C e os arquivos HTML do jogo escritos em HTML5 e JavaScript.
mkfifo xyz
O FIFO também pode ser criado usando o próprio código adicionando a função mkfifo , open conforme explicado em um artigo anterior documentação.
O processo pai no código C cria cinco processos filhos, entre os quais quatro deles são dedicados para cada uma das teclas do gamepad e o quinto é para tocar a música de fundo. Sempre que uma tecla é pressionada ou liberada, eles geram um sinal e o enviam ao processo pai com um valor. Este método de enviando um sinal com valor ajuda o processo pai a identificar qual tecla foi pressionada ou liberada.
Fig. 2: Diagrama de blocos do gamepad Raspberry Pi
Assim que o processo pai detecta um pressionamento de tecla a partir do valor recebido junto com o sinal, ele simplesmente escreve um caractere específico correspondente a essa chave no NAMED PIPE ou FIFO. O jogo HTML lerá continuamente o FIFO a cada 500 ms para obter a entrada. Portanto, tanto o código C quanto o arquivo HTML precisam estar em estado de execução. O hardware do gamepad se comunica apenas com o código C e o código C se comunica com o JavaScript usando o NAMED PIPE.
A música de fundo continuará tocando como um processo filho separado desde o início do jogo e os tons do teclado serão reproduzidos pela função Pai sempre que detectar um sinal dos processos filhos dedicados à leitura das teclas do gamepad. O processo Pai usa a função “system ” para reproduzir o tom do teclado conforme mostrado na instrução a seguir.
sistema ( “mpg321 kpm.mp3”);
Diagramas de circuito
Circuito-Diagrama-Adicionar-Som-Raspberry-Pi-Gamepad |
|
Vídeo do projeto