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
}
[Kodu Al]

See Also