This shows you the differences between two versions of the page.
pm:prj2021:agrigore:ledsnake [2021/05/30 14:03] 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]] | | ||
- | | Fire | 42 | [[https://ardushop.ro/ro/home/1832-10-x-fire-dupont-mama-tata-10cm.html?search_query=fire+tata+tata&results=272]] | | + | | 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]] |