【DIY】电子制作创意作品:有趣的激光竖琴

在上海世博会的伊朗馆,我看到了一架没有琴弦的竖琴,那是众多参观者公认的伊朗馆里最有趣的展品!参观者只要伸手穿过那架通体黑色的竖琴,音调就会被“奏响”。没有琴弦怎么奏响?工作人员为我们揭示了秘密——他按了一下琴身上的“光”按键,14道红色的激光束就从琴的上端射出。他说,这是激光竖琴。我们用手指一“拨”激光束,竖琴就会发声,每一束光都有不同的音高。据说这个竖琴原本放在伊朗的科学馆里,主要是为了激起小朋友对音乐和科技的兴趣。

这个激光竖琴也让我回想起了许多陈年旧事,很久前我就曾经和同学说过,我也能做一个激光竖琴,还和他打了赌,只是由于时间的问题一直没有完成。看了伊朗馆的激光竖琴,我决定制作它,当然是一款很简陋的激光竖琴。不过对于喜好DIY的朋友而言,也是一个不错的创意小制作。

图片

图片

制作需要的材料(见附表)

附表 使用AT89C2051方案的元件清单

编号 零件名称 数量

1 12MHz晶振 1

2 10kΩ电阻 6

3 10μF电容 1

4 20针插座 1

5 AT89C2051 1

6 无源蜂鸣器 1

7 8550PNP三极管 1

8 1kΩ电阻 1

9 光敏电阻 5

10 3V激光管 5

11 电池盒 1

12 木块 3

13 插针、插座 若干

14 铜座、螺丝 若干

15 洞洞板 1

整体结构

这个激光竖琴,用3个木块构成,并用螺丝和热熔胶固定成接近竖琴的形状。

在上面的木块上安装5个3.0V激光管,并用热熔胶固定在下面的木块上。用0.8mm的钻头钻洞,并安装对应的5个光敏电阻,即组成基本的基座。然后,在合适的地方放置5号电池盒,也用热熔胶固定。最后,根据电源原理图,把对应的引线和插座连接,以方便后期的连接和升级。最后,再与电路板底座连接。底座的电路我先后做了两种,分别采用的是AT89C2051和ATMEGA8这两款单片机。当然,性能和效果也是不同的。由于材料有限,我只做了5根弦的作品。

这次制作焊接非常简单,都是DIP的元器件,根据原理图使用绝缘套线,连接对应引脚即可。

好了,你也可以享受神奇的无弦琴的乐趣了!

图片

采用51单片机的电路原理图

图片

图片

采用AVR M8单片机的电路原理图

电路原理

光敏电阻在室内光线下的阻值约20kΩ。当受到激光管照射时,它的电阻将小于1kΩ。于是,笔者用10kΩ的电阻和光敏电阻串联,进行分压。当有激光照射时,单片机读取光敏电阻的电压(3/11,约 0.27V),此时它的逻辑电平为0。当无激光照射时,单片机读取光敏电阻的电压,约(3/30)×20=2V,这时它的逻辑电平为1。

这样,当我们遮挡激光的光线时,就能在电路中产生开关的效果。音符是如何产生的呢?人耳能听到的声音频率为20Hz~20kHz,竖琴音符频率当然也在这个范围。只是,不同的音符,有着自己固定的频率。通过51单片机自带的16位定时器就可以产生上述音频。例如竖琴的标准音la为440Hz。通过计算可知,它的半周期为1136μs。这样,只要在半周期时跳变引脚电平,就可以产生440Hz的方波了。再经过电声转换元件(蜂鸣器),就可以产生标准音la 了,其他音符也是这样产生的。

图片

图片

51单片机底板

图片

图片

AVR单片机底板

图片

激光竖琴的结构

采用51单片机的电路使用了AT89C2051单片机,在P3.7引脚上连接发声元件,即无源蜂鸣器。通过三极管放大电流,使音乐更响亮。其余部分是51 单片机的最小系统。电路的电源用2节5号电池。大家可能会认为,这个音符没有音色啊。因此,我又对这个51单片机做的发声底座进行了改变,用M8单片机重新设计了发声的底座。使用新设计的M8单片机电路,我们可以将音色文件放到SD卡中,大家根据自己的喜好,放入喜欢的音符,如钢琴、二胡、吉他等。不过,音符需要自己用电脑事先录制,并保存为8位的WAV文件,文件名为D、R、M、F、S、L、X。程序会判断哪根激光被阻挡,播放相应的音符文件。声音通过 M8单片机的OC1A、OC1B产生。只要把音频输出的OCR1A、OCR1B和音响或耳机连接,就能听到响亮的音符了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot搭建入门

Spring Boot简介 Spring Boot是对Spring进行的高度封装,是对Spring应用开发的高度简化版,是Spring技术栈的综合整合,是J2EE的一站式解决方案。想要精通Spring Boot的前提是需要熟悉Spring整套技术栈原理与内容。 Spring Boot的优点&#xf…

背景虚拟化组件,透明模糊

问题当我们背景想要进行透明或者模糊处理的时候我们一般我们可以以通过 rgba 的第四个位置可以进行透明处理,但是模糊不行 需要懂得知识点,定位,属性加强,结构化,react 插槽 话不多说上代码 子组件 import logincs…

RN的父传子和子传父及方法调用(函数式组件)

在React Native中,父组件向子组件传递数据通常通过props实现,而子组件向父组件传递数据则通常通过回调函数实现。下面是一个简单的示例,演示了父组件向子组件传递数据和子组件向父组件传递数据的方法: 父传子 父组件 // ParentC…

指针篇章-(冒泡排序详解)

冒泡排序 图解 tmp图解 内容图解 每次循环的次数减少 for循环详解 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列, 一次比较两个元素,如果它们的顺序错误就把它们交换过来。 遍历数列的工作是重复地进行直到没有再需要交换&…

Double和Float类

Double类 功能:实现对Double基本型数据的类包 构造方法: (double num) double Value()方法:返回对象中的double型数据。 Float类 功能:实现对float基本型数据的类包装。 构造方法: (float num) Float Value()方法…

云计算项目九:K8S安装

K8S安装 Kube-master安装 按照如下配置准备云主机 防火墙相关配置:禁用selinux,禁用swap,且在firewalld-*。上传kubernetes.zip 到跳板机 配置yum仓库(跳板机) 跳板机主机配置k8s软件源服务端 [rootjs ~]# yum -y…

设计模式-行为型模式-备忘录模式

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。[DP] //首先,我们定义Originator类,它有一个状态和…

C++初阶:类与对象(中篇)

目录 2. 类的六个默认成员函数2.1 构造函数2.1.1 构造函数的定义方式 2.2 析构函数2.2.1 析构函数定义方式 2.3拷贝构造函数2.3.1 拷贝构造函数的定义方式2.3.2 深拷贝与浅拷贝 2.4 赋值运算符的重载2.4.1 运算符重载2.4.2 运算符的重载的定义方式2.4.3 默认成员函数&#xff1…

HTML使用

文章目录 一、简介二、HTML快速入门三、基础标签四、图片、音频、视频标签五、超链接标签六、列表标签七、表格标签八、布局标签九、表单标签十、表单向标签 一、简介 二、HTML快速入门 ​ <html><head><title>你好</title></head><body>再…

功能强大使用简单的截图/贴图工具,PixPin

一、下载链接 PixPin 截图/贴图/长截图/文字识别/标注 | PixPin 截图/贴图/长截图/文字识别/标注 (pixpinapp.com) 二、功能 截图/贴图/长截图/文字识别/标注 三、安装教程 根据提示安装即可&#xff1a; 四、快捷键 1.软件自带快捷键&#xff08;右击PixPin查看 &#xff09…

spring 技术100问?

什么是Spring框架的主要优点&#xff1f;Spring框架支持哪些模块或组件&#xff1f;什么是Spring Core模块&#xff1f;请解释Spring框架中的BeanFactory和ApplicationContext的区别。如何自定义Spring Bean的初始化和销毁方法&#xff1f;什么是Spring的工厂方法设计模式应用&…

微信小程序-入门

1.下载和安装Npm&#xff1a;Npm https://docs.npmjs.com/downloading-and-installing-node-js-and-npm 或者 https://nodejs.org/en/download/ 未安装npm 提示 以下以安装node安装包为例 按任意键继续 安装完成后 2. 下载和安装小程序开发工具 &#xff1a;https:/…

安信可IDE(AiThinker_IDE)编译ESP8266工程方法

0 工具准备 AiThinker_IDE.exe ESP8266工程源码 1 安信可IDE&#xff08;AiThinker_IDE&#xff09;编译ESP8266工程方法 1.1 解压ESP8266工程文件夹 我们这里使用的是NON-OS_SDK&#xff0c;将NON-OS_SDK中的1_UART文件夹解压到工作目录即可 我这里解压到了桌面&#xff0c…

T1 小美的数组询问(15分) - 美团编程题 题解

考试平台&#xff1a; 牛客网 题目类型&#xff1a; 30道单选题&#xff08;60分&#xff09; 2 道编程题 &#xff08;15分 25分&#xff09; 考试时间&#xff1a; 2024-03-09 &#xff08;两小时&#xff09; 题目描述 小美拿到了一个由正整数组成的数组&#xff0c;但其中…

Draco点云压缩测试

ref&#xff1a;https://github.com/google/dracohttps://codelabs.developers.google.com/codelabs/draco-3d/index.html#6 Draco Draco 是一个用于编码压缩和解压缩 3D 几何网格和点云的库&#xff0c;从而改进 3D 图形的存储和传输该代码支持压缩点、连接信息、纹理坐标、颜…

NTFS安全权限

NTFS是新技术文件系统&#xff08;New Technology File System&#xff09;的缩写&#xff0c;是一种用于Windows操作系统的文件系统。NTFS提供了高级的功能和性能&#xff0c;包括文件和目录的权限控制、加密、压缩以及日志等。它被广泛应用于Windows NT、Windows 2000、Windo…

算法训练营day44(补),动态规划12

func max(a, b int) int { if a > b { return a } return b } //300. 最长递增子序列 func lengthOfLIS(nums []int) int { dp : make([]int, len(nums)) for i : range dp { dp[i] 1 } for i : 1; i < len(nums); i { for j : 0; j < i; j { //收集所有子序列 if…

linux中git暂存,提交,上传到github

安装git apt-get updateapt-get install git设置 git config --global user.name "XXX"git config --global user.email "xxxxxx.com"生成ssh key ssh-keygen -t rsa查看id_rsa.pub cat ~/.ssh/id_rsa.pub将id_rsa.pub内容设置到github中 测试是否连接…

Android L (5.0及以上版本) 中如何精准判断当前页面是否位于栈顶

在Android应用程序开发中,了解应用内Activity的状态对于优化用户体验、执行适时的操作至关重要。特别是在多任务环境下,准确判断当前Activity是否位于任务栈顶端,即用户当前正在交互的页面,有助于防止无效操作和资源浪费。尤其是在Android Lollipop(5.0)及其之后版本中,…

ubuntu 运行opencv_sample遇到的问题

首先我遇到的问题就是摄像头连接不上 勾选最后一个 然后是 usb接口问题 点击虚拟机设置 我的是改为 3 就可以啦