zhenzhubay.com

珍珠湾全球网

 找回密码
 用户注册
珍珠湾全球网 湾口 新闻 珍珠视角 查看内容

[科技分享]ARDUINO--光线演奏-作曲

2013-3-28 20:25| 发布者: 新闻速递| 查看: 406| 评论: 5|原作者: 岳东晓|来自: 珍珠湾

摘要: 今天从AMAZON收到了这个名叫ARDUINO的东东,很好玩,老少皆宜。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产品 链接


路过

雷人

握手

鲜花

鸡蛋
发表评论

最新评论

引用 2013-3-29 01:24
录下来,再把视频放上来~
引用 2013-3-28 21:11
声音有点象"永不消失的电波"
引用 2013-3-28 19:12
学习!
引用 2013-3-28 15:30
圣诞节有用
引用 2013-3-28 15:13
  

查看全部评论(5)

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

GMT+8, 2024-11-30 06:45 , Processed in 0.011050 second(s), 10 queries , Memcache On.

Powered by Discuz! X2.5

回顶部