这段时间一直在学习Arduino,然后自己用学到的简单知识做了一个激光电子竖琴,晚上没事的时候拿来弹弹曲子,别的不说,很有趣味,可以动手试试,当做礼品送给别人都是不错的选择。 所需材料:DIY木架、Arduino模块(接受模拟输入信号且烧录程序)、升压模块与功放模块(增大蜂鸣器声音)、蜂鸣器、电池盒、电池(4节串联)、激光灯7个、光敏电组7个 原理:当用手指遮住激光光线时,光敏电阻阻值发生变化,超过一定范围时发出特定频率的音符,每一个光敏电组都有一个模拟输入信号传输线,不同的光敏电阻发出音符频率不同,构成1-7的乐调。 困难:白天与晚上阻值得临界点、喇叭声音通过升压功放模块提高、声音持续时间会改变声音清晰度
改进:通过按钮选择音乐的ABCDEFG音调、连接LED灯当发出声音时LED灯亮、装饰LED灯带
电路图叙述:具体的没画出来,我大概讲下,7个光敏电组负极串联接到Arduino板GND极,正极串联接到Arduino板输出信号引脚,然后每个光敏电组从正极上引出一条线作为模拟信号输入线,分别接到Arduino板上边模拟信号输入引脚;激光灯串联接上电池,灯线射到光敏电组上边***注意***小心短路!!!接线一定要分清不能接触。
源码:// C调 高音 #define A 525 #define B 589 #define C 662 #define D 700 #define E 786 #define F 882 #define G 990 // E调 //#define A 330 //#define B 350 //#define C 393 //#define D 441 //#define E 495 //#define F 556 //#define G 624 // F调 高音 //#define A 700 //#define B 786 //#define C 882 //#define D 935 //#define E 1049 //#define F 1178 //#define G 1322 //还有其他乐调我没有用到也就没定义大家可以自己定义 void setup (){ Serial.begin(9600); } void loop() { int n0 =analogRead(0); int n1 =analogRead(1); int n2 =analogRead(2); int n3 =analogRead(3); int n4 =analogRead(4); int n5 =analogRead(5); int n6 =analogRead(6); //Serial.println(n0); //Serial.println(n1); //Serial.println(n2); //Serial.println(n3); //Serial.println(n4); //Serial.println(n5); Serial.println(n6);//创建一个变量n,将0-6数字口的状态采集出来赋值给他。 if(n0>200){ //光敏电组阻值大于200时条件成立,当然根据测试数据生成 pinMode(5,OUTPUT); //此处5号接口为输出口 tone(5,A,200); //输出频率为自定义的A,延迟200ms } if(n1>200){ pinMode(5,OUTPUT); tone(5,B,200); } if(n2>200){ pinMode(5,OUTPUT); tone(5,C,200); } if(n3>200){ pinMode(5,OUTPUT); tone(5,D,200); } if(n4>200){ pinMode(5,OUTPUT); tone(5,E,200); } if(n5>200){ pinMode(5,OUTPUT); tone(5,F,200); } if(n6>200){ pinMode(5,OUTPUT); tone(5,G,200); } }