Pengikut nada menggunakan fungsi tone()
Mainkan nada pada speaker piezo tergantung pada masukan analog.
Contoh ini menunjukkan cara menggunakan perintah tone() untuk menghasilkan nada yang mengikuti nilai input analog. Dengan menggunakan fotoresistor, papan Arduino Anda akan menjadi theremin cahaya yang disederhanakan.
Perangkat Keras yang Diperlukan
- pengeras suara 8ohm
- fotoresistor
- Resistor 4,7k ohm
- Resistor 100 ohm
- kabel penghubung
- papan tempat memotong roti
Sirkuit
Skema
Desain PCB
Kode Contoh
Kode yang siap di upload
Kode untuk contoh ini sangat sederhana. Ambil saja input analog dan petakan nilainya ke rentang nada yang dapat didengar. Manusia dapat mendengar dari 20 - 20.000 Hz, tetapi 120 - 1.500 biasanya berfungsi cukup baik untuk sketsa ini.
Anda perlu mendapatkan rentang sebenarnya dari masukan analog Anda untuk pemetaan. Dalam rangkaian yang ditunjukkan, nilai masukan analog berkisar antara sekitar 400 hingga sekitar 1.000. Ubah nilai dalam perintah map() agar sesuai dengan rentang sensor Anda.
Sketsanya adalah sebagai berikut:
/* | |
Pitch follower | |
Plays a pitch that changes based on a changing analog input | |
circuit: | |
- 8 ohm speaker on digital pin 9 | |
- photoresistor on analog 0 to 5V | |
- 4.7 kilohm resistor on analog 0 to ground | |
created 21 Jan 2010 | |
modified 31 May 2012 | |
by Tom Igoe, with suggestion from Michael Flynn | |
This example code is in the public domain. | |
https://www.arduino.cc/en/Tutorial/BuiltInExamples/tonePitchFollower | |
*/ | |
void setup() { | |
// initialize serial communications (for debugging only): | |
Serial.begin(9600); | |
} | |
void loop() { | |
// read the sensor: | |
int sensorReading = analogRead(A0); | |
// print the sensor reading so you know its range | |
Serial.println(sensorReading); | |
// map the analog input range (in this case, 400 - 1000 from the photoresistor) | |
// to the output pitch range (120 - 1500Hz) | |
// change the minimum and maximum input numbers below depending on the range | |
// your sensor's giving: | |
int thisPitch = map(sensorReading, 400, 1000, 120, 1500); | |
// play the pitch: | |
tone(9, thisPitch, 10); | |
delay(1); // delay in between reads for stability | |
} |
Pelajari lebih lanjut
Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan .
Anda juga dapat menjelajahi referensi bahasa , kumpulan terperinci bahasa pemrograman Arduino.