当前位置: 首页 > news >正文

数字电视播放的视频格式神马搜索seo优化排名

数字电视播放的视频格式,神马搜索seo优化排名,北京好的网站设计机构,网站最常用字体Arduino单片机上有多个数字IO针脚#xff0c;可以输出数字信号#xff0c;用于驱动发声器件#xff0c;从而让它发出想要的声音。蜂鸣器是一种常见的发声器件#xff0c;通电后可以发出声音。因此#xff0c;单片机可以通过数字输出控制蜂鸣器发出指定的声音。另外#x…Arduino单片机上有多个数字IO针脚可以输出数字信号用于驱动发声器件从而让它发出想要的声音。蜂鸣器是一种常见的发声器件通电后可以发出声音。因此单片机可以通过数字输出控制蜂鸣器发出指定的声音。另外Arduino支持串口的通信方式可以从电脑上接收数据根据收到的数据确定所需发的声音。本文说明用上述方式如何通过Arduino单片机实现一个简单的音乐播放器。 一、项目实现的工具 一无源蜂鸣器 蜂鸣器有分有源蜂鸣器和无源蜂鸣器两种。其中无源蜂鸣器内部不带震荡源要通过震荡的信号来令其发出声音。音调随震荡频率的不同而不同[1]。 二Arduino单片机 Arduino单片机通过串口从电脑端获取音乐信息然后根据音乐信息控制无源蜂鸣器的震荡频率产生音乐效果。 三可调节电阻 用于控制无源蜂鸣器的电压大小从而调节音量。 四树莓派电脑运行基于Debian Linux的Raspberry Pi OS 一方面编写Arduino程序并将其烧录进单片机另一方面将存储的音乐信息通过串口发送给Arduino。 五信号线 主要用于通电和传输信号 二、电路及程序设计 一电路 在该项目中使用Arduino单片机的第7个IO针脚作为向蜂鸣器输出信号的针脚。注意Arduino单片机的输出是推挽输出即高电平输出。 无源蜂鸣器有三个针脚即电源VCC接地GND以及信号I/O。蜂鸣器在接通电源时其随信号的高电平输入进行震荡发出声音。而电源的电压决定了发声的响度。 电路大致如下 所以通过可调电阻控制蜂鸣器的输入电压大小从而调节音量大小。 二程序 在介绍程序之前先简单介绍一些音乐的基本知识。我们通常的音乐是用八度音阶表示的。任何一个音符和高八度的音相比其音调发声体震荡频率相差两倍。每个八度区里有12个半音所以每个半音的音调相差倍。也就是说如果简谱中的的音调是Hz那么的音调是Hz而的音调是的音调是。详细说明见[2]。 本项目在Arduino程序中用一个字节作为一个音符的信号。规定当该字节值为0x80时代表的音调为1024Hz可以理解为简谱中的音调是1024Hz然后字节值每相差1就代表相差一个半音。因此0x7F代表Hz即0x81代表Hz即。 另外把0x00作为休止符。这里规定每一个音符的时长为半秒。 在此贴上Arduino里的C程序 /* Lets define the hex of the tonedefine a do: 1024Hz 0x80: do3 0x81: #do3 0x82: re3 0x7F: si2and each byte is for a note of 0.5s. So if you need do3 for 1s, then need 2 0x80*/const int buzzerPin 7; byte baseNote 0x80; int baseTone 1024; byte note; void setup() {// put your setup code here, to run once:pinMode(buzzerPin, OUTPUT);Serial.begin(9600); }void loop() {// put your main code here, to run repeatedly:if ((Serial.available() 0) (note Serial.read()) (note ! 0x00)){Serial.print(Sing:);Serial.print(note);Serial.print( );//Now convert it into frequency of the toneint toneFreq;if (baseNote note){ //received note is under base noteint noteDiff baseNote - note;toneFreq (int)((float)baseTone / (pow(2.0, noteDiff/12.0))); //between do and #do is 2^(1/12)}else{//received note is above base noteint noteDiff note - baseNote;toneFreq (int)((float)baseTone * (pow(2.0, noteDiff/12.0)));}Serial.print(toneFreq);Serial.print( );tone(buzzerPin, toneFreq);}else{noTone(buzzerPin);Serial.print(0);}delay(500);} 程序中tone(buzzerPin, toneFreq)表式在buzzerPin数字输出中产生频率为toneFreqHz的震荡而noTone(buzzerPin)表示让数字输出停止震荡。 因此程序通过串口接收音符字节信息然后根据该信息激活数字输出让无源蜂鸣器发出音乐。 另外在树莓派电脑中运行一个python程序通过读取指定格式的乐谱产生音符数据并将其通过串口输入到Arduino中。这里先对乐谱的格式做一个规定。 这里令乐谱为一个txt文件该txt文件里每一个音符用一个1-3个字符的字符串组成而音符和音符之间用空格分开。对于每一个音符第一个字符是1-7之间的数字意义和简谱的数字部分一样第二的字符表明该音符在哪一个八度上标准的八度号为3所以如果没有该字符就默认为3处理第三个字符可以不存在也可以是或-表明是升调还是降调。所以假定乐谱文件如下 13 33 23 52 0 43 63- 则对应的简谱是 所以把乐谱txt文件转换为Arduino读取的音乐数据的python程序如下 This file gives the function to get music from file base 0x80 is do3(13) so do2 is 12 semitones lower than do3, do3 is 1 semitone higher than do3, do3- is 1 semitone lower than do3 def loadMusicFile(filename):with open(filename,r) as file:content file.read()return content.split( )def convertFromMusicToArduino(filename):notes loadMusicFile(filename)print(notes)musicData []for n in notes:if len(n) 0:continue;dataThis 0x80if n[0] 1:dataThis 0elif n[0] 2:dataThis 2elif n[0] 3:dataThis 4elif n[0] 4:dataThis 5elif n[0] 5:dataThis 7elif n[0] 6:dataThis 9elif n[0] 7:dataThis 11else:dataThis 0x00if len(n) 1 and dataThis ! 0x00:dataThis (int(n[1]) - 3) * 0x0cif len(n) 2 and dataThis ! 0x00:if n[2] :dataThis 0x01elif n[2] -:dataThis - 0x01musicData.append(dataThis)return musicData 注意0x0c表明十进制里的12。 然后运行以下python程序把音频文件转成Arduino支持的格式后通过串口传入Arduino。python的串口连接的方式见[3]。 import serial import os from time import sleep from getmusicFromFile import convertFromMusicToArduinoserialportName /dev/ttyACM1 bps 9600ser serial.Serial(serialportName, int(bps), timeout0.5, parityserial.PARITY_NONE, stopbits1)data convertFromMusicToArduino(song.txt)data_bytes bytes(data) print(data_bytes)if (ser.isOpen()):print(Serial opened)sleep(1.8)ser.write(data_bytes)sleep(10)print(ser.read(30))ser.close() print(done) 注意在ser.isOpen()后在传输数据前有一个sleep(1.8)。这个等待是要让串口准备好后再传输数据否则会传输失败Arduino有可能未能收到数据。 三、实验效果 该实验用歌曲友谊地久天长的第一小段作为乐谱文件song.txt如下 52 52 13 13 0 13 13 0 33 33 23 23 23 13 23 0 33 33 13 13 0 13 33 33 53 53 63 63 63 0 0 0 63 63 53 53 53 33 33 33 13 13 23 23 23 13 23 23 33 23 13 13 13 62 62 62 52 52 13 13 13 运行效果见视频播放的正是友谊地久天长的第一段。注意当我转动可调电阻时音量的变化。 友谊地久天长 参考资料 [1]有源蜂鸣器与无源蜂鸣器的驱动方式详解精华版_有源蜂鸣器和无源蜂鸣器的电路图-CSDN博客 [2]八度音阶和频率的关系_音阶与频率的关系-CSDN博客 [3]​​​​​​​用 Python 玩转串口基于 pySerial_python打开串口-CSDN博客
http://www.w-s-a.com/news/82036/

相关文章:

  • 广州做网站哪个好网站建网站建设网站站网站
  • 如何快速提升网站pr短剧个人主页简介模板
  • 上海网站建设 永灿百度权重3的网站值多少
  • 公司展示网站模板模板工
  • 网站建设收费详情舟山公司做网站
  • 深圳宝安区住房和建设局网站html模板大全
  • 和田哪里有做网站的地方wordpress地址更改
  • 恒通建设集团有限公司网站企业网站百度指数多少算竞争大
  • 雅虎网站收录提交入口如何使用wordpress搭建网站
  • 微商城网站建设怎么样发稿是什么意思
  • dz建站与wordpress群晖做网站服务器速度快吗
  • 做手机网站的公司网站建设 app开发 图片
  • 网站开发技术背景介绍wordpress数据库重置密码
  • 开发建设网站的实施过程是一个logo设计品牌
  • 做360pc网站排名首页工程造价信息网官网首页
  • 产品销售网站模块如何设计大数据和网站开发
  • 现在帮别人做网站赚钱不济南做网站建设公司
  • 嘉兴网站建设哪家好最近三天的国际新闻大事
  • 安丘网站建设制作做网站口碑比较好的大公司
  • 成都专业做网站公司哪家好优化大师下载安装免费
  • 防蚊手环移动网站建设广东深圳有几个区
  • 网站建设找哪些平台宜兴网站开发
  • 免费网站应用软件wordpress添加动态图标
  • 中小企业网站建设客户需求调查问卷昆明网站建设一条龙
  • 网站内容的特点wordpress 移动端网页
  • 专门网站建设培训网站系统建设
  • 自己设计手机的网站wordpress主题加密教程
  • 北京网站建设公司飞沐卖水果网站建设的策划书
  • 北京免费自己制作网站短视频宣传片制作
  • 怎样进入谷歌网站电子商务网站建设软件选择