This shows you the differences between two versions of the page.
|
pm:prj2021:agrigore:ledsnake [2021/04/26 10:46] ioana_rusalda.savu |
pm:prj2021:agrigore:ledsnake [2021/06/22 16:54] (current) ioana_rusalda.savu |
||
|---|---|---|---|
| Line 4: | Line 4: | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| * Proiectul consta in implementarea jocului Snake folosind o mtrice de Led-uri si butoane. | * Proiectul consta in implementarea jocului Snake folosind o mtrice de Led-uri si butoane. | ||
| - | * Snake consta in manevrarea unui punct, un pătrat sau un obiect pe un plan mărginit. Pe măsură ce înaintează, lasă o urmă în urmă, asemănătoare unui șarpe în mișcare. | + | * Snake consta in manevrarea unui punct, un pătrat sau un obiect pe un plan mărginit. Pe măsură ce înaintează, lasă o urmă în spate, asemănătoare unui șarpe în mișcare. |
| * Sarpele continuă să se lungească pe măsură ce se mișcă. | * Sarpele continuă să se lungească pe măsură ce se mișcă. | ||
| * Jucătorul pierde atunci când șarpele intră în marginea ecranului, o urmă, un alt obstacol sau el însuși. | * Jucătorul pierde atunci când șarpele intră în marginea ecranului, o urmă, un alt obstacol sau el însuși. | ||
| Line 13: | Line 13: | ||
| * Lungimea sarpelui este reprezentata de numarul de led-uri aprinse intr-un anumit moment de timp. | * Lungimea sarpelui este reprezentata de numarul de led-uri aprinse intr-un anumit moment de timp. | ||
| * Miscarea sarpelui este controlata cu ajutorul butoanelor | * Miscarea sarpelui este controlata cu ajutorul butoanelor | ||
| + | |||
| === Componente === | === Componente === | ||
| - | * Arduino Uno | + | ^Nume ^Numar ^Link ^ |
| - | * Breadboard | + | | Arduino Uno | 1 | [[https://www.optimusdigital.ro/en/compatibile-with-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?search_query=0104110000016997&results=1|click]] | |
| - | * 4 butoane | + | | Breadboard | 1 | [[https://www.optimusdigital.ro/en/breadboards/8-breadboard-hq-830-points.html?search_query=0104110000001382&results=1|click]] | |
| - | * LED-uri | + | | LED-uri albastre | 64 | [[https://ardushop.ro/ro/electronica/299-led-3mm.html#/14-culoare-albastru]] | |
| - | * Placa de test | + | | Butoane | 4 | [[https://ardushop.ro/ro/home/97-buton-mic-push-button-trough-hole.html?search_query=push+button&results=23]]| |
| + | | Shift Register | 2 | [[https://ardushop.ro/ro/electronica/141-ic-shift-register-sn74hc595n-74hc595.html?search_query=shift+register&results=13]] | | ||
| + | | Rezistenț2 220Ohm | 8 | [[https://ardushop.ro/ro/electronica/211-rezistenta-14w-1-buc.html?search_query=rezistence+220&results=63#/83-valoare_rezistenta-220r]] | | ||
| + | | Placă de prototipare | 1 | [[https://ardushop.ro/ro/electronica/61-placa-de-prototipare-cablaj-pcb-5x7-cm.html?gclid=Cj0KCQjw78yFBhCZARIsAOxgSx2QNVqeQVtwOUlGU2amDJFs0vOFTNK5OT1oa2EVEjDP72ZRImTmB6AaAtNFEALw_wcB]] | | ||
| + | | Fire | 42 | [[https://ardushop.ro/ro/home/1832-10-x-fire-dupont-mama-tata-10cm.html?search_query=fire+tata+tata&results=272]] | | ||
| + | === Schema bloc === | ||
| + | {{ :pm:prj2021:agrigore:schemablockpm.png?650 |}} | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | + | {{ :pm:prj2021:agrigore:schemaelectrica.jpg?600 |}} | |
| + | |||
| + | ==== Conexiuni ==== | ||
| + | |||
| + | Putem grupa implementarea în trei tipuri de conexiuni: | ||
| + | |||
| + | *conexiune Shift Register - Matrice de leduri | ||
| + | *conexiune Shift Register - Arduino | ||
| + | *conexiune Butoane - Arduino | ||
| + | |||
| + | ==== Shift Register - Matrice ==== | ||
| + | |||
| + | Matricea a fost realizată prin lipirea a 64 de leduri albastre pe 8 linii și 8 coloane. | ||
| + | * Pentru o linie am lipit catodurile fiecărui Led corespunzător acesteia și în final cu o rezistență de 220 Ohm. | ||
| + | * Pentru o coloană am lipit toate anodurile Led-urilor corespunzătoare. | ||
| + | La capetele liniilor/coloanelor se găsesc barete de pini pentru conectarea firelor. | ||
| + | {{:pm:prj2021:agrigore:matrice1.jpeg?300 |}} {{ :pm:prj2021:agrigore:matrice2.jpeg?300|}} | ||
| + | {{:pm:prj2021:agrigore:matriceconex2.jpeg?300 |}} {{ :pm:prj2021:agrigore:matriceconex.jpeg?300|}} | ||
| + | {{ :pm:prj2021:agrigore:lipit.jpeg?300|}} | ||
| + | |||
| + | Pentru a avea mai mulți pini de ieșire decât cei oferiți de plăcuță am folosit 2 Shift Register. Unul controlează coloanele, celălalt liniile. | ||
| + | |||
| + | ==== Shift Register - Arduino ==== | ||
| + | |||
| + | Shift Register-ele folosesc aceleași semnale pentru clock, latch și data. | ||
| + | Astfel pinii acestor au fost conectați. | ||
| + | Pentru conexiunea cu arduino: | ||
| + | * Latch (ST_CP) - pin 11 | ||
| + | * Clock (SH_CP) - pin 12 | ||
| + | * Data (DS) - pin 9 | ||
| + | * Vcc - 5V | ||
| + | * Gnd - GND | ||
| + | * OE - GND | ||
| + | {{ :pm:prj2021:agrigore:shiftregister.jpg?300 |}} | ||
| + | {{ :pm:prj2021:agrigore:shift_register.jpeg?300 |}} | ||
| + | |||
| + | ==== Butoane - Arduino ==== | ||
| + | * Buton UP - pin 2 | ||
| + | * Buton DOWN - pin 5 | ||
| + | * Buton LEFT - pin 4 | ||
| + | * Buton RIGHT - pin 3 | ||
| + | {{ :pm:prj2021:agrigore:butoane.jpeg?300 |}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | Șarpele este reprezentat prin led-urile aprinse la un anumit momemnt de timp. Se începe de la un șarpe de lungime 2 (2 led-uri aprinse). Se va mai aprinde un led (ales random care va reprezenta punctele obținute de șarpe). | ||
| + | În momentul în care șarpele ajunge la punct, își va mări lungimea, va crește numărul de led-uri consecutive aprinse. | ||
| + | |||
| + | ==== Implementare ==== | ||
| + | Structuri de date folosite: | ||
| + | * Vector care reține combinațiile pentru selectarea fiecărui rând | ||
| + | * Vector care reține combinațiile pentru selectarea fiecărei coloane | ||
| + | * Vector care reține starea fiecărui led (1- aprins, 2 - stins) | ||
| + | * Listă simplu înlănțuita care stochează poziția fiecărui led ce alcătuiește șarpele | ||
| + | * 2 pointeri care rețin capul si coada șarpelui | ||
| + | |||
| + | Controlul șarpelui se realizează prin butoane. De fiecare dată cand un buton este apăsat se tratează întreruperea setându-se noua direcție de mers. | ||
| + | Direcția este salvată cu ajutorul unei variabile de tip char (U - UP, D - DOWN, L - LEFT, R - RIGHT). | ||
| + | În funcție de direcția de deplasare se actualizează poziția fiecărui led, modificând coordonatele X și Y (vezi funcția moveSnake()). | ||
| + | De fiecare dată când se deplasează șarpele, ultimul led (coada este marcat stins) iar un nou bec este marcat aprins, transformându-se în noul cap. | ||
| + | În loop se verifică vectorul de led-uri și se aprind cele marcate cu ajutorul configurațiilor row și col, folosind funcția | ||
| + | **shiftOut(dataPin, clockPin, bitOrder, value) [[https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout/|]] | ||
| + | ** | ||
| + | {{ :pm:prj2021:agrigore:config.jpg?600 |}} | ||
| + | |||
| + | |||
| ===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
| + | {{ :pm:prj2021:agrigore:proiect.jpeg?500 |}} | ||
| + | {{:pm:prj2021:agrigore:s1.jpg?400|}} | ||
| + | {{ :pm:prj2021:agrigore:s3.jpg?400 |}} | ||
| + | === Video === | ||
| + | |||
| + | video: [[https://www.youtube.com/watch?v=Bek0bh3-BxM&ab_channel=IoanaSavu|]] | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | * Proiectul funcționează conform așteptărilor | ||
| + | * Poate fi îmbunătățit adăuănd noi feature-uri. | ||
| ===== Download ===== | ===== Download ===== | ||
| + | {{:pm:prj2021:agrigore:snakepm.rar|}} | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| + | * 26.04 - alegere temă | ||
| + | * 03.05 - realizare schemă electrică în tinkercad | ||
| + | * 16.05 - implementare miscare șarpe | ||
| + | * 24.05 - finalizare implementare joc | ||
| + | * 25.05 - realizare matrice leduri | ||
| + | * 26.05 - testare + debug impelentare | ||
| + | * 28.05 - finalizare proiect + reparat matrice | ||
| + | * 30.05 - documentatie | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| + | * [[https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout/|]] | ||
| + | * [[https://www.youtube.com/watch?v=U3ccR3xbJSQ&ab_channel=EASYTECHEASYTECH|]] | ||
| + | * [[https://www.youtube.com/watch?v=NykONuPWycc&ab_channel=element14presentselement14presentsVerified|]] | ||
| + | * [[https://www.youtube.com/watch?v=ZDtRWmBMCmw&ab_channel=ElectronoobsElectronoobs|]] | ||
| + | * [[pm:prj2021:agrigore:ledsnake|LEDSnake]] | ||