This shows you the differences between two versions of the page.
|
pm:prj2021:agrigore:ledsnake [2021/05/30 14:34] ioana_rusalda.savu |
pm:prj2021:agrigore:ledsnake [2021/06/22 16:54] (current) ioana_rusalda.savu |
||
|---|---|---|---|
| Line 21: | Line 21: | ||
| | Butoane | 4 | [[https://ardushop.ro/ro/home/97-buton-mic-push-button-trough-hole.html?search_query=push+button&results=23]]| | | 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]] | | | 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]] | | | 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 === | === Schema bloc === | ||
| - | {{ :pm:prj2021:agrigore:schemablockpm.png?700 |}} | + | {{ :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]] | ||