SHARE
TWEET

Untitled

GuiBrust Nov 22nd, 2019 79 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top