Eğitimler
tonePitchFollower
Bu örnek, analog girişin değerlerini izleyen bir adım oluşturmak için tone () komutunun nasıl kullanılacağını gösterir. Bir fotodirenç kullanarak Arduino veya Genuino kartınız basitleştirilmiş bir ışık haline gelir.
Gerekli Donanım
- Arduino veya Genuino kartı
- 8 ohm hoparlör
- photoresistor
- 4.7K ohm direnç
- 100 ohm direnç
- bağlantı telleri
- breadboard
Devre
Hoparlörünüzün bir terminalini 100 ohm direnç üzerinden dijital pim 9'a, diğer terminalini de toprağa bağlayın. Fotorezistörünüzü 5V ile çalıştırın ve toprağa 4.7K direnç ekleyerek analog 0'a bağlayın.
Şematik
büyütmek için resme tıklayın
Kod
Bu örneğin kodu çok basit. Sadece analog bir giriş alın ve değerlerini bir dizi sesli perdeye eşleyin. İnsanlar 20 - 20.000Hz'den duyabilir, ancak 120 - 1.500 genellikle bu çizim için oldukça iyi çalışır.
Eşleme için analog girişinizin gerçek aralığını almanız gerekir. Gösterilen devrede, analog giriş değeri yaklaşık 400 ila yaklaşık 1,000 arasındadır. Map () komutundaki değerleri, sensörünüzün aralığına uyacak şekilde değiştirin.
Kroki aşağıdaki gibidir:
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.
http:egitim.aspx?e=Tone2
*/
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
}
See Also
- Array()
- for()
- tone()
- map()
- BlinkWithoutDelay- delay () işlevini kullanmadan bir LED'i yanıp sönün.
- Button- Bir LED'i kontrol etmek için bir düğme kullanın.
- Debounce- Gürültüyü filtreleyen bir düğme okuyun.
- DigitalInputPullup- pinMode () ile INPUT_PULLUP kullanımını gösterir.
- StateChangeDetection- Düğme itme sayısını sayın.
- toneKeyboard- Kuvvet sensörleri ve piezo hoparlör kullanan üç tuşlu müzikal klavye.
- toneMelody- Piezo hoparlörle bir melodi çalın.
- toneMultiple- tone () komutunu kullanarak birden fazla hoparlörde tonları sırayla çalın.