Cuprins:
- Pasul 1: Motivație și problemă
- Pasul 2: Obținerea informațiilor despre bitul brut de pe USB-ul de bază
- Pasul 3: Analizarea informațiilor USB
- Pasul 4: Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
- Pasul 5: Bucurați-vă de creația voastră
Video: Program de pictură VGA: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Proiect de: Adam Klein, Ian Strachan, Brandon Slater
Proiectul pe care ne-am propus să-l finalizăm a fost acela de a stoca, analiza și afișa informații de pe un mouse USB sub forma unui program de pictură. Ideea din spatele proiectului este să puteți conecta mouse-ul și cablurile VGA la placa Basys din porturile sale încorporate și să afișați mouse-ul ca un pătrat mobil de pictură pe monitor, schimbând diferite culori atunci când sunt făcute clicuri stânga și dreapta. folosit. În esență, am crea un driver pentru utilizarea mouse-ului cu placa de bază și vom avea monitorul ca verificare a funcționalității noastre. Ceea ce s-a întâmplat cu adevărat a fost crearea unui program de desen cu placa de bază ca sistem de intrare și un sistem semi-funcțional de captare a datelor pentru mouse.
În acest instructable, vom descompune pașii de la intrarea mouse-ului la ieșirea vga.
Pasul 1: Motivație și problemă
Motivație:
Principala motivație a proiectului nostru a fost să creăm un driver de mouse pentru placa Basys3 pe care viitorii studenți CPE 133 să-l poată utiliza pentru proiectele lor finale în viitor. Cu toate acestea, am făcut această idee cu un pas mai departe prin crearea unui program de pictură, unul pe care viitorii studenți să-l poată construi.
Problemă:
Problema pe care am descoperit-o a fost că nu există un modul clar al mouse-ului gata de descărcare și utilizare pentru placa Basys3. Pentru a rezolva această problemă, am încercat să creăm una singură. Procedând astfel, ne-am străduit să creăm un modul mouse care să permită viitorilor studenți să implementeze mai ușor intrarea mouse-ului în proiectele lor.
Pasul 2: Obținerea informațiilor despre bitul brut de pe USB-ul de bază
- O mare parte din ceea ce am făcut pentru mouse în acest proiect a venit din documentația Basys3. Din micul ghid de pe portul USB Basys din acel pdf, am constatat că placa Basys are un ceas încorporat pentru citirea biților la viteza corectă de pe dispozitivele USB.
- În esență, mouse-ul trimite biți către usb pornind de la o stare inactivă, citește 32 de biți reprezentând starea mouse-urilor, poziția x și poziția y și, în cele din urmă, se termină cu un alt bit inactiv. Pentru a face acest lucru, componenta de intrare a mouse-ului folosește un registru de schimbare și un contor de 32 de biți, unde registrul de schimbare este utilizat pentru a stoca 32 de biți de date primite de la mouse, iar contorul de 32 de biți este utilizat pentru a număra numărul de biți stocați permițând starea Înregistrați-vă pentru a reseta și stoca următorul set de 32 de biți de intrare.
- Codul pentru registrul de schimbare, contorul de 32 biți și cititorul de date pot fi descărcate mai jos, precum și fișierul de constrângeri adaptat utilizării portului USB ca intrare
Pasul 3: Analizarea informațiilor USB
- După crearea intrării mouse-ului către componenta USB, următorul pas a fost crearea biților USB către componenta de informații vectoriale care ar face ca datele primite de mouse să fie lizibile pentru vga.
- Această componentă folosește o mașină de stare care preia setul de biți ieșiți de intrarea mouse-ului în USB și se deplasează prin stări în funcție de dacă au fost introduși biți noi care modifică starea și poziția mouse-ului.
- Schema bloc pentru primii doi pași ai proiectului este prezentată aici, iar cele două fișiere vhdl sunt pentru testarea implementării mouse-ului folosind LED-urile de bază (un test care, din păcate, nu a fost trecut niciodată) și pentru proiectarea fluxului de biți de pe USB port pentru viteza și poziționarea vectorilor pe care VGA le poate utiliza.
- Imaginea de lângă diagrama bloc de mai sus este un mic instantaneu (Instructables nu ne permite să afișăm imaginea largă completă) a informațiilor despre biți pe care le-am găsit în documentația de bază pentru finalizarea acestui pas.
Pasul 4: Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
- Cablul VGA are 14 biți de ieșire, 4 biți pentru fiecare dintre cele trei culori și un bit pentru sincronizare orizontală și sincronizare verticală.
-
OtherVGA este modulul VGA furnizat și funcționează după cum urmează:
- Monitorul este împărțit în blocuri de 40x30 de 16x16 pixeli pentru un ecran de rezoluție 640x480, așa cum se vede în imaginea de mai sus. Modulul selectează o adresă de bloc pentru a reprezenta unul dintre cele 1200 de blocuri de pe monitor. Adresa blocului este selectată prin următoarea ecuație: adresa = 40y + x
- Culoarea este reprezentată de un semnal de 12 biți care se corelează cu o valoare RRRRGGGGBBBB care colorează blocul selectat.
-
Codul nostru de control, VGAtest și VGAtestconst, funcționează după cum urmează:
- Mai întâi setează blocul selectat în centrul monitorului.
- Culoarea blocului este determinată de 12 comutatoare de pe placă, setând valoarea RRRRGGGGBBBB.
- Cele patru butoane direcționale de pe placă modifică adresa selectată. De exemplu, apăsând butonul din dreapta se va adăuga 1 la adresă, selectând blocul unul din dreapta blocului anterior. Apăsarea butonului în jos va adăuga 40 la adresă, selectând blocul unul sub blocul anterior.
- Butonul central este utilizat pentru a seta toate valorile culorilor la 0 atunci când este apăsat. Acesta este menit să se comporte ca un buton de ștergere ușor de utilizat de către utilizator, astfel încât utilizatorul nu trebuie să întoarcă fiecare comutator la 0 pentru a șterge.
- Ultima imagine este schema bloc pentru controler. Este destul de larg, deoarece include componente ale modulului și este posibil să nu fie afișat complet.
Pasul 5: Bucurați-vă de creația voastră
Legat aici este un timelapse rapid al distracției pe care o puteți avea cu proiectul final, chiar și doar folosind comutatoarele și butoanele de pe placa de bază ca intrare.
Mulțumesc pentru lectură!
Recomandat:
Robot de pictură alimentat Arduino: 11 pași (cu imagini)
Arduino Powered Painting Robot: v-ați întrebat vreodată dacă un robot ar putea face picturi și artă fascinante? În acest proiect încerc să fac asta o realitate cu un robot Arduino Powered Painting. Obiectivul este ca robotul să poată face picturi pe cont propriu și să folosească un ref
Pictura senzorială: 5 pași
Pictura senzorială: pictura senzorială este un proiect proiectat pentru cineva care nu văd pueda pintar sau să se deseneze în interiorul bordurilor pe care unul să delimiteze. În acest caz utilizăm un Kultrun al culturii și pueblo mapuche. SP te avisará prin sonidos de un Trompe
Pictură tradițională chineză NeoPixel Wall Art (Powered by Arduino): 6 pași (cu imagini)
Pictură tradițională chineză NeoPixel Wall Art (Powered by Arduino): Te simți puțin plictisitor în privința peretelui tău? Să facem astăzi o artă de perete frumoasă și ușoară alimentată de Arduino! Trebuie doar să fluturați mâna în fața cadrului și să așteptați magia! În acest tutorial, vom discuta despre cum să vă creați propria
Monștri spațiali - o pictură interactivă: 8 pași (cu imagini)
Monștri spațiali - o pictură interactivă: De asemenea, obosit să audă „Nu!” când vrei să atingi o pictură? Să facem una pe care să o poți atinge
Pictura Tigrului 3D Tipărit: 5 pași
Tiger Painting 3D Printed: Acest instructiv va combina arta și imprimarea 3D împreună pentru a recrea pictura unui tigru. Unda este formată din 3 filamente: negru, alb și portocaliu. Modul în care funcționează este faptul că tipăriți un stl de tigru, după o anumită cantitate de straturi