|
Генерация звука, звуковые библиотеки
Генерация звука, звуковые библиотеки.
(Example №10)
Звуковые сигналы часто используются, когда необходимо привлечь внимание пользователя, подтвердить, что некоторые из кнопок нажата, предупредить, что минимальные или максимальные значения достигаются, и т.д. Это может быть просто "сигнал", а может быть мелодия. Этот пример демонстрирует генерацию звука с помощью функции принадлежащий звуковой библиотеке.
/*Header******************************************************/
void Tone1() {
Sound_Play(659, 250); // Частота = 659Hz, длительность = 250ms
}
void Tone2() {
Sound_Play(698, 250); // Частота = 698Hz, длительность = 250ms
}
void Tone3() {
Sound_Play(784, 250); // Частота = 784Hz, длительность = 250ms
}
void Melody1() { // Мелодия 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() { // Тон A
Sound_Play(880, 50);
}
void ToneC() { // Тон C
Sound_Play(1046, 50);
}
void ToneE() { // Тон E
Sound_Play(1318, 50);
}
void Melody2() { // Мелодия 2
unsigned short i;
for (i = 9; i > 0; i--) {
ToneA(); ToneC(); ToneE();
}
}
void main() {
ANSEL = 0; // Все порты I/O настроены как цифровые
ANSELH = 0;
TRISB = 0xF0; // Входы RB7-RB4 настроены на вход,
// RB3 на вывод
Sound_Init(&PORTB, 3);
Sound_Play(1000, 500);
while (1) {
if (Button(&PORTB,7,1,1)) // RB7 генерирует Тон1
Tone1();
while (PORTB & 0x80) ; // Ждём нажатия кнопки
if (Button(&PORTB,6,1,1)) // RB6 генерирует Тон2
Tone2();
while (PORTB & 0x40) ; // Ждём нажатия кнопки
if (Button(&PORTB,5,1,1)) // RB5 генерирует Мелодию 2
Melody2();
while (PORTB & 0x20) ; // Ждём нажатия кнопки
if (Button(&PORTB,4,1,1)) // RB4 генерирует Мелодию 1
Melody1();
while (PORTB & 0x10) ; // Ждём нажатия кнопки
}
}
|
Для того, чтобы этот пример работал правильно, нужно поставить галочку в библиотеке Button и Sound в Library Manager до компиляции.
|
|
|