Pasivny bzuciak - manual

Zo stránky 3D liga wiki
Verzia z 13:00, 26. júl 2026, ktorú vytvoril Sebastian (diskusia | príspevky) (Bzučiak (Buzzer))
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Prejsť na navigáciu Prejsť na vyhľadávanie

Bzučiak (Buzzer)

Späť k zoznamu

Bzučiak je jednoduchý reproduktor. Reproduktory vydávajú zvuk tak, že rýchlo rozkmitajú tenkú fóliu vo vnútri. Toto kmitanie stláča a rozťahuje vzduch okolo – a práve tieto tlakové vlny vnímame ako zvuk.

Fóliu rozkmitáme malým elektromagnetom. Aby sa elektromagnet zapol, potrebuje elektrický prúd, ktorý mu dodá mikrokontrolér RP2350.

Jeden kmit dosiahneme logickým zapnutím a následným vypnutím pinu. Zvuk je v skutočnosti niekoľko stoviek až tisíc takýchto kmitov za sekundu – čiže zapínanie a vypínanie musí prebiehať každých niekoľko mikrosekúnd. Čím rýchlejšie kmitáme, tým vyšší tón vzniká.


Zapojenie

Kábel Pin na RP2350-Zero
Čierny GND
Červený GP4

Vyskúšaj toto: Skopíruj kód nižšie, doplň funkciu playNote() podľa vysvetlenia vyššie a nahraj ho do mikrokontroléra. Sleduj sériový monitor.


Kód

Nasledujúci program prechádza rozsahom tónov od 500 Hz do 2500 Hz. Funkcia playNote() je zatiaľ prázdna – to je tvoja úloha ju doplniť!

const int BUZZER = 4;

void setup() {
  pinMode(BUZZER, OUTPUT);
  Serial.begin(9600);
}
void playNote(int note)
{
  int halfPeriod = 500000 / note;

  for (int i = 0; i < 10; i++) {
    digitalWrite(BUZZER, HIGH);   
    delayMicroseconds(halfPeriod); 
    digitalWrite(BUZZER, LOW);    
    delayMicroseconds(halfPeriod); 
  }
}

void loop() {
  for (int i = 500; i < 2500; i++) {
    playNote(i);
    Serial.print("Hrám notu: ");
    Serial.println(i);
  }
}


Princíp

Kľúčom je funkcia playNote(). Zvuk vzniká pravidelným striedaním HIGH a LOW na pine bzučiaka:

Pojem Vysvetlenie
Frekvencia Počet kmitov za sekundu, udáva sa v Hz. Vyššia frekvencia = vyšší tón.
Perióda Čas jedného celého kmitu (zapnutie + vypnutie). Perióda = 1 000 000 / frekvencia µs.
Polovica periódy Čas, ktorý pin strávi v stave HIGH (alebo LOW). Vypočítame ju ako 500 000 / frekvencia.
delayMicroseconds() Rovnaké ako delay(), ale čaká v mikrosekundách namiesto milisekúnd.

Napríklad pre tón 1000 Hz:

  • Perióda = 1 000 000 / 1000 = 1000 µs
  • Polovica periódy = 500 µs
  • Pin bude HIGH 500 µs, potom LOW 500 µs – a to 10-krát za sebou


Čo sme sa naučili?

  • Bzučiak generuje zvuk rýchlym striedaním HIGH/LOW – čím rýchlejšie, tým vyšší tón.
  • Funkcia delayMicroseconds() umožňuje pracovať s časovými intervalmi v mikrosekundách.
  • Kombináciou viacerých komponentov (bzučiak + LED) vieme simulovať reálne zariadenia.