<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1%2Fzh</id>
		<title>刷卡音箱/zh - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1%2Fzh"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;action=history"/>
		<updated>2026-04-21T05:15:51Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12135&amp;oldid=prev</id>
		<title>502748957@qq.com：/* 程序说明 */</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12135&amp;oldid=prev"/>
				<updated>2015-12-21T04:22:49Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;程序说明&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;amp;diff=12135&amp;amp;oldid=12121&quot;&gt;显示更改&lt;/a&gt;</summary>
		<author><name>502748957@qq.com</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12121&amp;oldid=prev</id>
		<title>502748957@qq.com：/* 刷卡使用 */</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12121&amp;oldid=prev"/>
				<updated>2015-12-21T03:44:54Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;刷卡使用&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;2015年12月21日 (一) 03:44的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l107&quot; &gt;第107行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第107行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==刷卡使用==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==刷卡使用==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;在一张空白的纸上使用黑色马克笔分别在不同边缘按照如图方式画下黑白相间的粗条纹&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;在一张空白的纸上使用黑色马克笔分别在不同边缘按照如图方式画下黑白相间的粗条纹&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:刷卡.jpg||600px|center]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:刷卡.jpg||600px|center&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|thumb&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;之后将条纹从刷卡处刷过即可播放音乐。不同条纹数量即播放不同的音乐&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;之后将条纹从刷卡处刷过即可播放音乐。不同条纹数量即播放不同的音乐&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>502748957@qq.com</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12120&amp;oldid=prev</id>
		<title>502748957@qq.com：/* 刷卡使用 */</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=12120&amp;oldid=prev"/>
				<updated>2015-12-21T03:44:37Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;刷卡使用&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;2015年12月21日 (一) 03:44的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l106&quot; &gt;第106行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第106行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;至此音乐盒拼装完成&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;至此音乐盒拼装完成&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==刷卡使用==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==刷卡使用==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;在一张空白的纸上使用黑色马克笔分别在不同边缘按照如图方式画下黑白相间的粗条纹&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:刷卡.jpg||600px|center]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;之后将条纹从刷卡处刷过即可播放音乐。不同条纹数量即播放不同的音乐&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==注意事项==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==注意事项==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>502748957@qq.com</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=11797&amp;oldid=prev</id>
		<title>502748957@qq.com：/* 组装 */</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=11797&amp;oldid=prev"/>
				<updated>2015-11-30T05:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;组装&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;2015年11月30日 (一) 05:55的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l105&quot; &gt;第105行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第105行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Musicstep6.jpg||600px|center]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Musicstep6.jpg||600px|center]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;至此音乐盒拼装完成&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;至此音乐盒拼装完成&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==刷卡使用==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==注意事项==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==注意事项==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>502748957@qq.com</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=11796&amp;oldid=prev</id>
		<title>502748957@qq.com：Created page with &quot;{| style=&quot;width: 800px;&quot; |- | ==概述== *项目名称：Microduino刷卡音箱 *目的：读取SD卡中的歌曲播放,通过刷卡改变曲目 *难度：中 *耗时：2小...&quot;</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E5%88%B7%E5%8D%A1%E9%9F%B3%E7%AE%B1/zh&amp;diff=11796&amp;oldid=prev"/>
				<updated>2015-11-30T05:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{| style=&amp;quot;width: 800px;&amp;quot; |- | ==概述== *项目名称：Microduino刷卡音箱 *目的：读取SD卡中的歌曲播放,通过刷卡改变曲目 *难度：中 *耗时：2小...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==概述==&lt;br /&gt;
*项目名称：Microduino刷卡音箱&lt;br /&gt;
*目的：读取SD卡中的歌曲播放,通过刷卡改变曲目&lt;br /&gt;
*难度：中&lt;br /&gt;
*耗时：2小时&lt;br /&gt;
*制作者：&lt;br /&gt;
*简介:&lt;br /&gt;
刷卡音箱一般是指在市场上支持或者能够读取SD、TF等等这些内存处理器的音箱的基础上，增加了刷卡换曲目功能的音箱，与传统的电脑音箱，手机音箱相比，插卡音箱独有的解码功能，使得它更为消费者所青睐，正因如此，它才被成为音响帝国中的解码大王。插卡音箱以实用，方便，最大限度的满足音箱消费者的需求为设计理念，产品设计简洁，使用高品质喇叭，音质震撼，还原度高，即使在最大音量下破音依然不明显，是追求完美音质的明智选择，还原效果明显，失真度低，被誉为音响王国中的音乐天使。精简按键设计、屏幕显示，无须复杂操作，轻松使用。&lt;br /&gt;
==材料清单==&lt;br /&gt;
*Microduino设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|模块||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Core+/zh]]||1||核心板&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-USBTTL/zh]] ||1||下载程序&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Audio/zh]] ||1||解码，存储音乐文件&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Audio&amp;amp;shield/zh]] ||1||拨轮，MicroSD卡&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Amplifier/zh]] ||1||攻放&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-OLED/zh]] ||1||显示&lt;br /&gt;
|-&lt;br /&gt;
|[[Microduino-Cube-S1/zh]] ||1||扩展板OLED接口&lt;br /&gt;
|}&lt;br /&gt;
*其他设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|模块||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|OLED连接线||1||连接&lt;br /&gt;
|-&lt;br /&gt;
|Micro-USB线 ||1||下载程序、供电&lt;br /&gt;
|-&lt;br /&gt;
|喇叭||1||播放音频&lt;br /&gt;
|-&lt;br /&gt;
|MicroSD卡（可选） ||1||存储音乐文件&lt;br /&gt;
|-&lt;br /&gt;
|尼龙螺丝&amp;amp;螺母 ||1||固定&lt;br /&gt;
|-&lt;br /&gt;
|木质外壳 ||1||外观，固定&lt;br /&gt;
|}&lt;br /&gt;
[[File:音乐盒物料.jpg||600px|center]]&lt;br /&gt;
[[File:音乐盒物料2.jpg||600px|center]]&lt;br /&gt;
&lt;br /&gt;
==实验原理==&lt;br /&gt;
Microduino-Audio板可解码并存储音乐文件，Microduino-Audio&amp;amp;shield 与喇叭连接实现音乐拨轮及大容量存储，Microduino-Cube-S1与Microduino-OLED连接可以直观的文字提示方式在OLED中显示音量及曲目。再将Microduino-USBTTL，Microduino-Core+与其他模块无序拼接即可实现插卡音箱功能。音箱外形采用木质外壳也可DIY自己的专属外壳。&lt;br /&gt;
[[File:外形.jpg||600px|center]]&lt;br /&gt;
*主要传感器&lt;br /&gt;
[[Microduino-Audio]]&lt;br /&gt;
==文档==&lt;br /&gt;
==调试过程==&lt;br /&gt;
将[[Microduino-Core+/zh]]、[[Microduino-USBTTL/zh]]堆叠在一起.用数据线将写好的程序通过[[Microduino-USBTTL/zh]]上传到[[Microduino-Core+/zh]]上。&lt;br /&gt;
注意：最好不要将所有模块堆叠在一起之后再上传程序&lt;br /&gt;
[[File:download1.jpg||600px|center]]&lt;br /&gt;
打开Arduino IDE编程软件，点击 【文件】-&amp;gt;【打开】，打开插卡音箱文件夹后选择Microduino_Audio_ble\ Microduino_Audio_ble.ino&lt;br /&gt;
点击&amp;quot;√&amp;quot;，编译程序。&lt;br /&gt;
点击【工具】，选择正确的板+处理器+端口。&lt;br /&gt;
点击&amp;quot;→&amp;quot;，进行上传。&lt;br /&gt;
[[File:Downloadselectcore+.jpg||600px|center]]&lt;br /&gt;
*使用Flash存储音乐（容量很小）&lt;br /&gt;
连接Audio模块到电脑。若成功识别，则“我的电脑”中会出现CD驱动，打开CD驱动。&lt;br /&gt;
注意：若未成功识别请检查数据线与模块之间是否插牢。如检查插牢还不能识别就换个电脑USB接口试试。&lt;br /&gt;
[[File:Dl4.jpg||600px|center]]&lt;br /&gt;
连接成功能显示出一个名为Microduino-Audio的CD驱动器，然后执行以下步骤：&lt;br /&gt;
[[File:Dl5.jpg||600px|center]]&lt;br /&gt;
打开驱动后选择MusicDownload.exe&lt;br /&gt;
[[File:Musicdl.jpg||600px|center]]&lt;br /&gt;
打开后选择“音频加载”&lt;br /&gt;
[[File:Musicdl1.jpg||600px|center]]&lt;br /&gt;
点击“浏览”后选择所有歌曲，点击“打开”（歌曲在Case1-4.mp3中）。&lt;br /&gt;
注意：Flash中音乐文件不能超过4M，因此显屏中只有Music Num：1-4号有歌曲，5-9号歌曲还是上一首歌。如果想要增加歌曲，则使用第一种方法即音乐存入MicroSD卡&lt;br /&gt;
[[File:Musicdl2.jpg||600px|center]]&lt;br /&gt;
打开后点击返回“更新下载”，点击“更新”，点击更新，更新时间较长，请耐心等待&lt;br /&gt;
[[File:Musicdl3.jpg||600px|center]]&lt;br /&gt;
当现显示“校验成功”后，拷贝音乐就成功了。&lt;br /&gt;
注意：校验成功后直接关闭窗口，不要再点击更新，否则又要重新更新&lt;br /&gt;
*使用TF卡存储音乐（容量随TF卡大小变化）&lt;br /&gt;
将Audio&amp;amp;Shield模块通过USB数据线连接到电脑，此时会识别出一个CD驱动一个可移动磁盘。双击可移动磁盘&lt;br /&gt;
[[File:TF步骤1.png||600px|center]]&lt;br /&gt;
点击鼠标右键新建文件夹，命名为01(如需要多个可继续命名为02,03以此类推)&lt;br /&gt;
[[File:TF步骤2.jpg||600px|center]]&lt;br /&gt;
之后将音乐存储进文件夹01中即可&lt;br /&gt;
[[File:TF步骤3.jpg||600px|center]]&lt;br /&gt;
&lt;br /&gt;
==组装==&lt;br /&gt;
如图，请点击查看大图并对应步骤进行拼装&lt;br /&gt;
*'''Step1''':首先将A1与OLED显示屏用螺丝钉和螺帽固定，再将传感器连接线接入OLED背面的接口&lt;br /&gt;
[[File:Musicstep1.jpg||600px|center]]&lt;br /&gt;
*'''Step2''':将D1和C2分别插入B1接口&lt;br /&gt;
[[File:Musicstep2.jpg||600px|center]]&lt;br /&gt;
*'''Step3''':将音响嵌入如图位置，再将A1和B1用D3拼装起来&lt;br /&gt;
[[File:Musicstep3.jpg||600px|center]]&lt;br /&gt;
*'''Step4''':将音响嵌入如图位置，再将A1和B1用D3和D2拼装起来&lt;br /&gt;
[[File:Musicstep4.jpg||600px|center]]&lt;br /&gt;
*'''Step5''':将C1与A1和B1进行合并,并将Core,USBTTL,Audio&amp;amp;Shield,Amplifier,Audio叠加在一起，插在底板上，并用D4固定&lt;br /&gt;
[[File:Musicstep5.jpg||600px|center]]&lt;br /&gt;
*'''Step6''':将传感器线和音响线接入模块底板相应位置,再使用USB线接到USBTTL模块上&lt;br /&gt;
[[File:Musicstep6.jpg||600px|center]]&lt;br /&gt;
至此音乐盒拼装完成&lt;br /&gt;
&lt;br /&gt;
==注意事项==&lt;br /&gt;
1. 如果发生：只能增加音量不能减少音量，只能增加歌曲号不能减少歌曲号，或反之。&lt;br /&gt;
原因：uiStep()中阈值设定不合理。&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|波轮动作||A6实测电压(V)||对应编码(电压/5*1023)||阈值设定&lt;br /&gt;
|-&lt;br /&gt;
|Default||3.3||675.18||&amp;gt;600&lt;br /&gt;
|-&lt;br /&gt;
|向下 ||0||0||0~50&lt;br /&gt;
|-&lt;br /&gt;
|向左||1.6||327.36||150~400&lt;br /&gt;
|-&lt;br /&gt;
|向右 ||2.6||531.96||450~600&lt;br /&gt;
|}&lt;br /&gt;
在uiSetup中更改阈值设定&lt;br /&gt;
==程序说明==&lt;br /&gt;
&lt;br /&gt;
CardPlayer.ino&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;audio.h&amp;quot;&lt;br /&gt;
#include &amp;quot;JQ6500.h&amp;quot;&lt;br /&gt;
#include &amp;quot;JQ6500_def.h&amp;quot;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
#include &amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
//定义蓝牙通信串口&lt;br /&gt;
SoftwareSerial mySerial(2, 3); // RX, TX&lt;br /&gt;
#define VOICE mySerial  &lt;br /&gt;
JQ6500 AUDIO(&amp;amp;VOICE);         //声明audio类&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define PIN_key A0	//灰度传感器输入引脚&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#define PIN 6			//Lantern灯引脚&lt;br /&gt;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
#define music_num_MIN 1		//歌曲最小数，固定&lt;br /&gt;
#define music_num_MAX 10	//歌曲最大数，可改&lt;br /&gt;
&lt;br /&gt;
int music_vol=26;  //初始音量0~30&lt;br /&gt;
&lt;br /&gt;
//---------------------------------&lt;br /&gt;
boolean music_status = false;	//歌曲播放状态&lt;br /&gt;
int music_num = 1;				//歌曲序号&lt;br /&gt;
&lt;br /&gt;
void setup() &lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  strip.begin();	//初始化LED&lt;br /&gt;
  strip.show(); // Initialize all pixels to 'off'&lt;br /&gt;
&lt;br /&gt;
  colorWipe(strip.Color(0, 255, 200), 10);	//初始化颜色 R,G,B&lt;br /&gt;
&lt;br /&gt;
   AUDIO.init(DEVICE_TF,MODE_FOL,music_vol);		//初始化mp3模块&lt;br /&gt;
   AUDIO.pause();									//暂停播放&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
unsigned long time1,time2;&lt;br /&gt;
&lt;br /&gt;
#define paper_val_MIN 100		//黑白传感器触发小值&lt;br /&gt;
#define paper_val_MAX 600		//黑白传感器触发大值&lt;br /&gt;
boolean paper_sta=false;&lt;br /&gt;
int paper_num=0;				//纸张格数&lt;br /&gt;
&lt;br /&gt;
int LED_vol_sta=0;	//LED呼吸灯反转&lt;br /&gt;
int LED_vol=0;		//LED呼吸灯值&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boolean key=HIGH;			//按键&lt;br /&gt;
boolean key_cache=LOW;		//检测按键松开缓存&lt;br /&gt;
&lt;br /&gt;
boolean vokey(boolean _vokey)&lt;br /&gt;
{&lt;br /&gt;
  key=analogRead(PIN_key)&amp;lt;paper_val_MIN;	//触发时&lt;br /&gt;
&lt;br /&gt;
  switch(_vokey)&lt;br /&gt;
  {&lt;br /&gt;
  case 0:&lt;br /&gt;
    if(!key &amp;amp;&amp;amp; key_cache)		//按下松开后&lt;br /&gt;
    {&lt;br /&gt;
      key_cache=key;		//缓存作判断用&lt;br /&gt;
      return true;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      key_cache=key;		//缓存作判断用&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    break;&lt;br /&gt;
  case 1:&lt;br /&gt;
    if(key &amp;amp;&amp;amp; !key_cache)		//按下松开后&lt;br /&gt;
    {&lt;br /&gt;
      key_cache=key;		//缓存作判断用&lt;br /&gt;
      return true;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      key_cache=key;		//缓存作判断用&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() &lt;br /&gt;
{&lt;br /&gt;
  if(vokey(0))		//触发时&lt;br /&gt;
  {&lt;br /&gt;
    colorWipe(strip.Color(255, 255, 0), 10);&lt;br /&gt;
    paper_num++;	//计数&lt;br /&gt;
    // Serial.print(&amp;quot;+&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    paper_sta=true;	//读取模式&lt;br /&gt;
&lt;br /&gt;
    time1=millis();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(millis()-time1&amp;gt;1000 &amp;amp;&amp;amp; paper_num!=0)	//触发，并且闲置超过一秒，结束扫描&lt;br /&gt;
  {&lt;br /&gt;
     AUDIO.choose(paper_num);	//播放扫描歌曲&lt;br /&gt;
    Serial.println(paper_num);&lt;br /&gt;
    AUDIO.play();&lt;br /&gt;
    //Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    //Serial.print(&amp;quot;num:&amp;quot;);&lt;br /&gt;
    //Serial.print(paper_num);&lt;br /&gt;
    paper_num=0;		//归零 等待下次扫描&lt;br /&gt;
&lt;br /&gt;
    paper_sta=false;	//读取模式结束&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(!paper_sta)		//非读取模式，LED呼吸&lt;br /&gt;
  {&lt;br /&gt;
    if(LED_vol&amp;gt;=255)&lt;br /&gt;
    {&lt;br /&gt;
      LED_vol_sta=1;&lt;br /&gt;
    }&lt;br /&gt;
    if(LED_vol&amp;lt;=0) &lt;br /&gt;
    {&lt;br /&gt;
      LED_vol_sta=0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(!LED_vol_sta)&lt;br /&gt;
    {&lt;br /&gt;
      LED_vol+=4;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      LED_vol-=4;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    colorWipe(strip.Color(LED_vol, 0, 0), 10);		//呼吸灯显示亮度&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Fill the dots one after the other with a color&lt;br /&gt;
void colorWipe(uint32_t c, uint8_t wait) {&lt;br /&gt;
  for(uint16_t i=0; i&amp;lt;strip.numPixels(); i++) {&lt;br /&gt;
    strip.setPixelColor(i, c);&lt;br /&gt;
    strip.show();&lt;br /&gt;
    delay(wait);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Audio.h&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;arduino.h&amp;quot;&lt;br /&gt;
#include &amp;lt;EEPROM.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EEPROM_write(address, p) {int i = 0; byte *pp = (byte*)&amp;amp;(p);for(; i &amp;lt; sizeof(p); i++) EEPROM.write(address+i, pp[i]);}&lt;br /&gt;
#define EEPROM_read(address, p)  {int i = 0; byte *pp = (byte*)&amp;amp;(p);for(; i &amp;lt; sizeof(p); i++) pp[i]=EEPROM.read(address+i);}&lt;br /&gt;
&lt;br /&gt;
struct config_type&lt;br /&gt;
{&lt;br /&gt;
  int EEPROM_music_mode;&lt;br /&gt;
  int EEPROM_music_vol;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
config_type config;      // 定义结构变量config，并定义config的内容&lt;br /&gt;
&lt;br /&gt;
void eeprom_WRITE(int mode, int vol)&lt;br /&gt;
{&lt;br /&gt;
  config_type config;      // 定义结构变量config，并定义config的内容&lt;br /&gt;
  config.EEPROM_music_mode=mode;&lt;br /&gt;
  config.EEPROM_music_vol=vol;&lt;br /&gt;
&lt;br /&gt;
  EEPROM_write(0, config);  // 变量config存储到EEPROM，地址0写入&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
config_type eeprom_READ()&lt;br /&gt;
{&lt;br /&gt;
  config_type config_readback;&lt;br /&gt;
  EEPROM_read(0, config_readback);&lt;br /&gt;
  return config_readback;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
JQ6500.cpp&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// &lt;br /&gt;
// JQ6500 audio library for Arduino&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;JQ6500.h&amp;quot;&lt;br /&gt;
#include &amp;quot;JQ6500_def.h&amp;quot;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JQ6500::JQ6500(SoftwareSerial *ser) {&lt;br /&gt;
    common_init();&lt;br /&gt;
	audioSwSerial = ser;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
JQ6500::JQ6500(HardwareSerial *ser) {&lt;br /&gt;
    common_init();&lt;br /&gt;
	audioHwSerial = ser;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::common_init(void){&lt;br /&gt;
	audioSwSerial = NULL;&lt;br /&gt;
	audioHwSerial = NULL;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::begin(uint16_t baud){&lt;br /&gt;
	if(audioSwSerial) audioSwSerial-&amp;gt;begin(baud);&lt;br /&gt;
	else			  audioHwSerial-&amp;gt;begin(baud);&lt;br /&gt;
	delay(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::sendCommand(uint8_t cmd, uint8_t *buf, uint16_t len){&lt;br /&gt;
	sendBuffer[0] = STX;&lt;br /&gt;
	sendBuffer[1] = len+2;&lt;br /&gt;
	sendBuffer[2] = cmd;&lt;br /&gt;
	if(len &amp;gt; 0)&lt;br /&gt;
		memcpy(sendBuffer+3, buf, len);&lt;br /&gt;
	sendBuffer[len+3] = ETX;&lt;br /&gt;
	if(audioSwSerial)&lt;br /&gt;
		audioSwSerial-&amp;gt;write(sendBuffer, 4+len);&lt;br /&gt;
	else&lt;br /&gt;
		audioHwSerial-&amp;gt;write(sendBuffer, 4+len);&lt;br /&gt;
	delay(100);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::next(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_NEXT, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::prev(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_PREV, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::choose(uint16_t num){&lt;br /&gt;
	cmdBuffer[0] = num&amp;gt;&amp;gt;8;&lt;br /&gt;
	cmdBuffer[1] = num&amp;amp;0x00FF;&lt;br /&gt;
	sendCommand(CMD_CHOOSE, cmdBuffer, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::volUp(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_UP, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::volDown(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_DOWN, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::volumn(uint8_t vol){&lt;br /&gt;
	cmdBuffer[0] = vol;&lt;br /&gt;
	sendCommand(CMD_VOL, cmdBuffer, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::eq(uint8_t eq){&lt;br /&gt;
	cmdBuffer[0] = eq;&lt;br /&gt;
	sendCommand(CMD_EQ, cmdBuffer, 1);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::setDevice(uint8_t device){&lt;br /&gt;
	cmdBuffer[0] = device;&lt;br /&gt;
	sendCommand(CMD_DEVICE, cmdBuffer, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::sleep(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_SLEEP, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::reset(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_RESET, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::play(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_PLAY, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::pause(){&lt;br /&gt;
	&lt;br /&gt;
	sendCommand(CMD_PAUSE, NULL, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::folder(uint8_t temp){&lt;br /&gt;
	cmdBuffer[0] = temp;&lt;br /&gt;
	sendCommand(CMD_FOLDER, cmdBuffer, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::setMode(uint8_t temp){&lt;br /&gt;
	cmdBuffer[0] = temp;&lt;br /&gt;
	sendCommand(CMD_MODE, cmdBuffer, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::chooseFile(uint8_t folder, uint8_t file){&lt;br /&gt;
	cmdBuffer[0] = folder;&lt;br /&gt;
	cmdBuffer[1] = file;&lt;br /&gt;
	sendCommand(CMD_FILE, cmdBuffer, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void JQ6500::init(uint8_t device, uint8_t mode, uint8_t vol){&lt;br /&gt;
	begin(9600);&lt;br /&gt;
	delay(300);&lt;br /&gt;
	reset();&lt;br /&gt;
	setDevice(device);&lt;br /&gt;
	setMode(mode);&lt;br /&gt;
	volumn(vol);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::dataParse(){&lt;br /&gt;
	uint16_t sum = 0;&lt;br /&gt;
	uint8_t temp;&lt;br /&gt;
	if(audioSwSerial){&lt;br /&gt;
		while(audioSwSerial-&amp;gt;available()){&lt;br /&gt;
			temp = char(audioSwSerial-&amp;gt;read());&lt;br /&gt;
			if(temp&amp;gt;47&amp;amp;&amp;amp;temp&amp;lt;58){&lt;br /&gt;
				temp -=48;  &lt;br /&gt;
			}else if(temp&amp;gt;96&amp;amp;&amp;amp;temp&amp;lt;103){&lt;br /&gt;
				temp -=87;  &lt;br /&gt;
			}&lt;br /&gt;
			sum = sum*16+temp; &lt;br /&gt;
		}&lt;br /&gt;
	}else{&lt;br /&gt;
		while(audioHwSerial-&amp;gt;available()){&lt;br /&gt;
			temp = char(audioHwSerial-&amp;gt;read());&lt;br /&gt;
			if(temp&amp;gt;47&amp;amp;&amp;amp;temp&amp;lt;58){&lt;br /&gt;
				temp -=48;  &lt;br /&gt;
			}else if(temp&amp;gt;96&amp;amp;&amp;amp;temp&amp;lt;103){&lt;br /&gt;
				temp -=87;  &lt;br /&gt;
			}&lt;br /&gt;
			sum = sum*16+temp; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return sum;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryNum(uint8_t cmd){&lt;br /&gt;
	if(audioSwSerial)&lt;br /&gt;
		audioSwSerial-&amp;gt;flush();&lt;br /&gt;
	else&lt;br /&gt;
		audioHwSerial-&amp;gt;flush();&lt;br /&gt;
	sendCommand(cmd, NULL, 0);	&lt;br /&gt;
    delay(100);	&lt;br /&gt;
	return dataParse();	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryTF(){&lt;br /&gt;
	return queryNum(QUERY_TF);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryTFFile(){&lt;br /&gt;
    return queryNum(QUERY_TF_FILE);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryFlash(){&lt;br /&gt;
    return queryNum(QUERY_FLASH);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryFlashFile(){&lt;br /&gt;
    return queryNum(QUERY_FLASH_FILE);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryTotalTime(){	&lt;br /&gt;
    return queryNum(QUERY_TTIME);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint16_t JQ6500::queryPlayTime(){&lt;br /&gt;
    return queryNum(QUERY_PTIME);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
String JQ6500::queryName(){&lt;br /&gt;
	String nameCache = &amp;quot;&amp;quot;;&lt;br /&gt;
	char temp;&lt;br /&gt;
	uint16_t i = 0;&lt;br /&gt;
	if(audioSwSerial)&lt;br /&gt;
		audioSwSerial-&amp;gt;flush();&lt;br /&gt;
	else&lt;br /&gt;
		audioHwSerial-&amp;gt;flush();&lt;br /&gt;
	sendCommand(QUERY_NAME, NULL, 0);	&lt;br /&gt;
    delay(100);&lt;br /&gt;
	if(audioSwSerial){&lt;br /&gt;
		while(audioSwSerial-&amp;gt;available()){&lt;br /&gt;
			temp = audioSwSerial-&amp;gt;read();&lt;br /&gt;
			nameCache += temp;&lt;br /&gt;
			if(temp == 32){&lt;br /&gt;
				i++;	&lt;br /&gt;
			}else{&lt;br /&gt;
				i = 0;&lt;br /&gt;
			}&lt;br /&gt;
			if(i &amp;gt;= 3){&lt;br /&gt;
				i = 0;&lt;br /&gt;
				nameCache.replace(&amp;quot;   &amp;quot;, &amp;quot;.&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}else{&lt;br /&gt;
		while(audioHwSerial-&amp;gt;available()){&lt;br /&gt;
			temp = audioHwSerial-&amp;gt;read();&lt;br /&gt;
			nameCache += temp;&lt;br /&gt;
			if(temp == 32){&lt;br /&gt;
				i++;	&lt;br /&gt;
			}else{&lt;br /&gt;
				i = 0;&lt;br /&gt;
			}&lt;br /&gt;
			if(i &amp;gt;= 3){&lt;br /&gt;
				i = 0;&lt;br /&gt;
				nameCache.replace(&amp;quot;   &amp;quot;, &amp;quot;.&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return nameCache;	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// END OF FILE&lt;br /&gt;
//&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
JQ6500.h&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// &lt;br /&gt;
// JQ6500 audio library for Arduino&lt;br /&gt;
// VERSION: 0.1.0&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
#ifndef __JQ6500_H__&lt;br /&gt;
#define __JQ6500_H__&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#define AUDIO_VERSION &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define STX 0x7E&lt;br /&gt;
#define ETX 0xEF&lt;br /&gt;
&lt;br /&gt;
#define CMD_NEXT    0x01&lt;br /&gt;
#define CMD_PREV    0x02&lt;br /&gt;
#define CMD_CHOOSE  0x03&lt;br /&gt;
#define CMD_UP      0x04&lt;br /&gt;
#define CMD_DOWN    0x05&lt;br /&gt;
#define CMD_VOL     0x06&lt;br /&gt;
#define CMD_EQ      0x07&lt;br /&gt;
#define CMD_DEVICE  0x09&lt;br /&gt;
#define CMD_SLEEP   0x0A&lt;br /&gt;
#define CMD_RESET   0x0C&lt;br /&gt;
#define CMD_PLAY    0x0D&lt;br /&gt;
#define CMD_PAUSE   0x0E&lt;br /&gt;
#define CMD_FOLDER  0x0F&lt;br /&gt;
#define CMD_MODE    0x11&lt;br /&gt;
#define CMD_FILE    0x12&lt;br /&gt;
&lt;br /&gt;
#define QUERY_STA   	0x42&lt;br /&gt;
#define QUERY_VOL   	0x43&lt;br /&gt;
#define QUERY_EQ    	0x44&lt;br /&gt;
#define QUERY_MODE  	0x45&lt;br /&gt;
#define QUERY_VERSION 	0x46&lt;br /&gt;
#define QUERY_TF    	0x47&lt;br /&gt;
#define QUERY_DISK  	0x48&lt;br /&gt;
#define QUERY_FLASH 	0x49&lt;br /&gt;
#define QUERY_TF_FILE 	0x4B&lt;br /&gt;
#define QUERY_DISK_FILE 0x4C&lt;br /&gt;
#define QUERY_FLASH_FILE	0x4D&lt;br /&gt;
#define QUERY_PTIME 	0x50&lt;br /&gt;
#define QUERY_TTIME 	0x51&lt;br /&gt;
#define QUERY_NAME  	0x52&lt;br /&gt;
#define QUERY_FILES 	0x53&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class JQ6500{&lt;br /&gt;
public:&lt;br /&gt;
	JQ6500(SoftwareSerial *ser);&lt;br /&gt;
	JQ6500(HardwareSerial *ser);&lt;br /&gt;
	&lt;br /&gt;
	void begin(uint16_t baud);&lt;br /&gt;
	void next();&lt;br /&gt;
	void prev();&lt;br /&gt;
	void choose(uint16_t num);&lt;br /&gt;
	void volUp();&lt;br /&gt;
	void volDown();&lt;br /&gt;
	void volumn(uint8_t vol);&lt;br /&gt;
	void eq(uint8_t eq);&lt;br /&gt;
	void setDevice(uint8_t device);&lt;br /&gt;
	void sleep();&lt;br /&gt;
	void reset();&lt;br /&gt;
	void play();&lt;br /&gt;
	void pause();&lt;br /&gt;
	void folder(uint8_t temp);&lt;br /&gt;
	void setMode(uint8_t temp);&lt;br /&gt;
	void chooseFile(uint8_t folder, uint8_t file);&lt;br /&gt;
	void init(uint8_t device, uint8_t mode, uint8_t vol);&lt;br /&gt;
	&lt;br /&gt;
	uint16_t queryTF();&lt;br /&gt;
	uint16_t queryTFFile();&lt;br /&gt;
	uint16_t queryFlash();&lt;br /&gt;
	uint16_t queryFlashFile();&lt;br /&gt;
	uint16_t queryTotalTime();&lt;br /&gt;
	uint16_t queryPlayTime();&lt;br /&gt;
	String queryName();&lt;br /&gt;
	&lt;br /&gt;
private:&lt;br /&gt;
	uint8_t sendBuffer[8];&lt;br /&gt;
	uint8_t cmdBuffer[8];&lt;br /&gt;
&lt;br /&gt;
	SoftwareSerial *audioSwSerial;&lt;br /&gt;
	HardwareSerial *audioHwSerial;&lt;br /&gt;
  &lt;br /&gt;
	void common_init(void);&lt;br /&gt;
	void sendCommand(uint8_t cmd, uint8_t *buf, uint16_t len);&lt;br /&gt;
	uint16_t dataParse();&lt;br /&gt;
	uint16_t queryNum(uint8_t cmd);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
//&lt;br /&gt;
// END OF FILE&lt;br /&gt;
//&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
JQ6500_def&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// &lt;br /&gt;
// AM2321 Temperature &amp;amp; Humidity Sensor library for Arduino&lt;br /&gt;
// VERSION: 0.1.0&lt;br /&gt;
//&lt;br /&gt;
// The MIT License (MIT)&lt;br /&gt;
//&lt;br /&gt;
// Copyright (c) 2013 Wang Dong&lt;br /&gt;
//&lt;br /&gt;
// Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
// of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
// in the Software without restriction, including without limitation the rights&lt;br /&gt;
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
// copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
// furnished to do so, subject to the following conditions:&lt;br /&gt;
//&lt;br /&gt;
// The above copyright notice and this permission notice shall be included in&lt;br /&gt;
// all copies or substantial portions of the Software.&lt;br /&gt;
//&lt;br /&gt;
// THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
// THE SOFTWARE.&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
#ifndef __JQ6500_DEF_H__&lt;br /&gt;
#define __JQ6500_DEF_H__&lt;br /&gt;
&lt;br /&gt;
#define EQ_NORMAL    	0x00&lt;br /&gt;
#define EQ_POP    		0x01&lt;br /&gt;
#define EQ_ROCK  		0x02&lt;br /&gt;
#define EQ_JAZZ      	0x03&lt;br /&gt;
#define EQ_CLASSIC    	0x04&lt;br /&gt;
#define EQ_BASE			0x05&lt;br /&gt;
&lt;br /&gt;
#define DEVICE_U    	0x00&lt;br /&gt;
#define DEVICE_TF    	0x01&lt;br /&gt;
#define DEVICE_AUX  	0x02&lt;br /&gt;
#define DEVICE_SLEEP    0x03&lt;br /&gt;
#define DEVICE_FLASH    0x04&lt;br /&gt;
&lt;br /&gt;
#define MODE_ALL		0x00&lt;br /&gt;
#define MODE_FOL		0x01&lt;br /&gt;
#define MODE_ONE		0x02&lt;br /&gt;
#define MODE_RAM		0x03&lt;br /&gt;
#define	MODE_ONE_STOP	0x04&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
//&lt;br /&gt;
// END OF FILE&lt;br /&gt;
//&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==视频==&lt;/div&gt;</summary>
		<author><name>502748957@qq.com</name></author>	</entry>

	</feed>