Minggu, 16 Maret 2025

Pengikut nada menggunakan fungsi tone()

 

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.

Tidak ada komentar:

Posting Komentar