Hangszekvenciák lejátszása több hangszórón a tone() paranccsal.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa bemutatja, hogyan használható a tone() parancs különböző hangok lejátszására több kimeneten.
A tone() parancs úgy működik, hogy átveszi az Atmega egyik belső időzítőjét, beállítja a kívánt frekvenciára, és az időzítő segítségével pulzál egy kimeneti kivezetést. Mivel csak egy időzítőt használ, egyszerre csak egy hangot játszhat le. Lejátszhat azonban hangjegyeket különböző kivezetéseken, egymás után. Ehhez ki kell kapcsolnia az időzítőt az egyik kivezetésnél, mielőtt a következőre lépne.
Köszönjük Greg Borensteinnek, hogy tisztázta ezt.
Hardver szükséglet
Arduino kártya
3 8 ohm-os hangszóró
3 100 ohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör

Vázlat

A kód
Az alábbi vázlat minden egyes hangszórón sorban lejátsz egy hangot, előzőleg az előző hangszórót kikapcsolva. Vegye figyelembe, hogy az egyes hangok időtartama megegyezik az azt követő késleltetéssel.
Íme a fő vázlat:
/*
Multiple tone player
Több hangot játszik le egymás után több kivezetésen
Az áramkör:
- három 8 ohmos hangszóró a 6-os, 7-es és 8-as digitális kivezetésen
created 8 Mar 2010
by Tom Igoe
based on a snippet from Greg Borenstein
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/digital/toneMultiple
*/
void setup() {
}
void loop() {
// a 8-as kivezetés hangjelzés funkciójának kikapcsolása:
noTone(8);
// játsszon egy hangot a 6-os kivezetésen 200 ms-ig:
tone(6, 440, 200);
delay(200);
// a 6-os kivezetés hangjelzés funkciójának kikapcsolása:
noTone(6);
// játsszon egy hangot a 7-es kivezetésen 500 ms-ig:
tone(7, 494, 500);
delay(500);
// a 7-es kivezetés hangjelzés funkciójának kikapcsolása:
noTone(7);
// játsszon egy hangot a 8-as kivezetésen 300 ms-ig:
tone(8, 523, 300);
delay(300);
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.