Generación de sonido, librería de sonido...

Generación de sonido, librería de sonido...

Las señales de audio se utilizan con frecuencia cuando se necesita llamar la atención de usuario, confirmar que alguno de los botones se ha pulsado, avisar que se ha llegado hasta los valores mínimos o máximos etc. Pueden ser una simple señal de pitido así como melodías de una duración más larga o más corta. En este ejemplo se muestra la generación de sonido por medio de funciones que pertenecen a la librería Sound.
EJEMPLO 13
Además de estas funciones, la función Button que pertenece a la misma librería se utiliza para probar los botones de presión.
/*Cabecera******************************************************/

void Tone1() {
  Sound_Play(659, 250); // Frecuencia = 659Hz, duración = 250ms
}

void Tone2() {
  Sound_Play(698, 250); // Frecuencia = 698Hz, duración = 250ms
}

void Tone3() {
  Sound_Play(784, 250); // Frecuencia = 784Hz, duración = 250ms
}

void Melody1() { // Componer una melodía divertida 1
  Tone1(); Tone2(); Tone3(); Tone3();
  Tone1(); Tone2(); Tone3(); Tone3();
  Tone1(); Tone2(); Tone3();
  Tone1(); Tone2(); Tone3(); Tone3();
  Tone1(); Tone2(); Tone3();
  Tone3(); Tone3(); Tone2(); Tone2(); Tone1();
}

void ToneA() { // Tono A
  Sound_Play( 880, 50);
}

void ToneC() { // Tono C
  Sound_Play(1046, 50);
}

void ToneE() { // Tono E
  Sound_Play(1318, 50);
}

void Melody2() { // Componer una melodía divertida 2
  unsigned short i;
  
  for (i = 9; i > 0; i--) {
    ToneA(); ToneC(); ToneE();
  }
}

void main() {
  ANSEL = 0;                   // Todos los pines de E/S son digitales
  ANSELH = 0;
  TRISB = 0xF0;                // Pines RB7-RB4 se configuran como entradas
  
  // RB3 se configura como salida
  Sound_Init(&PORTB, 3);
  Sound_Play(1000, 500);
  
  while (1) {
    if (Button(&PORTB,7,1,1)) // RB7 genera Tono1
    Tone1();
    while (PORTB & 0x80) ;    // Esperar que se suelte el botón
    if (Button(&PORTB,6,1,1)) // RB6 genera Tono2
    Tone2();
    while (PORTB & 0x40) ;    // Esperar que se suelte el botón
    if (Button(&PORTB,5,1,1)) // RB5 genera melodía 2
    Melody2();
    while (PORTB & 0x20) ;    // Esperar que se suelte el botón
    if (Button(&PORTB,4,1,1)) // RB4 genera melodía 1
    Melody1();
    while (PORTB & 0x10) ;    // Esperar que se suelte el botón
  }
}
Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes librerías en la ventana Library Manager antes de compilar el programa:
  • Button
  • Sound

No response to “Generación de sonido, librería de sonido...”