Egy hangmagasság lejátszása a piezo hangszórón az analóg bemenettől függően.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa bemutatja, hogyan figyelheti a kapcsoló állapotát az Arduino és a számítógép közötti soros kommunikáció létrehozásával USB-n keresztül.
Hardver szükséglet
Arduino kártya
8 ohmos hangszóró
fotoellenállás
4,7 kohm-os ellenállás
100 ohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör

Csatlakoztassa a hangszóró egyik csatlakozóját a 9-es digitális kivezetéshez egy 100 ohmos ellenálláson keresztül, a másik csatlakozóját pedig a testhez. Táplálja a fotoellenállást 5 V-tal, és csatlakoztassa az analóg 0-hoz egy 4,7K-os ellenálláson keresztül a földhöz.
Vázlat

A kód
A példa kódja nagyon egyszerű. Csak vegyünk egy analóg bemenetet, és képezzük le az értékeit a hallható hangmagasságok tartományára. Az emberek 20 és 20 000 Hz között hallanak, de a 120 és 1500 közötti frekvencia általában elég jól működik ennél a vázlatnál.
A leképezéshez meg kell szereznie az analóg bemenet tényleges tartományát. A bemutatott áramkörben az analóg bemenet értéke körülbelül 400 és körülbelül 1000 között volt. Módosítsa a map() parancs értékeit, hogy azok megfeleljenek az érzékelő tartományának.
A vázlat a következő:
/*
Pitch follower
Olyan hangmagasságot játszik le, amely a változó analóg bemenet alapján változik
Az áramkör:
- 8 ohmos hangszóró a digitális 9 kivezetésen
- fotoellenállás az analóg 0-tól az 5V-ra
- 4.7 kilohmos ellenállás az analóg 0-tól a földre
created 21 Jan 2010
modified 31 May 2012
by Tom Igoe, with suggestion from Michael Flynn
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/digital/tonePitchFollower
*/
void setup() {
// soros kommunikáció inicializálása (csak hibakereséshez):
Serial.begin(9600);
}
void loop() {
// olvassa le az érzékelőt:
int sensorReading = analogRead(A0);
// nyomtassa ki az érzékelő leolvasását, hogy megismerje a határait
Serial.println(sensorReading);
// leképezheti az analóg bemeneti tartományt (ebben az esetben 400–1000
// a fotoellenállástól) a kimeneti hangmagasság-tartományhoz (120–1500 Hz),
// módosítsa az alábbi minimális és maximális bemeneti számokat az érzékelő
// által adott tartománytól függően:
int thisPitch = map(sensorReading, 400, 1000, 120, 1500);
// játszd le a hangmagasságot
tone(9, thisPitch, 10);
delay(1); // késleltetés a leolvasások között a stabilitás érdekében
}
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.