Índice:
- Etapa 1: Motivação e problema
- Etapa 2: Obtendo as informações de bits brutos do USB Basys
- Etapa 3: análise das informações USB
- Etapa 4: Exibir a imagem pintada em VGA e editar o que está sendo desenhado
- Etapa 5: Aproveite a sua criação
Vídeo: Programa de pintura VGA: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Projeto por: Adam Klein, Ian Strachan, Brandon Slater
O projeto que pretendíamos concluir era armazenar, analisar e exibir informações de um mouse USB na forma de um programa de pintura. A ideia por trás do projeto é ser capaz de conectar o mouse e cabos VGA na placa Basys em suas portas embutidas, e ter o mouse exibido como um quadrado de pintura móvel no monitor, mudando cores diferentes quando os cliques esquerdo e direito são usado. Em essência, estaríamos criando um driver para usar o mouse com a placa basys e tendo o monitor como nossa verificação de funcionalidade. O que acabou acontecendo mesmo foi a criação de um programa de desenho com o basys board como sistema de entrada e um sistema semi-funcional de captura de dados para o mouse.
Neste instrutível, dividiremos as etapas da entrada do mouse à saída vga.
Etapa 1: Motivação e problema
Motivação:
A principal motivação de nosso projeto foi criar um driver de mouse para a placa Basys3 que os futuros alunos do CPE 133 possam usar em seus projetos finais no futuro. No entanto, levamos essa ideia um passo adiante, criando um programa de pintura, que os futuros alunos também poderiam desenvolver.
Problema:
O problema que descobrimos foi que não há um módulo de mouse claro pronto para baixar e usar para a placa Basys3. Para resolver esse problema, tentamos criar um nós mesmos. Ao fazer isso, estávamos nos esforçando para criar um módulo de mouse que permitiria aos futuros alunos implementar mais facilmente a entrada do mouse em seus projetos.
Etapa 2: Obtendo as informações de bits brutos do USB Basys
- Muito do que fizemos para o mouse neste projeto veio da documentação do Basys3. A partir do pequeno guia sobre a porta USB Basys naquele pdf, descobrimos que a placa Basys tem um relógio embutido para ler bits na velocidade certa de dispositivos USB.
- Essencialmente, o mouse envia bits para o usb começando em um estado inativo, lê 32 bits que representam o status do mouse, posição xey posição e, finalmente, termina com outro bit inativo. Para fazer isso, o componente de entrada do mouse usa um registrador de deslocamento e um contador de 32 bits onde o registrador de deslocamento é usado para armazenar 32 bits de dados de entrada do mouse e o contador de 32 bits é usado para contar o número de bits sendo armazenados permitindo o estado registrar para redefinir e armazenar o próximo conjunto de 32 bits de entrada.
- O código para o registrador de deslocamento, contador de 32 bits e leitor de dados estão disponíveis para download abaixo, bem como o arquivo de restrições adaptado para o uso da porta USB como entrada
Etapa 3: análise das informações USB
- Depois de criar a entrada do mouse para o componente usb, a próxima etapa foi criar os bits usb para o componente de informação vetorial que tornaria os dados recebidos pelo mouse legíveis para o vga.
- Este componente usa uma máquina de estado que recebe o conjunto de bits emitidos pela entrada do mouse no usb e se move através dos estados com base na entrada de novos bits que alteram o status e a posição do mouse.
- O diagrama de blocos para as duas primeiras etapas do projeto é mostrado aqui, e os dois arquivos vhdl são para testar a implementação do mouse usando os LEDs basys (um teste que infelizmente nunca foi aprovado) e para transmitir o fluxo de bits do USB para os vetores de velocidade e posição que o VGA pode usar.
- A imagem ao lado do diagrama de blocos acima é um pequeno instantâneo (o Instructables não nos permite exibir a imagem completa) das informações de bits que encontramos na documentação do basys para concluir esta etapa.
Etapa 4: Exibir a imagem pintada em VGA e editar o que está sendo desenhado
- O cabo VGA tem 14 bits de saída, 4 bits para cada uma das três cores e um bit para sincronização horizontal e sincronização vertical.
-
OtherVGA é o módulo VGA fornecido e funciona da seguinte forma:
- O monitor é dividido em blocos de 40x30 de 16x16 pixels para uma tela de resolução de 640x480, conforme mostrado na imagem acima. O módulo seleciona um endereço de bloco para representar um dos 1200 blocos no monitor. O endereço do bloco é selecionado através da seguinte equação: endereço = 40y + x
- A cor é representada por um sinal de 12 bits que se correlaciona com um valor RRRRGGGGBBBB que colore o bloco selecionado.
-
Nosso código de controle, VGAtest e VGAtestconst, funciona da seguinte maneira:
- Primeiro, ele define o bloco selecionado no centro do monitor.
- A cor do bloco é determinada por 12 interruptores na placa, configurando o valor RRRRGGGGBBBB.
- Os quatro botões direcionais na placa mudam o endereço selecionado. Por exemplo, pressionar o botão direito adicionará 1 ao endereço, selecionando o bloco à direita do bloco anterior. Pressionar o botão para baixo adicionará 40 ao endereço, selecionando o bloco abaixo do bloco anterior.
- O botão central é usado para definir todos os valores de cor para 0 quando pressionado. Isso deve se comportar como um botão de apagar fácil de usar, para que o usuário não precise virar todas as chaves para 0 para apagar.
- A última imagem é o diagrama de blocos do controlador. É bastante amplo, pois inclui componentes do módulo e pode não ser exibido por completo.
Etapa 5: Aproveite a sua criação
Ligado aqui está um lapso de tempo rápido da diversão que você pode ter com o projeto final, mesmo apenas usando os interruptores e botões na placa basys como entrada.
Obrigado por ler!
Recomendado:
Robô de pintura equipado com Arduino: 11 etapas (com imagens)
Arduino Powered Painting Robot: Você já se perguntou se um robô poderia fazer pinturas e arte fascinantes? Neste projeto, tento tornar isso realidade com um Arduino Powered Painting Robot. O objetivo é que o robô seja capaz de fazer pinturas por conta própria e usar um ref
Pintura sensorial: 5 etapas
Pintura sensorial: pintura sensorial es un proyecto diseñado para que alguien no vidente pueda pintar o dibujar dentro de bordes que uno pueda delimitar. Neste caso, usaremos um Kultrun de la cultura y pueblo mapuche. SP te avisará mediante sonidos de um Trompe
Pintura com luz inicial (sem Photoshop): 5 etapas (com imagens)
Começando Light Painting (sem Photoshop): Recentemente comprei uma nova câmera e estava investigando alguns de seus recursos quando me deparei com a light painting, ou fotografia de longa exposição, na internet. A maioria de nós já deve ter visto a forma básica de pintura de luz com uma foto em uma cidade com uma estrada
Touchboard com pintura elétrica e MakeyMakey: 4 etapas
Touchboard With Electric Paint e MakeyMakey: Uma bela pintura com efeito surpreendente, perfeita para levar as crianças a interações feitas por elas mesmas. Combina Desenho, TapeArt, Pintura e codificação simples com scratch e alguns arquivos de som talvez criados por você mesmo
Frascos de pintura para quadro-negro: 5 etapas (com fotos)
Chalkboard Paint Jars: Todo cientista maluco precisa de potes e esses potes precisam de rótulos, e como eu gosto de reutilizar meus potes, os rótulos dos potes precisam ser regraváveis. Felizmente, fazer etiquetas regraváveis para potes de vidro é fácil com a tinta do quadro-negro. Tudo que você precisa para fazer você