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:23]
sergiu.spiridon [Software 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 73: Line 79:
 int relay3 = 13; int relay3 = 13;
  
-int photo0Read+int delay_close_1 = 50
-int photo1Read+int delay_close_2 = 50
-int photo2Read; + 
-int photo3Read;+int delay_far = 100;
  
 void setup() { void setup() {
-  Serial.begin(255);+  ​// put your setup code here, to run once: 
 +  ​Serial.begin(9600);
   pinMode(photo0,​ INPUT);   pinMode(photo0,​ INPUT);
   pinMode(photo1,​ INPUT);   pinMode(photo1,​ INPUT);
Line 89: Line 96:
   pinMode(relay2,​ OUTPUT);   pinMode(relay2,​ OUTPUT);
   pinMode(relay3,​ OUTPUT);   pinMode(relay3,​ OUTPUT);
 +
 +  ​
 } }
- 
  
 void loop() { void loop() {
   ​   ​
-  ​photo0Read = analogRead(photo0)+  ​if (analogRead(photo0) < 700) { 
-  photo1Read = analogRead(photo1);​ +    ​delay(delay_far);
-  photo2Read = analogRead(photo2);​ +
-  photo3Read = analogRead(photo3);​ +
-   +
-  if (photo0Read ​817) { +
-    ​Serial.println("​A0"​);​ +
-    digitalWrite(relay0,​ LOW); +
-  }else{ +
-    Serial.println("not A0");+
     digitalWrite(relay0,​ HIGH);     digitalWrite(relay0,​ HIGH);
-  } +    delay(delay_close_1);​ 
-   +    ​digitalWrite(relay0,​ LOW); 
-  if (photo1Read ​817) { +    delay(delay_close_2);​ 
-    ​Serial.println("​A1"​);+  ​} else if (analogRead(photo1) ​700) { 
 +    ​digitalWrite(relay1,​ HIGH); 
 +    delay(delay_close_1);
     digitalWrite(relay1,​ LOW);     digitalWrite(relay1,​ LOW);
-  }else{ +    delay(delay_close_2); 
-    Serial.println("not A1"​);​ +  } else if (analogRead(photo2< 700) { 
-    digitalWrite(relay1,​ HIGH); +    ​delay(delay_far);
-  } +
-   +
-  ​if (photo2Read < 817) { +
-    Serial.println("​A2"​)+
-    digitalWrite(relay2,​ LOW)+
-  }else+
-    ​Serial.println("not A2");+
     digitalWrite(relay2,​ HIGH);     digitalWrite(relay2,​ HIGH);
-  } +    delay(delay_close_1); 
-   +    ​digitalWrite(relay2, LOW); 
-  if (photo3Read < 817{ +    ​delay(delay_close_2); 
-    ​Serial.println("​A3"​); +  } else if (analogRead(photo3< 700) {
-    ​digitalWrite(relay3, LOW); +
-  }else+
-    Serial.println("not A3");+
     digitalWrite(relay3,​ HIGH);     digitalWrite(relay3,​ HIGH);
 +    delay(delay_close_1);​
 +    digitalWrite(relay3,​ LOW);
 +    delay(delay_code_2);​
   }   }
-  ​ 
 } }
 </​code>​ </​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>​ <​note>​
 In cod trebuie adaugate delayuri custom pentru a lua in considerare distanta dintre LDR-uri (punctul de citire) si In cod trebuie adaugate delayuri custom pentru a lua in considerare distanta dintre LDR-uri (punctul de citire) si
Line 140: Line 140:
  
 <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 162: 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.1653215021.txt.gz · Last modified: 2022/05/22 13:23 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