This is an old revision of the document!


Ball in a Maze Puzzle

Introducere

Acest proiect reprezinta implementarea unui joc de tip labirint pe o placuta Arduino Mega 2560. Jucatorul are rolul de a ghida o bila printr-un labirint, folosindu-se de cei 4 senzori de proximitate pe care ii are la dispozitie. Fiecare senzor roteste labirintul intr-o anumita directie, astfel incat bila sa se poata rostogoli.

Ideea acestui proiect mi s-a parut interesanta si parea un joc distractiv de jucat :-D

Descriere generală

  • Jucatorului ii sunt prezentati 4 senzori de proximitate, fiecare corespunzand unei directii in care labirintul poate fi rotit
  • Senzorii vor fi folositi de catre jucator pentru a trimite inputuri sistemului si pentru a activa cele 2 servomotoare.
  • Cele 2 servomotoare au rolul de a roti labirintul pe o anumita axa, astfel incat biluta din acesta sa se poata rostogoli in directia dorita

Hardware Design

  • Placa Arduino Mega 2560
  • 4 x Senzori Proximitate HW-201
  • 2 x ServoMotor SG90
  • Fire de legatura
  • 1 x Breadboard

Aici puneţi tot ce ţine de hardware design:

Software Design

Mediul de dezvoltare folosit: Arduino IDE Librarii folosite: Servo, New Ping (Instalate direct in IDE)

Descrierea implementarii:

Implementarea consta in verificarea periodica a semnalelor primite de la senzori. Daca unul dintre acestia detecteaza ca jucatorul si-a apropiat mana de el, algoritmul trimite un semnal servomotorului corespunzator si il roteste cu un anumit numar de grade. Functii definite:

  • setup: aici sunt definite starile pinilor si sunt atasate porturi servomotoarelor, folosind functia attach din libraria Servo. De asemenea, este pornita comunicarea seriala, cu un baud de 9600
  • loop: aici se seteaza starea initiala a servomotoarelor(in cadrul primului loop), iar apoi se citesc datele de la senzori. Daca unul dintre senzori este activat, se roteste servomotorul corespunzator acestuia cu un anumit numar de grade.

Am folosit variabile globale pentru a defini in cod servomotoarele si pentru a retine unghiurile la care acestea se afla, pentru a nu permite jucatorului sa roteasca excesiv labirintul. Am folosit macrouri pentru a tine minte atribuirea pinilor de pe placuta Arduino.

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

Am scris chestiile :>

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/amocanu/denis.zamfirescu.1716777567.txt.gz · Last modified: 2024/05/27 05:39 by denis.zamfirescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0