Loading [Contrib]/a11y/accessibility-menu.js

zhenzhubay.com

珍珠湾全球网

 找回密码
 用户注册
查看: 92994|回复: 2
打印 上一主题 下一主题

ARDUINO--光线演奏

[复制链接]

87

主题

83

好友

17万

积分

精华
20

跳转到指定楼层
楼主
发表于 2013-3-28 14:34:12 |只看该作者 |倒序浏览
岳东晓 (2013/03/27 23:13): 今天从AMAZON收到了这个名叫ARDUINO的东东,很好玩,老少皆宜。ARDUINO是什么呢?这是一个开放设计、开放源代码的微控制器。说简单点就是一个小计算机,外加若干输入、输出接口,然后你可以编写程序,实现你要的功能。我从AMAZON购买了ARDUINO,一本简介的书籍,外加一些零件 (链接见文末)。零件有光电阻、LED灯、电阻、轰鸣器、马达、热电阻等等。光电阻的电阻根据光线强弱而变化。很快的,我想了一个小玩意--光线演奏:简单的说就是根据光的强弱演奏不同的音符。乘大家争论的几分钟,搞定了(代码见文末)

ARDUINO--光线演奏

今天从AMAZON收到了这个名叫ARDUINO的东东,很好玩,老少皆宜。

ARDUINO是什么呢?这是一个开放设计、开放源代码的微控制器。说简单点就是一个小计算机,外加若干输入、输出接口,然后你可以编写程序,实现你要的功能。

我从AMAZON购买了ARDUINO,一本简介的书籍,外加一些零件 (链接见文末)。总价约50元。零件有光电阻、LED灯、电阻、轰鸣器、马达、热电阻等等。光电阻的电阻根据光线强弱而变化。

很快的,我想了一个小玩意--光线演奏:简单的说就是根据光的强弱演奏不同的音符。乘大家争论的几分钟,搞定了(代码见文末)。

其逻辑如下:读取光电阻上的电压信号,并控制一个LED灯,如果光线弱则灯亮。同时,光线强弱又对应不同的声音频率,输出到轰鸣器。

使用方法:对着电路手舞足蹈,导致光线被不同程度的挡住。

代码如下

const int analogInPin = A0;  // Analog input pin 
const int analogOutPin = A1; // Analog output pin that the LED is attached to

int ncnt = 24;

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)
int inputMax=150;

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
}

void loop() {

  sensorValue = analogRead(analogInPin);            
  outputValue = map(sensorValue, 0, inputMax, 255, 0);  
  analogWrite(analogOutPin, outputValue);           
 
  Serial.print("Playing note = ");  
 int n = map(sensorValue, 0, inputMax, -ncnt/2, ncnt/2);  
  int freq= (int)(pow(2, n/12.0)*3*440.0); //计算频率
  Serial.println(freq);   
   tone(12, freq, 150);
   delay(150); 
  
                      
}



AMAZON产品 链接

您需要登录后才可以回帖 登录 | 用户注册

Archiver|手机版|珍珠湾全球网

GMT+8, 2025-4-11 12:32 , Processed in 0.012847 second(s), 9 queries , Memcache On.

Powered by Discuz! X2.5

回顶部