<?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=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8</id>
		<title>第三课：输入设备的使用 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8&amp;action=history"/>
		<updated>2026-04-30T21:39:26Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=20725&amp;oldid=prev</id>
		<title>2017年6月8日 (四) 07:25 Zhangfengfeng</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=20725&amp;oldid=prev"/>
				<updated>2017-06-08T07:25:58Z</updated>
		
		<summary type="html">&lt;p&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;2017年6月8日 (四) 07:25的版本&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-l72&quot; &gt;第72行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第72行：&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;PIR的程序和第一个开关使用的程序完全一样，试着套用一下，实现一个PIR控制的灯，有人经过灯就会亮&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;PIR的程序和第一个开关使用的程序完全一样，试着套用一下，实现一个PIR控制的灯，有人经过灯就会亮&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;=光敏传感器=&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/ins&gt;=光敏传感器&lt;ins class=&quot;diffchange diffchange-inline&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;div&gt;光敏传感器传回的是模拟信号，即光线变化的一组数字，可以利用这些数字实现相应的控制。&amp;lt;br&amp;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;光敏传感器传回的是模拟信号，即光线变化的一组数字，可以利用这些数字实现相应的控制。&amp;lt;br&amp;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;[[File:Light signal.png]]&amp;lt;br&amp;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;[[File:Light signal.png]]&amp;lt;br&amp;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;=声音传感器=&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/ins&gt;=声音传感器&lt;ins class=&quot;diffchange diffchange-inline&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;div&gt;声音传感器与光敏传感器类似，也是返回一段声音变化的模拟信号，可以利用这个变化做应用&amp;lt;br&amp;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;声音传感器与光敏传感器类似，也是返回一段声音变化的模拟信号，可以利用这个变化做应用&amp;lt;br&amp;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;[[File:MIC signal.png]]&amp;lt;br&amp;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;[[File:MIC signal.png]]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Zhangfengfeng</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=20715&amp;oldid=prev</id>
		<title>Zhangfengfeng：创建页面，内容为“=碰撞开关= 碰撞开关是最常用的输入设备之一，其原理也十分简单，当开关按下时，信号读取为0，当抬起时，读取为1，当使...”</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E8%AF%BE%EF%BC%9A%E8%BE%93%E5%85%A5%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=20715&amp;oldid=prev"/>
				<updated>2017-06-08T07:19:48Z</updated>
		
		<summary type="html">&lt;p&gt;创建页面，内容为“=碰撞开关= 碰撞开关是最常用的输入设备之一，其原理也十分简单，当开关按下时，信号读取为0，当抬起时，读取为1，当使...”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=碰撞开关=&lt;br /&gt;
碰撞开关是最常用的输入设备之一，其原理也十分简单，当开关按下时，信号读取为0，当抬起时，读取为1，当使用起来时则可以实现很多变化。&lt;br /&gt;
===碰撞开关的使用——利用开关实践选择结构===&lt;br /&gt;
[[File:Crash usage.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
开关使用的基本原理是：当开关弹起时，程序读取到的值是1，当开关按下时，读取到的值是0。&amp;lt;br&amp;gt;&lt;br /&gt;
因此，如果要设计一个控制灯开关的程序，应该怎么写呢？&lt;br /&gt;
===编程===&lt;br /&gt;
  #include&amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
  #define LED_Pin 6&lt;br /&gt;
  #define LED_Num 2&lt;br /&gt;
  #define Key_Pin 8 //定义开关的引脚为8&lt;br /&gt;
  Adafruit_NeoPixel ColorLED=Adafruit_NeoPixel(LED_Num, Led_Pin, NEO_GRB+NEO_KHZ800);&lt;br /&gt;
  void setup(){&lt;br /&gt;
  ColorLED.begin();&lt;br /&gt;
  pinMode(Key_Pin,INPUT); //定义开关的引脚为输入状态&lt;br /&gt;
  }&lt;br /&gt;
  void loop(){&lt;br /&gt;
  int KEY=digitalRead(PIN_Key); //定义一个整数变量KEY，同时让KEY的值等于读取到的开关引脚的值。digitalRead（a）也是Arduino的基本语句，意思是读取”a“引脚上的数字信号值。&lt;br /&gt;
  if(KEY==0){&lt;br /&gt;
  ColorLED.setPixelColor(0, ColorLED.Color(255,0,0));&lt;br /&gt;
  ColorLED.show(); //这段就是选择结构最基本的形式，”if“如果括号里的条件成立，则执行{}中的命令，在这段代码中，即当KEY的值等于0，也就是开关按下的时候，灯亮。其中”==“左右两边的值相等，而”=“只是将右边的值赋给了左边，并不是真正意义的等于。&lt;br /&gt;
  }else{&lt;br /&gt;
  ColorLED.setPixelColro(0,ColorLED.Color(255,0,0));&lt;br /&gt;
  ColorLED.show(); //如果不满足”if“条件，就执行”else“后面{}中的程序，在当前程序中即关灯。因为KEY只有等于0或1两种情况，所以else后面就不再写KEY==1了。&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
===动手时间===&lt;br /&gt;
试着用开关实现两种灯的切换，抬起时第一个灯亮，第二个灯灭，按下时反过来&lt;br /&gt;
===其他用法===&lt;br /&gt;
碰撞开关由于会自动回复到弹起的状态，在实际使用中，也可以当作按钮来使用&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Crash button.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Microduino定义了一个库文件，可以检测到碰撞开关是否被按下（press）过，但只记录按下的那一瞬间，而不是一个持续的过程。&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Crash switch.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
这样，就可以实现按一下执行命令A（比如开灯），再按一下执行命令B（比如关灯），但程序怎么判断是第几次按开关呢？&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Crash judgement.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
因此我们需要引入一个布尔变量来记录开关被按的状态，布尔变量只有true和false两个值，每当开关按下时，这个布尔变量就翻转一次。&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Crash boolean.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
然后再定义，当布尔值为真的时候亮灯，反之则关灯，这样就实现切换控制了。具体代码如下：&lt;br /&gt;
  #include&amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
  #include&amp;lt;Microduino_Key.h&amp;gt; //调用碰撞开关库文件&lt;br /&gt;
  #define PIN_LED 6&lt;br /&gt;
  #define PIN_NUM 2&lt;br /&gt;
  #define PIN_Key 8&lt;br /&gt;
  Key KeyA(PIN_Key,INPUT_PULLUP); //定义开关名称为KeyA,以及开关引脚和模式&lt;br /&gt;
  Adafruit_NeoPixel ColorLED=Adafruit_NeoPixel(LED_NUM, PIN_LED, NEO_GRB+NEO_KHZ800);&lt;br /&gt;
  boolean sta=false; //定义一个布尔变量sta，初始状态为假&lt;br /&gt;
  void setup(){&lt;br /&gt;
  ColorLED.begin();&lt;br /&gt;
  pinMode(PIN_Key,INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  void loop(){&lt;br /&gt;
  if(KeyA.read(PRESS)){ //当开关读取到按下的状态时，反转布尔值，其中”名称.read(PRESS)“是开关使用的语法，这段代码只检测是否按过，而不是按下去的状态&lt;br /&gt;
  sta=!sta; //布尔值反转用”！“表示&lt;br /&gt;
  }&lt;br /&gt;
  if(sta){ //当布尔值sta为真时，灯亮&lt;br /&gt;
  ColroLED.setPixelColor(0, ColorLED.Color(255,0,0));&lt;br /&gt;
  ColroLED.show();&lt;br /&gt;
  }else{ //否则，也就是当sta值为假的时候，灯灭&lt;br /&gt;
  ColorLED.setPixelColor(0,ColorLED.Color(0,0,0));&lt;br /&gt;
  ColorLED.show();&lt;br /&gt;
  }delay(15); //由于单片机运行速度太快，导致程序判断时可能会出错，所以整体延时15毫秒，让它稍微放慢一些&lt;br /&gt;
  }&lt;br /&gt;
===动手时间===&lt;br /&gt;
尝试用开关控制两个灯，按一下第一个灯亮，再按一下第二个灯亮&amp;lt;br&amp;gt;&lt;br /&gt;
更进一步，如果要实现多个命令的切换，应该怎么处理呢？&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Crash extension.png]]&lt;br /&gt;
=其他输入设备=&lt;br /&gt;
==人体红外传感器==&lt;br /&gt;
人体红外传感器返回的是数字信号，通过选择结构可以实现类似开关的功能。&amp;lt;br&amp;gt;&lt;br /&gt;
当有人经过检测范围时，其信号值为0，而没有人的时候则为1，因此，人体红外传感器只能判断是否有人，而无法判断与人之间的距离。&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:PIR detection.png]]&lt;br /&gt;
===动手时间===&lt;br /&gt;
PIR的程序和第一个开关使用的程序完全一样，试着套用一下，实现一个PIR控制的灯，有人经过灯就会亮&lt;br /&gt;
=光敏传感器=&lt;br /&gt;
光敏传感器传回的是模拟信号，即光线变化的一组数字，可以利用这些数字实现相应的控制。&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Light signal.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
模拟信号是一组不断变化的数字，可以通过串口监视器观察数值的变化&lt;br /&gt;
=声音传感器=&lt;br /&gt;
声音传感器与光敏传感器类似，也是返回一段声音变化的模拟信号，可以利用这个变化做应用&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:MIC signal.png]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhangfengfeng</name></author>	</entry>

	</feed>