Такам, точно така. Значи това си е пиезоговорителче (писукче, buzzer-че, пищялка, абе там както и да е - издава звук). За да можете да го управлявате се оказа, че просто трябва да му давате, както tommyboy каза, правоъгълни импулси с определена честота.
400 Hz звук, означава да има 400 изменения в секунда. Значи трябва да подадеме 400 импулса. За да ги подадеме толкова импулси, трябва да правиме два пъти повече промени, за което ме подсети datamatrix. Тоест, трябва да имаме 800 изменения в секунда за 400 Hz звук. Дотук всичко е добре, а ето малко C код за подкарване на buzzer:
counter=250;
while (counter)
{
output_high(PIN_B1);
delay=5000;
delay_us(delay);
output_low(PIN_B1);
counter--;
}
Програмата работи за 4 MHz PIC 16F84A. delay_us ще забави с x ултрасекунди. Всъщност, логиката е следната - за една секунда имаме 4 милиона изменения (4Mhz). Колко трябва да ни е забавянето, ако искаме 800 изменения. Ами 4 000 000 / 800, и ни се получава 5000. Нагласяме delay_us(5000) и сме напълно готови - имаме 800 изменения в секунда, а всъщност 400 Hz звук.
Честотата на звука е добре, но силата му? Последователно на buzzer-а, сме свързали някакъв резистор (според каталога на елемента). Според съпротивлението протича даден ток x. Колкото е по-голям този ток, толкова по-силен звук имаме. Най-хубаво е това да се проследи с потенциометър.
Ами общо взето това е. Имах някакви проблеми с пиезоговорителя, затова реших, че може да е от полза и да улесни тези, които тепърва ще се занимават с такъв елемент.