Este módulo zumbador piezoeléctrico Keyes KY-006 puede producir una gama de tonos de sonido dependiendo de la frecuencia de entrada.
Especificaciones:
El módulo KY-006 consiste en un emisor piezoeléctrico de sonido pasivo, que puede reproducir tonos entre 1,5 a 2,5 kHz al encenderlo y apagarlo en diferentes frecuencias usando retardos o PWM.
¦ Voltaje de funcionamiento: 1,5 ~ 15V DC
¦ Rango de generación de tonos: 1,5 ~ 2.5kHz
¦ Dimensiones: 18,5 mm x 15 mm
Diagrama de conexión:
La entrada de señal (S) se conecta al pin digital 9 en el Arduino y masa (indicado por –) a GND. El pin medio no se utiliza.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* * Módulo de emisor piezoeléctrico pasivo KY-006 */ int emisor = 2; // definir el pin digital del Arduino void setup() { pinMode(emisor, OUTPUT); // definir el pin como salida } void loop() { for (int i = 0; i < 80; i++) { // emitir un sonido digitalWrite(emisor, HIGH); // salida en ALTO delay(1); // espera 1 ms digitalWrite(emisor, LOW); // salida en BAJO delay(1); } delay(50); for (int j = 0; j < 100; j++) { // otro sonido digitalWrite(emisor, HIGH); // salida en ALTO delay(2); // espera 2 ms digitalWrite(emisor, LOW); // salida en BAJO delay(2); // espera 2 ms } delay(100); } |
Uso del piezoeléctrico con la función tone()
Descripción:
La función tone() genera una onda cuadrada de la frecuencia especificada (y un ciclo de trabajo del 50%) en un pin digital del Arduino. Se puede especificar una duración; de lo contrario, la señal continúa hasta que se realiza una llamada a la función noTone(). El pin se puede conectar a un zumbador piezoeléctrico u otro altavoz para reproducir tonos.
Solo se puede generar un tono a la vez. Si ya se está reproduciendo un tono en un pin diferente, la llamada a tone() no tendrá ningún efecto. Si el tono se reproduce en el mismo pin, la llamada establecerá una nueva frecuencia.
El uso de la función tone() interferirá con la salida PWM en los pines 3 y 11 (en placas que no sean Mega).
No es posible generar tonos inferiores a 31 Hz. Para detalles técnicos, vea las notas de Brett Hagman.
NOTA: si desea reproducir diferentes tonos en múltiples pines, debe llamar a la función noTone() en un pin antes de llamar a tone() en el siguiente pin.
Sintaxis:
¦ tone(pin, frecuencia)
¦ tone(pin, frecuencia, duración)
Parámetros:
¦ pin: el pin sobre el que generar el tono
¦ frecuencia: la frecuencia del tono en hercios – unsigned int
¦ duración: la duración del tono en milisegundos (opcional) – unsigned long
Feliz cumpleaños
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
/* * Piezo Buzzer entre GND y 9 */ int speakerPin = 9; int length = 28; // cantidad de notas char notes[] = "GGAGcB GGAGdc GGxecBA yyecdc"; int beats[] = { 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16 }; int tempo = 220; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = {'C', 'D', 'E', 'F', 'G', 'A', 'B', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'x', 'y' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956, 834, 765, 593, 468, 346, 224, 622 , 715 }; int SPEE = 5; // tocar el tono correspondiente for (int i = 0; i < 17; i++) { if (names[i] == note) { int newduration = duration/SPEE; playTone(tones[i], newduration); } } } void setup() { pinMode(speakerPin, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo); } } |
Para Elisa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 |
/* * Para Elisa */ #define parlante 9 #define tempo 0.90 void setup() { pinMode(parlante, OUTPUT); } void loop() { // play e4 delay(tempo*600); tone(parlante, 329.63, 300); delay(tempo*350); // play d4# tone(parlante, 311.13, 300); delay(tempo*350); // play e4 tone(parlante, 329.63, 300); delay(tempo*350); // play d4# tone(parlante,311.13, 300); delay(tempo*350); // play e4 tone(parlante, 329.63, 300); delay(tempo*350); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play d4 tone(parlante, 293.66,300); delay(tempo*400); // play c4 tone(parlante, 261.63,300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); // play d3 tone(parlante,146.83, 300); delay(tempo*350); //play f3 tone(parlante, 174.61, 300); delay(tempo*400); //play a3 tone(parlante, 220, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 900); delay(tempo*1000); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play a3# tone(parlante, 233.08, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 900); delay(tempo*1000); delay(tempo*300); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4# tone(parlante, 311.13, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4# tone(parlante, 311.13, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play d4 tone(parlante, 293.66, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); // play d3 tone(parlante, 146.83, 300); delay(tempo*400); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play a3 tone(parlante, 220, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 900); delay(tempo*1000); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); // play b3 tone(parlante,246.94, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play d4 tone(parlante, 293.66, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 900); delay(tempo*1000); // play g3 tone(parlante, 196, 300); delay(tempo*400); // play f4 tone(parlante, 349.23, 300); delay(tempo*400); //play e4 tone(parlante, 329.23, 300); delay(tempo*400); // play d4 tone(parlante, 293.63, 900); delay(tempo*1000); // play e3 tone(parlante,164.81, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4 tone(parlante, 293.63, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 900); delay(tempo*1000); // play d3 tone(parlante, 146.83, 300); delay(tempo*400); // play d4 tone(parlante, 293.63, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 900); delay(tempo*1000); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4# tone(parlante, 311.13, 300); delay(tempo*350); // play e4 tone(parlante, 329.63, 300); delay(tempo*350); // play d4# tone(parlante,311.13, 300); delay(tempo*350); // play e4 tone(parlante, 329.63, 300); delay(tempo*350); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play d4 tone(parlante, 293.66,300); delay(tempo*400); // play c4 tone(parlante, 261.63,300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); // play d3 tone(parlante,146.83, 300); delay(tempo*350); //play f3 tone(parlante, 174.61, 300); delay(tempo*400); //play a3 tone(parlante, 220, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 900); delay(tempo*1000); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play a3 tone(parlante, 233.08, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 900); delay(tempo*1000); delay(tempo*300); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4# tone(parlante, 311.13, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play d4# tone(parlante, 311.13, 300); delay(tempo*400); // play e4 tone(parlante, 329.63, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play d4 tone(parlante, 293.66, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); // play d3 tone(parlante, 146.83, 300); delay(tempo*400); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play a3 tone(parlante, 220, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 900); delay(tempo*1000); // play f3 tone(parlante, 174.61, 300); delay(tempo*400); // play c4 tone(parlante, 261.63, 300); delay(tempo*400); // play b3 tone(parlante, 246.94, 300); delay(tempo*400); // play a3 tone(parlante, 220, 900); delay(tempo*1000); delay(tempo*5000); } |
Canción de Star Wars
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
// * Star Wars Song Selector // * Original Composition : Star Wars // * Coded By : https://code.google.com/p/rbots/source/browse/trunk/StarterKit/Lesson5_PiezoPlayMelody/Lesson5_PiezoPlayMelody.pde // * Use BSD Clause 2 License for Distribution // * Collection by GitHub User @abhishekghosh - https://github.com/AbhishekGhosh/Arduino-Buzzer-Tone-Codes // * Program to choose between two melodies by using a potentiometer and a piezo buzzer. // TONES // // Defining the relationship between note, period & frequency. // period is in microsecond so P = 1/f * (1E6) #define c3 7634 #define d3 6803 #define e3 6061 #define f3 5714 #define g3 5102 #define a3 4545 #define b3 4049 #define c4 3816 // 261 Hz #define d4 3401 // 294 Hz #define e4 3030 // 329 Hz #define f4 2865 // 349 Hz #define g4 2551 // 392 Hz #define a4 2272 // 440 Hz #define a4s 2146 #define b4 2028 // 493 Hz #define c5 1912 // 523 Hz #define d5 1706 #define d5s 1608 #define e5 1517 // 659 Hz #define f5 1433 // 698 Hz #define g5 1276 #define a5 1136 #define a5s 1073 #define b5 1012 #define c6 955 #define R 0 // Define a special note, 'R', to represent a rest // SETUP // int speakerOut = 9; // Set up speaker on digital pin 7 int potPin = A0; // Set up potentiometer on analogue pin 0. void setup() { pinMode(speakerOut, OUTPUT); Serial.begin(9600); // Set serial out if we want debugging } //} // MELODIES and TIMING // // melody[] is an array of notes, accompanied by beats[], // which sets each note's relative length (higher #, longer note) // Melody 1: Star Wars Imperial March int melody1[] = { a4, R, a4, R, a4, R, f4, R, c5, R, a4, R, f4, R, c5, R, a4, R, e5, R, e5, R, e5, R, f5, R, c5, R, g5, R, f5, R, c5, R, a4, R}; int beats1[] = { 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 40}; // Melody 2: Star Wars Theme int melody2[] = { f4, f4, f4, a4s, f5, d5s, d5, c5, a5s, f5, d5s, d5, c5, a5s, f5, d5s, d5, d5s, c5}; int beats2[] = { 21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128 }; int MAX_COUNT = sizeof(melody1) / 2; // Melody length, for looping. long tempo = 10000; // Set overall tempo int pause = 1000; // Set length of pause between notes int rest_count = 50; // Loop variable to increase Rest length (BLETCHEROUS HACK; See NOTES) // Initialize core variables int toneM = 0; int beat = 0; long duration = 0; int potVal = 0; // PLAY TONE // // Pulse the speaker to play a tone for a particular duration void playTone() { long elapsed_time = 0; if (toneM > 0) { // if this isn't a Rest beat, while the tone has // played less long than 'duration', pulse speaker HIGH and LOW while (elapsed_time < duration) { digitalWrite(speakerOut,HIGH); delayMicroseconds(toneM / 2); // DOWN digitalWrite(speakerOut, LOW); delayMicroseconds(toneM / 2); // Keep track of how long we pulsed elapsed_time += (toneM); } } else { // Rest beat; loop times delay for (int j = 0; j < rest_count; j++) { // See NOTE on rest_count delayMicroseconds(duration); } } } // LOOP // void loop() { analogRead(potPin); //Read potentiometer value and store in potVal variable Serial.println(potVal); // Print potVal in serial monitor if (potVal < 511) { // If potVal is less than 511, play Melody1... // Set up a counter to pull from melody1[] and beats1[] for (int i=0; i<MAX_COUNT; i++) { toneM = melody1[i]; beat = beats1[i]; duration = beat * tempo; // Set up timing playTone(); // A pause between notes delayMicroseconds(pause); } } else // ... else play Melody2 for (int i=0; i<MAX_COUNT; i++) { toneM = melody2[i]; beat = beats2[i]; duration = beat * tempo; // Set up timing playTone(); // A pause between notes delayMicroseconds(pause); } } |
Brilla, brilla, pequeña estrella
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
/* * Twinkle-Twinkle Little Star */ int speakerPin = 9; int length = 15; // the number of notes //twinkle twinkle little star char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc "; // a space represents a rest int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; int tempo = 260; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { pinMode(speakerPin, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo / 2); } } |
Módulo de emisor piezoeléctrico pasivo – KY-006: Dibujo de la pieza para el editor Fritzing
Artículos relacionados:
¦ Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)
¦ Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)
¦ Módulo de Sensor Magnético por efecto Hall KY-003 (Kit de sensores Keyes 3)
¦ Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)
¦ Módulo sensor de temperatura KY-005 (Kit de sensores Keyes 5)
¦ Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)
¦ Módulo codificador rotativo KY-040 [ó KY-007] – (Kit de sensores Keyes 040/007)
Pingback: KY-003 Módulo de Sensor Magnético por efecto Hall (Kit de sensores Keyes 3) | Robots Didácticos