Tabla de contenido:
- Paso 1: Motivación y problema
- Paso 2: Obtener la información de bits sin procesar del USB de Basys
- Paso 3: analizar la información del USB
- Paso 4: Visualización de la imagen pintada en VGA y edición de lo que se está dibujando
- Paso 5: ¡Disfruta tu creación
Video: Programa de pintura VGA: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Proyecto de: Adam Klein, Ian Strachan, Brandon Slater
El proyecto que nos propusimos completar fue almacenar, analizar y mostrar información de un mouse USB en forma de programa de pintura. La idea detrás del proyecto es poder conectar el mouse y los cables VGA a la placa Basys en sus puertos integrados, y mostrar el mouse como un cuadro de pintura movible en el monitor, cambiando diferentes colores cuando se hacen clic con el botón izquierdo y derecho. usó. En esencia, estaríamos creando un controlador para usar el mouse con la placa base y tener el monitor como nuestra verificación de funcionalidad. Lo que terminó sucediendo realmente fue la creación de un programa de dibujo con el tablero basys como sistema de entrada y un sistema de captura de datos semifuncional para el mouse.
En este instructivo, desglosaremos los pasos desde la entrada del mouse hasta la salida de vga.
Paso 1: Motivación y problema
Motivación:
La principal motivación de nuestro proyecto fue crear un controlador de mouse para la placa Basys3 que los futuros estudiantes de CPE 133 podrían usar para sus proyectos finales en el futuro. Sin embargo, llevamos esta idea un paso más allá al crear un programa de pintura, uno en el que los futuros estudiantes también podrían desarrollar.
Problema:
El problema que descubrimos fue que no hay un módulo de mouse claro listo para descargar y usar para la placa Basys3. Para resolver este problema, intentamos crear uno nosotros mismos. Al hacerlo, nos esforzamos por crear un módulo de mouse que permitiría a los futuros estudiantes implementar más fácilmente la entrada del mouse en sus proyectos.
Paso 2: Obtener la información de bits sin procesar del USB de Basys
- Gran parte de lo que hicimos con el mouse en este proyecto provino de la documentación de Basys3. De la pequeña guía sobre el puerto USB de Basys en ese pdf, encontramos que la placa Basys tiene un reloj incorporado para leer bits a la velocidad correcta desde dispositivos USB.
- Esencialmente, el mouse envía bits a usb comenzando desde un estado inactivo, lee 32 bits que representan el estado del mouse, la posición xy la posición y, y finalmente termina con otro bit inactivo. Para hacer esto, el componente de entrada del mouse usa un registro de desplazamiento y un contador de 32 bits donde el registro de desplazamiento se usa para almacenar 32 bits de datos entrantes del mouse y el contador de 32 bits se usa para contar el número de bits que se almacenan permitiendo el estado register para restablecer y almacenar el siguiente conjunto de 32 bits entrantes.
- El código para el registro de desplazamiento, el contador de 32 bits y el lector de datos se pueden descargar a continuación, así como el archivo de restricciones adaptado a nuestro uso del puerto USB como entrada.
Paso 3: analizar la información del USB
- Después de crear la entrada del mouse al componente usb, el siguiente paso fue crear los bits usb al componente de información vectorial que haría que los datos recibidos por el mouse fueran legibles para el vga.
- Este componente utiliza una máquina de estado que toma el conjunto de bits enviados por la entrada del mouse a usb y se mueve a través de los estados en función de si se ingresaron nuevos bits que cambian el estado y la posición del mouse.
- El diagrama de bloques para los dos primeros pasos del proyecto se muestra aquí, y los dos archivos vhdl son para probar la implementación del mouse usando los LED de basys (una prueba que desafortunadamente nunca se aprobó) y para transmitir el flujo de bits desde el USB. puerto a los vectores de velocidad y posición que puede utilizar el VGA.
- La imagen al lado del diagrama de bloques anterior es una pequeña instantánea (Instructables no nos permite mostrar la imagen de ancho completo) de la información de bits que encontramos en la documentación de basys para completar este paso.
Paso 4: Visualización de la imagen pintada en VGA y edición de lo que se está dibujando
- El cable VGA tiene 14 bits de salida, 4 bits para cada uno de los tres colores y un bit para sincronización horizontal y sincronización vertical.
-
Otro VGA es el módulo VGA proporcionado y funciona de la siguiente manera:
- El monitor está dividido en bloques de 40x30 de 16x16 píxeles para una pantalla de resolución de 640x480 como se ve en la imagen de arriba. El módulo selecciona una dirección de bloque para representar uno de los 1200 bloques en el monitor. La dirección del bloque se selecciona mediante la siguiente ecuación: dirección = 40y + x
- El color está representado por una señal de 12 bits que se correlaciona con un valor RRRRGGGGBBBB que colorea el bloque seleccionado.
-
Nuestro código de control, VGAtest y VGAtestconst, funciona de la siguiente manera:
- Primero establece el bloque seleccionado en el centro del monitor.
- El color del bloque está determinado por 12 interruptores en la placa, estableciendo el valor RRRRGGGGBBBB.
- Los cuatro botones de dirección del tablero cambian la dirección seleccionada. Por ejemplo, presionar el botón derecho agregará 1 a la dirección, seleccionando el bloque uno a la derecha del bloque anterior. Al presionar el botón hacia abajo se agregarán 40 a la dirección, seleccionando el bloque uno debajo del bloque anterior.
- El botón central se usa para establecer todos los valores de color en 0 cuando se presiona. Esto está destinado a comportarse como un botón de borrado que es fácil de usar para el usuario, por lo que el usuario no tiene que cambiar todos los interruptores a 0 para borrar.
- La última imagen es el diagrama de bloques del controlador. Es bastante amplio ya que incluye componentes del módulo y es posible que no se muestre por completo.
Paso 5: ¡Disfruta tu creación
Vinculado aquí hay un lapso de tiempo rápido de la diversión que puede tener con el proyecto final, incluso con solo usar los interruptores y botones en el tablero de la base como entrada.
¡Gracias por leer!
Recomendado:
Robot de pintura alimentado por Arduino: 11 pasos (con imágenes)
Robot de pintura alimentado por Arduino: ¿Alguna vez te has preguntado si un robot podría hacer pinturas y arte fascinantes? En este proyecto intento hacerlo realidad con un robot de pintura alimentado por Arduino. El objetivo es que el robot pueda realizar pinturas por sí solo y utilizar un ref
Pintura sensorial: 5 pasos
Sensorial Painting: Sensorial Painting es un proyecto diseñado para que alguien no vidente pueda pintar o dibujar dentro de bordes que uno pueda delimitar. En este caso utilizaremos un Kultrun de la cultura y pueblo mapuche. SP te avisará mediante sonidos de un Trompe
Pintura de luz inicial (sin Photoshop): 5 pasos (con imágenes)
Pintura con luz inicial (sin Photoshop): Recientemente compré una cámara nueva y estaba investigando algunas de sus características cuando encontré la pintura con luz, o fotografía de larga exposición, en Internet. La mayoría de nosotros habremos visto la forma básica de pintar con luz con una foto en una ciudad con una carretera
Panel táctil con pintura eléctrica y MakeyMakey: 4 pasos
Panel táctil con pintura eléctrica y MakeyMakey: una pintura agradable con un efecto sorprendente, perfecta para llevar a los niños a interacciones hechas por ellos mismos.Combina dibujo, TapeArt, pintura y codificación simple con scratch y algunos archivos de sonido tal vez hechos por ellos mismos
Frascos de pintura para pizarra: 5 pasos (con imágenes)
Frascos de pintura de pizarra: todo científico loco necesita frascos y esos frascos necesitan etiquetas, y como me gusta reutilizar mis frascos, las etiquetas de los frascos deberían ser reescribibles. Afortunadamente, hacer etiquetas reescribibles para frascos de vidrio es fácil con pintura para pizarra. Todo lo que necesitas para hacerte