This is an old revision of the document!


Piano Player

Introducere

Prezentarea pe scurt a proiectului:

Este un robot care poate interactiona cu jocul de mobile 'Piano Tiles'.
Va recunoaste diferenta dintre culorile patratelor care apar pe ecran
si va apasa pe cele negre.
Am jucat destul de mult acest joc si as vrea sa vad daca un robot ar putea depasi limitele unui om.

Descriere generală

Proiectul reprezinta un robot care poate juca popularul joc Piano Tiles.

Robotul va citi valori de segmente din ecran si in functie de culoarea pe care o citeste pe fiecare segment va simula sau nu o atingere a ecranului touchscreen.

Hardware Design

Piese necesare:

Arduino UNO
LDR (photoresistor)
Power Relays
Jumper Wires
Rezistors(22kohm)
Breadboard

Schema Bloc:

Hardware Design:

Proiectul poate fi impartit in 2 segmente: achizitia de date (photorezistorii) si simularea atingerii touch screen (prin relays).

Photorezitorii o sa fie positionati astfel incat sa poata citi valorile de pe ecran;

Pentru negru, valoarea data la input va fi mai mica decat pentru alb, photorezistorul va interpreta culoarea negru ca lipsa luminii.

Atunci cand un LDR citeste culoarea negru, acesta va declansa o mutare a relayului, mai exact inchiderea switchului.

Ecranele touchscreen sunt ecrane capacitive, deci atunci cand noi atingem ecranul ne comportam ca o impamantare pt circuit. Voi incerca sa simulez un comportament simular prin folosirea unor switchuri care se conecteaza la ground cand vrem sa “apasam”.

Voi atasa in continuare o imagine cu schema proiectului in ThinkerCad:

In proiectul fizic se vor inlocui multimeter-urile cu fire care au un material conductiv la capat, care vor fi pozitionate pe ecranul telefonului, dar in ThinkerCad folosesc multimeters pentru a ma asigura ca relayurile comuta intre 5V si ground (~0).

Software Design

Codul folosit este unul simplu, care trebuie doar sa citeasca cate un input de la fiecare photorezistor si in functie de valoarea acestora va schimba valoarea unui pin conectat la un relay intre HIGH si LOW.

Codul initial, testal in ThinkerCad, arata astfel:

 
int photo0 = A0;
int photo1 = A1;
int photo2 = A2;
int photo3 = A3;

int relay0 = 10;
int relay1 = 11;
int relay2 = 12;
int relay3 = 13;

int photo0Read;
int photo1Read;
int photo2Read;
int photo3Read;

void setup() {
  Serial.begin(255);
  pinMode(photo0, INPUT);
  pinMode(photo1, INPUT);
  pinMode(photo2, INPUT);
  pinMode(photo3, INPUT);
  
  pinMode(relay0, OUTPUT);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
}


void loop() {
  
  photo0Read = analogRead(photo0);
  photo1Read = analogRead(photo1);
  photo2Read = analogRead(photo2);
  photo3Read = analogRead(photo3);
  
  if (photo0Read < 817) {
    Serial.println("A0");
    digitalWrite(relay0, LOW);
  }else{
    Serial.println("not A0");
    digitalWrite(relay0, HIGH);
  }
  
  if (photo1Read < 817) {
    Serial.println("A1");
    digitalWrite(relay1, LOW);
  }else{
    Serial.println("not A1");
    digitalWrite(relay1, HIGH);
  }
  
  if (photo2Read < 817) {
    Serial.println("A2");
    digitalWrite(relay2, LOW);
  }else{
    Serial.println("not A2");
    digitalWrite(relay2, HIGH);
  }
  
  if (photo3Read < 817) {
    Serial.println("A3");
    digitalWrite(relay3, LOW);
  }else{
    Serial.println("not A3");
    digitalWrite(relay3, HIGH);
  }
  
}

In cod trebuie adaugate delayuri custom pentru a lua in considerare distanta dintre LDR-uri (punctul de citire) si monedele de pe ecran (punctul de atingere al ecranului).

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

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

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

Export to PDF

pm/prj2022/avaduva/pianoplayer.1653215181.txt.gz · Last modified: 2022/05/22 13:26 by sergiu.spiridon
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