0°

Arduino内置教程-数字-输出高音

个例子展示怎么用tone()命令来产生一个模拟输入的音调。用上光敏电阻器,你的Arduino或Genuino开发板会变成一个简单的轻电子琴。

简介

这个例子展示怎么用tone()命令来产生一个模拟输入的音调。用上光敏电阻器,你的Arduino或Genuino开发板会变成一个简单的轻电子琴。

硬件要求

  • Arduino or Genuino 开发板
  • 8 Ω 扬声器
  • 光敏电阻
  • 4.7KΩ 电阻
  • 100Ω 电阻
  • 连接线
  • 开发板

电路

Arduino内置教程-数字-高音追随

把扬声器的一段通过一个100 ohm电阻连接到数字引脚pin9,而另一端连接到地。用5V为光敏电阻提供电源,然后把它的另一端连接到模拟引脚A0,并在上面加上一个4.7k下拉电阻(连接到地)。

原理图

Arduino内置教程-数字-高音追随

样例代码

  • 这个例子的代码是很简单的。只是把一个模拟输入和它的值放到在可听见范围的音调。人类能听到20-20000Hz的声音,而这个程序最好工作在120-1.500Hz会比较好点。
  • 你需要获得你模拟输入值的实际范围。在所示电路里,模拟输入值范围在400-1000之间。用map()命令来改变这个值来匹配你传感器的范围。
  • 程序如下:
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
}
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论