This shows you the differences between two versions of the page.
|
pm:prj2022:avaduva:pianoplayer [2022/05/22 13:26] sergiu.spiridon [Descriere generală] |
pm:prj2022:avaduva:pianoplayer [2022/05/27 22:28] (current) sergiu.spiridon [Bibliografie/Resurse] |
||
|---|---|---|---|
| Line 49: | 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 74: | 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 90: | 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 141: | 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 163: | 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> | ||