Advertisement
GuiBrust

Untitled

Nov 22nd, 2019
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. //Notas musicais
  2. #define NOTE_B0 31
  3. #define NOTE_C1 33
  4. #define NOTE_CS1 35
  5. #define NOTE_D1 37
  6. #define NOTE_DS1 39
  7. #define NOTE_E1 41
  8. #define NOTE_F1 44
  9. #define NOTE_FS1 46
  10. #define NOTE_G1 49
  11. #define NOTE_GS1 52
  12. #define NOTE_A1 55
  13. #define NOTE_AS1 58
  14. #define NOTE_B1 62
  15. #define NOTE_C2 65
  16. #define NOTE_CS2 69
  17. #define NOTE_D2 73
  18. #define NOTE_DS2 78
  19. #define NOTE_E2 82
  20. #define NOTE_F2 87
  21. #define NOTE_FS2 93
  22. #define NOTE_G2 98
  23. #define NOTE_GS2 104
  24. #define NOTE_A2 110
  25. #define NOTE_AS2 117
  26. #define NOTE_B2 123
  27. #define NOTE_C3 131
  28. #define NOTE_CS3 139
  29. #define NOTE_D3 147
  30. #define NOTE_DS3 156
  31. #define NOTE_E3 165
  32. #define NOTE_F3 175
  33. #define NOTE_FS3 185
  34. #define NOTE_G3 196
  35. #define NOTE_GS3 208
  36. #define NOTE_A3 220
  37. #define NOTE_AS3 233
  38. #define NOTE_B3 247
  39. #define NOTE_C4 262
  40. #define NOTE_CS4 277
  41. #define NOTE_D4 294
  42. #define NOTE_DS4 311
  43. #define NOTE_E4 330
  44. #define NOTE_F4 349
  45. #define NOTE_FS4 370
  46. #define NOTE_G4 392
  47. #define NOTE_GS4 415
  48. #define NOTE_A4 440
  49. #define NOTE_AS4 466
  50. #define NOTE_B4 494
  51. #define NOTE_C5 523
  52. #define NOTE_CS5 554
  53. #define NOTE_D5 587
  54. #define NOTE_DS5 622
  55. #define NOTE_E5 659
  56. #define NOTE_F5 698
  57. #define NOTE_FS5 740
  58. #define NOTE_G5 784
  59. #define NOTE_GS5 831
  60. #define NOTE_A5 880
  61. #define NOTE_AS5 932
  62. #define NOTE_B5 988
  63. #define NOTE_C6 1047
  64. #define NOTE_CS6 1109
  65. #define NOTE_D6 1175
  66. #define NOTE_DS6 1245
  67. #define NOTE_E6 1319
  68. #define NOTE_F6 1397
  69. #define NOTE_FS6 1480
  70. #define NOTE_G6 1568
  71. #define NOTE_GS6 1661
  72. #define NOTE_A6 1760
  73. #define NOTE_AS6 1865
  74. #define NOTE_B6 1976
  75. #define NOTE_C7 2093
  76. #define NOTE_CS7 2217
  77. #define NOTE_D7 2349
  78. #define NOTE_DS7 2489
  79. #define NOTE_E7 2637
  80. #define NOTE_F7 2794
  81. #define NOTE_FS7 2960
  82. #define NOTE_G7 3136
  83. #define NOTE_GS7 3322
  84. #define NOTE_A7 3520
  85. #define NOTE_AS7 3729
  86. #define NOTE_B7 3951
  87. #define NOTE_C8 4186
  88. #define NOTE_CS8 4435
  89. #define NOTE_D8 4699
  90. #define NOTE_DS8 4978
  91.  
  92.  
  93. const int pinBuzzer = 9;
  94. int compasso = 900;
  95.  
  96. // Jingle Bells - Musica 1
  97.  
  98. int melody[] = {
  99. NOTE_E5, NOTE_E5, NOTE_E5,
  100. NOTE_E5, NOTE_E5, NOTE_E5,
  101. NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5,
  102. NOTE_E5,
  103. NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,
  104. NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,
  105. NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5,
  106. NOTE_D5, NOTE_G5
  107. };
  108.  
  109. int tempo[] = {
  110. 8, 8, 4,
  111. 8, 8, 4,
  112. 8, 8, 8, 8,
  113. 2,
  114. 8, 8, 8, 8,
  115. 8, 8, 8, 16, 16,
  116. 8, 8, 8, 8,
  117. 4, 4
  118. };
  119.  
  120. // We wish you a merry Christmas - Musica 2
  121.  
  122. int wish_melody[] = {
  123. NOTE_B3,
  124. NOTE_F4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4,
  125. NOTE_D4, NOTE_D4, NOTE_D4,
  126. NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4,
  127. NOTE_E4, NOTE_E4, NOTE_E4,
  128. NOTE_A4, NOTE_A4, NOTE_B4, NOTE_A4, NOTE_G4,
  129. NOTE_F4, NOTE_D4, NOTE_B3, NOTE_B3,
  130. NOTE_D4, NOTE_G4, NOTE_E4,
  131. NOTE_F4
  132. };
  133.  
  134. int wish_tempo[] = {
  135. 4,
  136. 4, 8, 8, 8, 8,
  137. 4, 4, 4,
  138. 4, 8, 8, 8, 8,
  139. 4, 4, 4,
  140. 4, 8, 8, 8, 8,
  141. 4, 4, 8, 8,
  142. 4, 4, 4,
  143. 2
  144. };
  145.  
  146. // Santa Claus is coming to town - Musica 3
  147.  
  148. int santa_melody[] = {
  149. NOTE_G4,
  150. NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4,
  151. NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, NOTE_C5,
  152. NOTE_E4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4,
  153. NOTE_A4, NOTE_G4, NOTE_F4, NOTE_F4,
  154. NOTE_E4, NOTE_G4, NOTE_C4, NOTE_E4,
  155. NOTE_D4, NOTE_F4, NOTE_B3,
  156. NOTE_C4
  157. };
  158.  
  159. int santa_tempo[] = {
  160. 8,
  161. 8, 8, 4, 4, 4,
  162. 8, 8, 4, 4, 4,
  163. 8, 8, 4, 4, 4,
  164. 8, 8, 4, 2,
  165. 4, 4, 4, 4,
  166. 4, 2, 4,
  167. 1
  168. };
  169.  
  170. int bot_1 = 0;
  171. int bot_2 = 0;
  172. int bot_3 = 0;
  173.  
  174. int som = 0;
  175.  
  176. void setup(void) {
  177. pinMode(pinBuzzer, OUTPUT); // Buzzer
  178. pinMode(13, OUTPUT); // Led indicador quando toca a nota
  179. pinMode(2, INPUT_PULLUP); // push buttom 1
  180. pinMode(3, INPUT_PULLUP); // push buttom 2
  181. pinMode(4, INPUT_PULLUP); // push buttom 3
  182.  
  183. Serial.begin(9600);
  184. }
  185.  
  186. void loop() {
  187. if( digitalRead(2) == LOW){
  188. sing(2);
  189. }
  190. if( digitalRead(3) == LOW){
  191. sing(3);
  192. }
  193. if( digitalRead(4) == LOW){
  194. sing(4);
  195. }
  196. }
  197.  
  198. void sing(int s) {
  199. // intera as notas da melodia:
  200. som = s;
  201. if (som == 3) {
  202. Serial.println(" 'We wish you a Merry Christmas'");
  203. int size = sizeof(wish_melody) / sizeof(int);
  204. for (int estaNota = 0; estaNota < size; estaNota++) {
  205.  
  206. // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
  207. //ex. semínima = compasso / 4
  208. int notaTempo = compasso / wish_tempo[estaNota];
  209.  
  210. buzz(pinBuzzer, wish_melody[estaNota], notaTempo);
  211.  
  212. // para distinguir melhor as notas, defimos um tempo mínimo entre ela
  213. int pausaNotas = notaTempo * 1.30;
  214. delay(pausaNotas);
  215.  
  216. // interrompe a melodia:
  217. buzz(pinBuzzer, 0, notaTempo);
  218. }
  219.  
  220. } else if (som == 2) {
  221. Serial.println(" 'Santa Claus is coming to town'");
  222. int size = sizeof(santa_melody) / sizeof(int);
  223. for (int estaNota = 0; estaNota < size; estaNota++) {
  224.  
  225. // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
  226. //ex. semínima = compasso / 4
  227. int notaTempo = compasso / santa_tempo[estaNota];
  228.  
  229. buzz(pinBuzzer, santa_melody[estaNota], notaTempo);
  230.  
  231. // para distinguir melhor as notas, defimos um tempo mínimo entre ela
  232. int pausaNotas = notaTempo * 1.30;
  233. delay(pausaNotas);
  234.  
  235. // interrompe a melodia:
  236. buzz(pinBuzzer, 0, notaTempo);
  237.  
  238. }
  239. } else {
  240.  
  241. Serial.println(" 'Jingle Bells'");
  242. int size = sizeof(melody) / sizeof(int);
  243. for (int estaNota = 0; estaNota < size; estaNota++) {
  244.  
  245. // Tomamos 1 segundo divido pelo tipo da nota para calcular a duração
  246. //ex. semínima = compasso / 4
  247. int notaTempo = compasso / tempo[estaNota];
  248.  
  249. buzz(pinBuzzer, melody[estaNota],notaTempo);
  250.  
  251. // para distinguir melhor as notas, defimos um tempo mínimo entre ela
  252. int pausaNotas = notaTempo * 1.30;
  253. delay(pausaNotas);
  254.  
  255. // interrompe a melodia:
  256. buzz(pinBuzzer, 0, notaTempo);
  257. }
  258. }
  259. }
  260.  
  261. void buzz(int pin , int frequencia, float dur) {
  262.  
  263. digitalWrite(13, HIGH);
  264.  
  265. int delayValor = 1000000 / frequencia / 2; // calcula o delay entre transições
  266.  
  267.  
  268. int numCiclos = frequencia * dur / 1000; // calcula o número de ciclos adequado
  269.  
  270.  
  271. for (int i = 0; i < numCiclos; i++) { // para definir a duração da nota
  272. digitalWrite(pin, HIGH); // buzzer em HIGH para emprurrar o diafragama do buzzer
  273. delayMicroseconds(delayValor); // espera o valor calculado do delay
  274. digitalWrite(pin, LOW); // buzzer em LOW para puxar o diafragama do buzzer
  275. delayMicroseconds(delayValor); // espera o valor calculado do delay
  276. }
  277.  
  278. digitalWrite(13, LOW);
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement