目录
简介
这个例子展示怎么用tone()命令来产生一个模拟输入的音调。用上光敏电阻器,你的Arduino或Genuino开发板会变成一个简单的轻电子琴。
硬件要求
- Arduino or Genuino 开发板
- 8 Ω 扬声器
- 光敏电阻
- 4.7KΩ 电阻
- 100Ω 电阻
- 连接线
- 开发板
电路
把扬声器的一段通过一个100 ohm电阻连接到数字引脚pin9,而另一端连接到地。用5V为光敏电阻提供电源,然后把它的另一端连接到模拟引脚A0,并在上面加上一个4.7k下拉电阻(连接到地)。
原理图
样例代码
- 这个例子的代码是很简单的。只是把一个模拟输入和它的值放到在可听见范围的音调。人类能听到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
}