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 Infrarosu HW-201
  • 2 x ServoMotor SG90
  • Fire de legatura
  • 1 x Breadboard

Schema electrica a circuitului este urmatoarea:

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.

Rezultate Obţinute

Rezultatul obtinut in urma proiectului este un joculet complet functional, pe care utilizatorul il poate controla.

Link catre demo-ul proiectului: https://youtube.com/shorts/4bMITtU0Oek

Poze cu circuitul (fara si cu labirint, respectiv):

Concluzii

Acest proiect mi s-a parut foarte amuzant de facut, si chiar mai greu de implementat decat mi s-a parut initial. Am invatat sa programez pe Arduino si sa folosesc diferite tipuri de senzori si servomotoare. :>

Download

Arhiva cu diagrame/codul sursa pentru proiect:labirint.zip

Jurnal

Am scris chestiile :>

Bibliografie/Resurse

pm/prj2024/amocanu/denis.zamfirescu.txt · Last modified: 2024/05/27 11:43 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