This shows you the differences between two versions of the page.
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> | ||