Differences

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

Link to this comparison view

pm:prj2022:arosca:cutie-muzicala [2022/05/27 19:11]
idumitrescu [Software Design]
pm:prj2022:arosca:cutie-muzicala [2022/05/27 22:19] (current)
idumitrescu [Rezultate Obţinute]
Line 43: Line 43:
 functiei de redare. functiei de redare.
   * play_piece() - In aceasta functie, se parcurge vectorul de note muzicale aferent melodiei si este redata fiecare dintre acestea cu durata corespunzatoare din vectorul de durate. Inainte de fiecare redare, se verifica daca nu cumva valoarea senzorului s-a schimbat (daca da, intreg sistemul se intrerupe) sau daca s-a apasat vreun buton ce implica schmbarea melodiei. Tot aici,pe fiecare nota, servomotorul isi schimba pozitia cate putin, acesta realizand treptat o miscare 0-180 grade si inapoi.   * play_piece() - In aceasta functie, se parcurge vectorul de note muzicale aferent melodiei si este redata fiecare dintre acestea cu durata corespunzatoare din vectorul de durate. Inainte de fiecare redare, se verifica daca nu cumva valoarea senzorului s-a schimbat (daca da, intreg sistemul se intrerupe) sau daca s-a apasat vreun buton ce implica schmbarea melodiei. Tot aici,pe fiecare nota, servomotorul isi schimba pozitia cate putin, acesta realizand treptat o miscare 0-180 grade si inapoi.
 +<​code>​
 +void play_piece(int pin, int *melody, int *duration, int length) {
 +  for (int i = 0; i < length; ++i) {
 +    int Sensordata = digitalRead(LDRSENSOR_PIN);​
 +    if(Sensordata == 1) {
 +      break;
 +    }
 +    char key;
 +    while(key = kpd.getKey()) {
 +      change_song(key);​
 +    }
 +    ​
 +    Servo1.write(posServo);​
 +    if(posServo == 180) {
 +      direction = -1;
 +    } else if(posServo == 0) {
 +      direction = 1;
 +    }
 +    ​
 +    if(direction == 1) {
 +      posServo+=10;​
 +    } else {
 +      posServo-=10;​
 +    }
 +    tone(pin, melody[i], duration[i]);​
 +    delay(duration[i]); ​  
 +  }  ​
 +}
 +</​code>​
   * change_song() - reda o alta melodie in functie de butonul apasat dintre cele 16   * change_song() - reda o alta melodie in functie de butonul apasat dintre cele 16
   * setup() - setez pinii folositi ca fiind de input/​output   * setup() - setez pinii folositi ca fiind de input/​output
   * loop() - citesc valorea de la senzorul de lumina si, daca arata ca este capacul inchis (intensitatea luminii este scazuta), atunci intregul sistem se opreste. Daca nu, atunci apeleaza functia care reda melodia si actioneaza servomotorul.   * loop() - citesc valorea de la senzorul de lumina si, daca arata ca este capacul inchis (intensitatea luminii este scazuta), atunci intregul sistem se opreste. Daca nu, atunci apeleaza functia care reda melodia si actioneaza servomotorul.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
- 
-===Galerie foto=== 
- 
 ===Demo=== ===Demo===
 +https://​youtu.be/​iaVMPVLegz0
 +===Galerie foto===
 +{{ :​pm:​prj2022:​arosca:​cutiemuzicala4.jpeg?​800 |}}
 +{{ :​pm:​prj2022:​arosca:​cutiemuzicala1.jpeg?​800 |}}
 +{{ :​pm:​prj2022:​arosca:​cutiemuzicala2.jpeg?​800 |}}
 +{{ :​pm:​prj2022:​arosca:​cutiemuzicala3.jpeg?​800 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
pm/prj2022/arosca/cutie-muzicala.1653667888.txt.gz · Last modified: 2022/05/27 19:11 by idumitrescu
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