This shows you the differences between two versions of the page.
pm:prj2022:ndrogeanu:navigation_computer [2022/05/12 21:08] alexandru.dutulescu |
pm:prj2022:ndrogeanu:navigation_computer [2022/06/02 12:49] (current) alexandru.dutulescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 4 In A Row ====== | + | //**Calculator Navigatie Racheta**// |
- | ===== Introducere ===== | + | Prin acest proiect voi masura si compara diferenta in capacitatile de procesare a semnalelor venite de la senzorii placilor: IMU MPU6500 si barometru M5607 pentru placa cu Arduino si IMU MPU6050 si barometru BMP180 pentru placa cu Raspberry Pi Pico. Pentru procesarea semnalului folosim filtre Kalman pentru a reduce spike-urile in citire. Pentru a masura altitudini si viteze, folosim integrale. Pentru altitudini folosim de asemenea barometrul. Trebuie sa avem grija totusi pentru ca in regim supersonic racheta produce o unda de soc care altereaza citirea pe barometru. |
- | 4 In A Row este un joc de strategie in doi in care fiecare jucator alege o culoare si apoi cu randul pozitioneaza jetoane intr-o matrice cu 6 linii si 7 coloane. Piesele cad pe cea mai de jos pozitie a coloanei selectate. Fiecare dintre cei doi incercand sa fie primul care formeaza orizontal, vertical sau diagonal o linie de 4 jetoane. | + | Asta e pcb-ul ARDUINO: {{:pm:prj2022:ndrogeanu:pcb_dutulescu_alexandru.png?200|}} |
- | + | Asta e schematica ARDUINO: {{:pm:prj2022:ndrogeanu:schematic_dutulescu_alexandru.png?200|}} | |
- | ===== Descriere generală ===== | + | |
- | La inceputul partidei fiecare jucator va putea selecta o culoare care va fi dispusa pe unul din leduri cu ajutorul butoanelor. Ulterior fiecare jucator se va folosi de aceleasi butoane pentru a selecta unde va cadea piesa. Acesta va vizualiza selectarea pozitiei pe banda led deasupra celor 7 stripuri de banda led care reprezinta tabla de joc. Randul fiecarui jucator este semnalizat de ledurile cu ajutorul carora s-a realizat selectarea culorii de joc. In momentul in care unul dintre jucatori reuseste sa formeze o linie de 4, buzzer-ul va produce o melodie pentru invingator. | + | |
- | ==== Schema Bloc ==== | + | |
- | {{:pm:prj2022:ndrogeanu:pm_proiect_4_in_a_row.png?650|}} | + | |
+ | Asta e pcb-ul PICO: {{:pm:prj2022:ndrogeanu:pcb_2_.jpeg?200|}} | ||
+ | Asta e schematica PICO: To be added, nu o mai gasesc | ||
- | ===== Hardware Design ===== | ||
- | *[[https://cleste.ro/arduino-uno-r3-atmega328p.html|Arduino UNO]] | ||
- | *[[https://cleste.ro/breadboard-400-puncte.html|Breadboard]] | ||
- | *[[https://www.sigmanortec.ro/Banda-LED-adresabila-RGB-WS2812-60led-m-IP67-10cm-p166125661|Banda Led]] | ||
- | *[[https://cleste.ro/buton-rotund.html#/101-butonrotund-verde|Buton]] | ||
- | *[[https://www.conexelectronic.ro/ro/senzori-si-module-pentru-platforme-de-dezvoltare/18499-MODUL-BUZZER-PASIV-3-3-5V.html?search_query=buzzer&results=19|Buzzer]] | ||
- | *[[https://www.sigmanortec.ro/led-rgb-10mm-catod-comun|Led RGB]] | ||
- | *[[https://www.sigmanortec.ro/40-fire-Dupont-10cm-Tata-Tata-p210856288|Fire tata-tata]] | ||
- | *[[https://www.sigmanortec.ro/40-fire-Dupont-10cm-Tata-Mama-p210855157|Fire tata-mama]] | ||
- | ==== Schema electrică ==== | + | {{:pm:prj2022:ndrogeanu:componente_dutulescu_alexandru.xlsx|}} |
- | {{:pm:prj2022:ndrogeanu:tinkercad_pm_4_in_a_row.png?650|}} | + | |
- | === Banda LED === | + | Date zbor Clinceni |
- | * Banda LED cu 7 LED-uri | + | {{:pm:prj2022:ndrogeanu:whatsapp_image_2022-06-02_at_12.46.21.jpeg?200|}} |
- | * Utilizeaza 3 pini : | + | |
- | * GND | + | |
- | * VCC - conectat la 5V | + | |
- | * 1 pin conectat la pinul 3 al plăcuței pentru accesare directa | + | |
- | * Banda LED cu 6 * 7 LED-uri | + | |
- | * Utilizeaza 3 pini : | + | |
- | * GND | + | |
- | * VCC - conectat la 5V | + | |
- | * 1 pin conectat la pinul 2 al plăcuței pentru accesare directa | + | |
- | === Led RGB Jucator 1 === | + | Cod: |
- | * Utilizeaza 4 pini : | + | https://github.com/AlexD91561/2SpaceNavigationComputer |
- | * GND | + | |
- | * 1 pin conectat la pinul 8 al plăcuței pentru a furniza culoarea rosu | + | |
- | * 1 pin conectat la pinul 9 al plăcuței pentru a furniza culoarea verde | + | |
- | * 1 pin conectat la pinul 10 al plăcuței pentru a furniza culoarea albastru | + | |
- | |||
- | === Led RGB Jucator 2 === | ||
- | * Utilizeaza 4 pini : | ||
- | * GND | ||
- | * 1 pin conectat la pinul 11 al plăcuței pentru a furniza culoarea rosu | ||
- | * 1 pin conectat la pinul 12 al plăcuței pentru a furniza culoarea verde | ||
- | * 1 pin conectat la pinul 13 al plăcuței pentru a furniza culoarea albastru | ||
- | |||
- | |||
- | === Butoane === | ||
- | * Utilizeaza 2 pini: | ||
- | * conectat la 5V | ||
- | * 1 pin conectat la pinul analog A0 | ||
- | |||
- | === Buzzer === | ||
- | * Utilizeaza 2 pini : | ||
- | * GND | ||
- | * 1 pin conectat la pinul 6 al plăcuței pentru a produce o melodie | ||
- | ===== Software Design ===== | ||
- | *** Mediu de dezvoltare folosit**: | ||
- | * Tinkercad | ||
- | * Arduino IDE | ||
- | * **Biblioteci** | ||
- | * Adafruit_NeoPixel | ||
- | * **Implementare** | ||
- | - **setup()** | ||
- | * se seteaza pinii de output | ||
- | * se inițializezaza benzile LED; | ||
- | - **checkWinner()** | ||
- | * se realizeaza verificarea daca unul dintre cei doi jucatori a reusit sa formeze o structura de 4 jetoane pe orizontal, oblic sau diagonale | ||
- | - **colorCompare(struct Color color1, struct Color color2)** | ||
- | * verifica daca doua culori sunt aceleasi | ||
- | * aceasta functie este utilizata pentru ca cei doi jucatori sa aiba culori distincte pentru a se diferentia | ||
- | - **clearP1()** | ||
- | * opreste LED-ul jucatorului 1 | ||
- | - **clearP2()** | ||
- | * opreste LED-ul jucatorului 2 | ||
- | - **setPlayer()** | ||
- | * in cazul in care partida a fost castigata se reseteaza culorile jucatorilor | ||
- | - **setBoardMatrix()** | ||
- | * se initializeaza corespunzator matricea care reprezinta tabla de joc | ||
- | - **setPlayerColor(int player_nr)** | ||
- | * se alege cu ajutorul butoanelor culoarea pentru jucatorul player_nr | ||
- | * cu ajutorul pinului A0, a lui analogRead si a rezistentelor de valori diferite putem naviga printre culorile puse la dispozitia unui jucaotr | ||
- | - **loop()** | ||
- | * se initializeaza tabla de joc | ||
- | * fiecare jucator alege o culoare | ||
- | * la fel ca la alegerea culorii ne folosim de butoane pentru a selecta unde va cadea jetonul | ||
- | * in cazul in care exista un castigator semnalizam portiunea de 4 jetoane care a dus la castigarea partidei si se porneste o melodie prntru castigator | ||
- | * se reseteaza datele pentru a putea incepe o noua partida | ||
- | ===== Rezultate Obţinute ===== | ||
- | |||
- | Joc de entertainment: | ||
- | [[https://drive.google.com/file/d/1EbVK4Leut1lrDexZ3NN1hdoZajBTrkOf/view?usp=sharing|Video]] | ||
- | |||
- | {{:pm:prj2022:ndrogeanu:pm_4_in_a_row_light.jpeg?700|}} | ||
- | ===== Concluzii ===== | ||
- | |||
- | Am implementat jocul 4 in a row cu ajutorul uei placute Arduino Uno si a componentelor de baza. | ||
- | {{:pm:prj2022:ndrogeanu:pm_4_in_a_row_fizic.jpeg?700|}} | ||
- | ===== Download ===== | ||
- | |||
- | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | |||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
- | </note> | ||
- | |||
- | ===== Jurnal ===== | ||
- | |||
- | * 01.05.2022: Creare Wiki | ||
- | * 01.05.2022: Adaugare introducere, descriere generală, schema bloc, listă componente | ||
- | * 02.05.2022: Achizitionare Componente | ||
- | * 04.05.2022: Primire Componente | ||
- | * 05.05.2022: Verificare componente | ||
- | * 06.05.2022: Realizare cod Tinkercad | ||
- | * 08.05.2022 - 09.05.2022: Taierea benzii LED si lipirea acesteia | ||
- | * 10.05.2022: Conectarea tuturor componentelor la placa Arduino Uno | ||
- | * 11.05.2022: Modificarea codului, debug pentru o functionalitate corecta | ||
- | * 11.05.2022: Adaugare schema electrica | ||
- | ===== Bibliografie/Resurse ===== | ||
- | |||
- | * [[https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use|NeoPixel]] | ||
- | * [[https://www.instructables.com/How-to-Multiple-Buttons-on-1-Analog-Pin-Arduino-Tu/|Multiple Buttons]] | ||
- | * [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button|Button]] | ||
- | * [[https://create.arduino.cc/projecthub/muhammad-aqib/arduino-rgb-led-tutorial-fc003e|RGB LED]] | ||
- | * [[https://www.ardumotive.com/how-to-use-a-passive-buzzer-module-en.html|Buzzer]] | ||
- | * [[https://learn.adafruit.com/make-it-glow-how-to-solder-neopixels-a-beginners-guide/connecting-two-strips|NeoPixel Connect]] | ||
- | * [[https://java.tutorialink.com/connect-4-check-for-a-win-algorithm/|4 In A Row Win]] | ||
- | |||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||