Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:avaduva:pianoplayer [2022/05/22 13:13]
sergiu.spiridon [Hardware Design]
pm:prj2022:avaduva:pianoplayer [2022/05/27 22:28] (current)
sergiu.spiridon [Bibliografie/Resurse]
Line 12: Line 12:
  
 <note tip> <note tip>
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.+Proiectul reprezinta un robot care poate juca popularul joc Piano Tiles.
  
-Exemplu ​de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html+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.
 </​note>​ </​note>​
  
Line 48: Line 49:
  
 Voi atasa in continuare o imagine cu schema proiectului in ThinkerCad: Voi atasa in continuare o imagine cu schema proiectului in ThinkerCad:
 +
 {{:​pm:​prj2022:​avaduva:​thinker_cad_full_sergiu.png?​800|}} {{:​pm:​prj2022:​avaduva:​thinker_cad_full_sergiu.png?​800|}}
 +
 +Schematic:
 +
 +{{:​pm:​prj2022:​avaduva:​schematic_sergiu.png?​800|}}
  
 In proiectul fizic se vor inlocui multimeter-urile cu fire care au un material conductiv la capat, care vor fi pozitionate pe ecranul telefonului,​ In proiectul fizic se vor inlocui multimeter-urile cu fire care au un material conductiv la capat, care vor fi pozitionate pe ecranul telefonului,​
Line 56: Line 62:
  
  
-<note tip> +Codul folosit este unul simplu, care trebuie doar sa citeasca cate un input de la fiecare photorezistor si 
-Descrierea codului aplicaţiei (firmware):​ +in functie ​de valoarea acestora va schimba valoarea unui pin conectat la un relay intre HIGH si LOW.
-  * 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 +
-</​note>​+
  
 +Codul initial, testal in ThinkerCad, arata astfel:
 +
 +<​code>​
 + 
 +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 delay_close_1 = 50;
 +int delay_close_2 = 50;
 +
 +int delay_far = 100;
 +
 +void setup() {
 +  // put your setup code here, to run once:
 +  Serial.begin(9600);​
 +  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() {
 +  ​
 +  if (analogRead(photo0) < 700) {
 +    delay(delay_far);​
 +    digitalWrite(relay0,​ HIGH);
 +    delay(delay_close_1);​
 +    digitalWrite(relay0,​ LOW);
 +    delay(delay_close_2);​
 +  } else if (analogRead(photo1) < 700) {
 +    digitalWrite(relay1,​ HIGH);
 +    delay(delay_close_1);​
 +    digitalWrite(relay1,​ LOW);
 +    delay(delay_close_2);​
 +  } else if (analogRead(photo2) < 700) {
 +    delay(delay_far);​
 +    digitalWrite(relay2,​ HIGH);
 +    delay(delay_close_1);​
 +    digitalWrite(relay2,​ LOW);
 +    delay(delay_close_2);​
 +  } else if (analogRead(photo3) < 700) {
 +    digitalWrite(relay3,​ HIGH);
 +    delay(delay_close_1);​
 +    digitalWrite(relay3,​ LOW);
 +    delay(delay_code_2);​
 +  }
 +}
 +</​code>​
 +Photorezistorii sunt atasati catre porturile A0, A1, A2, A3 si trimit pe acestea valori semnificand intensitatea
 +luminoasa citita. Atunci cand eranul afiseaza culoarea negru (o clapa), valoarea returnata de LDR este mai mica de 700.
 +
 +O valoare mai mica de 700 rezulta in comutarea unui releu la HIGH si apoi la LOW pentru a simula atingere.
 +
 +Pe ecran, monedele atasate de relay-urile 1 si 3 o sa fie mai departe de senzori, deci au un delay inainte de a face atingerea.
 +<​note>​
 +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).
 +</​note>​
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+In final, am reusit sa fac un robot care poate diferentia intre casutele negre si cele albastre de pe ecran, si care poate 
 +simula actiunea de '​touch'​ pe casutele negre.
 </​note>​ </​note>​
 +{{:​pm:​prj2022:​avaduva:​poza_rez_1_sergiu.jpeg?​300|}}
  
 +{{:​pm:​prj2022:​avaduva:​poza_rez_2_sergiu.jpeg?​500|}}
 ===== Concluzii ===== ===== Concluzii =====
  
Line 89: Line 165:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+https://​create.arduino.cc/​projecthub/​susheel_06/​piano-tile-robot-a06ae6?​ref=part&​ref_id=8233&​offset=5622 
 + 
 +https://​www.youtube.com/​watch?​v=8hlQ0MiowN8 
 + 
 +https://​docs.arduino.cc/​resources/​datasheets/​A000066-datasheet.pdf
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/avaduva/pianoplayer.1653214409.txt.gz · Last modified: 2022/05/22 13:13 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