Hang több hangszórón

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.