16. Arduino + osciloskop + bzučiak (active vs passive)
Cieľ cvičenia
Žiak sa naučí:
- generovať jednoduchý signál pomocou Arduino Uno,
- zobraziť signál na osciloskope (amplitúda, perióda, frekvencia),
- pochopiť rozdiel medzi active a passive bzučiakom,
- prepojiť elektrický signál so svetlom (LED) a zvukom (tón).
Pomôcky (na 1 pracovisko)
- Arduino Uno (žiaci)
- PC s Arduino IDE
- breadboard, vodiče
- LED dióda + rezistor 220–330 Ω
- Keyestudio Active Buzzer Module
- Keyestudio Passive Buzzer Module
- osciloskop + sonda (1× alebo 10×)
Bezpečnosť a pravidlá merania
- Zem osciloskopu (krokosvorka na sonde) pripájaj iba na GND Arduino.
- Neprepájaj žiadny výstup Arduino priamo na „veľký“ pasívny reproduktor. (Tu používame iba moduly z kitu.)
- Ak bzučiak nehrá: skontroluj VCC, GND, signálový pin a správny pin v programe.
Zapojenie (spoločné pre obe časti)
Použijeme výstupný pin D8.
LED
- D8 → rezistor → anóda LED
- katóda LED → GND
Osciloskop
- hrot sondy → D8
- krokosvorka (GND) → GND Arduino
Bzučiak modul (podľa typu)
Moduly zvyčajne majú piny: S / SIG, VCC, GND
- S (SIG) → D8
- VCC → 5V
- GND → GND
Pozn.: Niektoré moduly majú označenie I/O namiesto S. Zapojenie je rovnaké.
ČASŤ A: Active buzzer module (zapnúť/vypnúť pípnutie)
Čo je active buzzer?
Active buzzer má v sebe oscilátor. Arduino len prepína napájanie/signál:
- HIGH = pípaj
- LOW = ticho
Tón sa nemení (alebo len minimálne).
Program A – pípnutie 1× za sekundu
const int OUT = 8;
void setup() {
pinMode(OUT, OUTPUT);
}
void loop() {
digitalWrite(OUT, HIGH);
delay(500);
digitalWrite(OUT, LOW);
delay(500);
}
Čo pozorujeme?
- LED: bliká 1 Hz
- osciloskop: „obdĺžnik“ s periódou ~1 s
- active buzzer: pravidelné pípnutie (tón je stále rovnaký)
Úloha A1
Zmeň delay(500) na delay(100) a delay(50).
Otázky:
- Ako sa zmení blikanie LED?
- Ako sa zmení rytmus pípania?
- Akú periódu zmeriaš na osciloskope?
ČASŤ B: Passive buzzer module (Arduino generuje frekvenciu – tón sa mení)
Čo je passive buzzer?
Passive buzzer je „malý reproduktor“ – potrebuje signál s frekvenciou.
Tu je ideálne použiť funkciu tone().
Program B – zmena tónu (250 Hz → 500 Hz → 1000 Hz)
const int OUT = 8;
void setup() {
// nič netreba
}
void loop() {
tone(OUT, 250); // nízky tón
delay(1000);
tone(OUT, 500); // stredný tón
delay(1000);
tone(OUT, 1000); // vysoký tón
delay(1000);
noTone(OUT);
delay(500);
}
Čo pozorujeme?
- LED: pri
tone()môže pôsobiť ako „stále svieti“ (bliká príliš rýchlo pre oko) - osciloskop: rýchly obdĺžnikový signál
- passive buzzer: jasne počuteľná zmena výšky tónu
Úloha B1 – meranie frekvencie
Zmeraj na osciloskope frekvenciu pre:
- 250 Hz
- 500 Hz
- 1000 Hz
Zapíš:
- zobrazenú frekvenciu (Hz)
- periódu (ms)
- vzťah: f = 1 / T
Úloha B2 – „siréna“
Uprav program tak, aby tón plynule „stúpal a klesal“:
const int OUT = 8;
void setup() {}
void loop() {
for (int f = 200; f <= 1200; f += 20) {
tone(OUT, f);
delay(20);
}
for (int f = 1200; f >= 200; f -= 20) {
tone(OUT, f);
delay(20);
}
}
Otázky:
- Kde na osciloskope vidíš, že frekvencia rastie?
- Prečo LED vyzerá takmer stále rozsvietená?
Porovnanie (záver)
| Modul | Čo robí Arduino | Čo počujem | Čo vidím na osciloskope |
|---|---|---|---|
| Active buzzer | iba HIGH/LOW (zapnúť/vypnúť) | pípnutie s pevným tónom | pomalé prepínanie úrovní |
| Passive buzzer | generuje frekvenciu (tone) | rôzne tóny | rýchly obdĺžnik s merateľnou frekvenciou |
Kontrolné otázky
- Čo je perióda a ako súvisí s frekvenciou?
- Prečo pri 1000 Hz LED neviditeľne bliká, ale osciloskop to ukáže?
- Prečo active buzzer nepotrebuje
tone()?
Bonus (pre rýchle skupiny)
- Nastav
tone(OUT, 440)– to je približne tón A4 (Komorné A). - Skús spraviť 3-tónový „alarm“ (napr. 440 Hz, 660 Hz, 880 Hz).


