Advertisement
learnelectronics

Sound trigger/play tune

Aug 28th, 2023
1,809
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /****************************************
  2.  *                                      *
  3.  *      Sound Trigger/Play Tune         *
  4.  *                                      *
  5.  *      Learnelectronics (C)2023        *
  6.  *                                      *
  7.  *                                      *
  8.  ****************************************/
  9.  
  10.  
  11. // Define the digital pin for input and output
  12. const int inputPin = 3;
  13. const int outputPin = 6;
  14.  
  15. // Define the notes for the Imperial March melody
  16. #define NOTE_B0 31
  17. #define NOTE_C1 33
  18. #define NOTE_B0 31
  19. #define NOTE_C1 33
  20. #define NOTE_D1 37
  21. #define NOTE_E1 41
  22. #define NOTE_F1 44
  23. #define NOTE_G1 49
  24. #define NOTE_A1 55
  25. #define NOTE_B1 62
  26. #define NOTE_C2 65
  27. #define NOTE_D2 73
  28. #define NOTE_E2 82
  29. #define NOTE_F2 87
  30. #define NOTE_G2 98
  31. #define NOTE_A2 110
  32. #define NOTE_B2 123
  33. #define NOTE_C3 131
  34. #define NOTE_D3 147
  35. #define NOTE_E3 165
  36. #define NOTE_F3 175
  37. #define NOTE_G3 196
  38. #define NOTE_A3 220
  39. #define NOTE_B3 247
  40. #define NOTE_C4 262
  41. #define NOTE_D4 294
  42. #define NOTE_E4 330
  43. #define NOTE_F4 349
  44. #define NOTE_G4 392
  45. #define NOTE_A4 440
  46. #define NOTE_B4 494
  47. #define NOTE_C5 523
  48. #define NOTE_D5 587
  49. #define NOTE_E5 659
  50. #define NOTE_F5 698
  51. #define NOTE_G5 784
  52. #define NOTE_A5 880
  53. #define NOTE_B5 988
  54. #define NOTE_C6 1047
  55. #define NOTE_D6 1175
  56. #define NOTE_E6 1319
  57. #define NOTE_F6 1397
  58. #define NOTE_G6 1568
  59. #define NOTE_A6 1760
  60. #define NOTE_B6 1976
  61. #define NOTE_C7 2093
  62. #define NOTE_D7 2349
  63. #define NOTE_E7 2637
  64. #define NOTE_F7 2794
  65. #define NOTE_G7 3136
  66. #define NOTE_A7 3520
  67. #define NOTE_B7 3951
  68. #define NOTE_C8 4186
  69. #define NOTE_D8 4699
  70. #define NOTE_REST 100
  71.  
  72.  
  73. int imperialMarch[] = {
  74.   // Star Wars Imperial March
  75.   NOTE_G4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_A4, NOTE_A4,
  76.   NOTE_G4, NOTE_E4, NOTE_A4, NOTE_A4, NOTE_G5, NOTE_G4,
  77.   NOTE_E5, NOTE_D5, NOTE_D5, NOTE_C5, NOTE_C5,
  78.   NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_G4,
  79.   NOTE_A4, NOTE_C5, NOTE_E5, NOTE_G5, NOTE_G4, NOTE_E4, NOTE_A4, NOTE_A4,
  80.   NOTE_G4, NOTE_E4, NOTE_A4, NOTE_A4, NOTE_G5, NOTE_G4,
  81.   NOTE_E5, NOTE_D5, NOTE_D5, NOTE_C5, NOTE_C5,
  82.   NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_G4
  83. };
  84.  
  85. // Define the note durations
  86. int noteDurations[] = {
  87.   4, 4, 4, 4, 4, 4,
  88.   4, 4, 4, 4, 4, 4,
  89.   4, 8, 8, 4, 4,
  90.   4, 8, 8, 4, 4,
  91.   4, 4, 4, 4, 4, 4, 4, 4,
  92.   4, 4, 4, 4, 4, 4,
  93.   4, 8, 8, 4, 4,
  94.   4, 8, 8, 4, 4
  95. };
  96.  
  97. void setup() {
  98.   // Set the input and output pins
  99.   pinMode(inputPin, INPUT);
  100.   pinMode(outputPin, OUTPUT);
  101.   digitalWrite(outputPin, LOW); // Ensure the output is initially off
  102. }
  103.  
  104. void loop() {
  105.   // Wait for a low signal on digital pin 3
  106.   while (digitalRead(inputPin) == HIGH) {
  107.     delay(10); // Check the input pin every 10 milliseconds
  108.   }
  109.  
  110.   // If a low signal is detected, play the Imperial March
  111.   playImperialMarch();
  112. }
  113.  
  114. void playImperialMarch() {
  115.   // Iterate through the Imperial March melody and play each note
  116.   for (int i = 0; i < sizeof(imperialMarch) / sizeof(int); i++) {
  117.     int noteDuration = 1000 / noteDurations[i];
  118.     tone(outputPin, imperialMarch[i], noteDuration);
  119.     int pauseBetweenNotes = noteDuration * 1.30; // Add a little extra time for spacing between notes
  120.     delay(pauseBetweenNotes);
  121.     noTone(outputPin);
  122.   }
  123. }
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement