Table of Contents

Piano-Tiles-inator

Nume: Vlăsceanu Denis-Mihai
Grupa: 331CA

Introducere

Proiectul presupune asamblarea unui robot format din 4 “degete” mecanice. Cu ajutorul unor mini servo-motoare și a unor senzori de luminozitate, acesta va fi capabil de a interacționa cu jocul “Piano Tiles” rulat pe un dispozitiv cu touchscreen (telefon sau tabletă). Scopul lui este de a atinge un scor cât mai mare în “Piano Tiles” fără a fi nevoie de interacțiune umană.

Cu ceva timp înainte găsisem pe YouTube videoclipuri arătând diverse idei de proiecte cu Arduino, iar printre acestea erau câteva implementări de robot jucător de Piano Tiles. Dintre acestea, eu am ales-o pe cea care implică folosirea unor servo-motoare și a unor stylus-uri, deoarece mi s-a părut cea mai interesantă.

Descriere generală

Robotul constă în 4 “brațe” mecanice improvizate, fiecare dintre ele fiind format dintr-o bară lungă metalică. La baza fiecărui braț se află câte un servo-motor, iar în vârf este câte un stylus cu vârf capacitiv.

De asemenea, pentru fiecare există câte un fotorezistor, lipt de ecranul telefonului/tabletei, care va detecta nivelul de luminozitate, astfel oferind posibilitatea robotului de a distinge dreptunghiurile negre din joc de cele albe/albastre. Astfel, la detectarea unui dreptunghi negru pe una dintre coloane, va fi activat servo-motorul corespunzător și va fi simulată atingerea unui deget pe ecran pe căsuța respectivă.

Cele 4 “brațe” ale robotului funcționează independent unul de celălalt.

Schema bloc

Hardware Design

Componente folosite:

Schema electrică

Simularea în Tinkercad

Software Design

Mediu de dezvoltare: Arduino IDE 2.1.0

Librării externe: Servo.h - pentru utilizarea funcțiilor necesare controlării mini-servomotoarelor

Descriere firmware

- Librăria inclusă “Servo.h” + variabile globale.

- Funcții custom:

void servoPress_i() {
  for (pos = 0; pos <= 30; pos += 5) {
    servo_i.write(pos);
    delay(delay_var);
  }
  for (pos = 30; pos >= 0; pos -= 5) {
    servo_i.write(pos);
    delay(delay_var);
  }
}

- setup():

- loop():

if (analogRead(sensorPin_i) <= darknessValue) {
    delay(decr_delay);
    digitalWrite(ledPin_i, HIGH);
    servoPress_i();
  } else {
    digitalWrite(ledPin_i, LOW);
}

Rezultate Obţinute

WIP

Concluzii

WIP

Download

WIP

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

Bibliografie/Resurse

WIP

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

Export to PDF