<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arduino中国</title>
	<atom:link href="http://blog.flamingoeda.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flamingoeda.com</link>
	<description>Flamingo EDA</description>
	<lastBuildDate>Sat, 13 Aug 2011 11:41:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Arduino 电子积木 霍尔开关</title>
		<link>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e9%9c%8d%e5%b0%94%e5%bc%80%e5%85%b3/</link>
		<comments>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e9%9c%8d%e5%b0%94%e5%bc%80%e5%85%b3/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 11:38:27 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[接近开关]]></category>
		<category><![CDATA[霍尔元件]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=729</guid>
		<description><![CDATA[首先科普一下，当一块通有电流的金属或半导体薄片垂直地放在磁场中时，薄片的两端就会产生电位差，这种现象就称为霍尔效应。霍尔开关则是利用霍尔效应的一种传感器，它可以很方便的把磁信号转换成电信号，具有很高的可靠性和灵敏度。 在Arduino上使用霍尔开关比较简单，电路连接上只需要用专用的传感器连接线，将霍尔开关与传感器扩展板上的相应端口连接起来就可以了： 编程的话使用最简单的数字输入函数digitalRead()进行读取就可以了： int ledPin = 13; int switchPin = 19; int value = 0; void setup() { &#160;&#160;pinMode(switchPin, INPUT); &#160;&#160;pinMode(ledPin, OUTPUT); &#160;&#160;Serial.begin(9600); } void loop() { &#160;&#160;value&#160;=&#160;digitalRead(switchPin); &#160;&#160;if (HIGH == value) { &#160;&#160;&#160;&#160;digitalWrite(ledPin, HIGH); &#160;&#160;}&#160;else { &#160;&#160;&#160;&#160;digitalWrite(ledPin, LOW); &#160;&#160;} } 使用的时候当霍尔开关靠近磁铁的时候，从Arduino相应引脚读出来的值为高，而当霍尔开关远离磁铁的时候，从Arduino相应引脚读出来的值为低。另外这里介绍的霍尔开关模块属于单极性霍尔元件，所以只对磁铁的南极或者北极有响应，实验的时候如果发现不响应的话可以试着换磁铁的另一极使用噢;-) &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>首先科普一下，当一块通有电流的金属或半导体薄片垂直地放在磁场中时，薄片的两端就会产生电位差，这种现象就称为霍尔效应。霍尔开关则是利用霍尔效应的一种传感器，它可以很方便的把磁信号转换成电信号，具有很高的可靠性和灵敏度。</p>
<p><img class="aligncenter" title="hall" src="http://image.flamingoeda.com/albums/userpics/10002/febb_hall_1.JPG" alt="" width="460" height="345" />在Arduino上使用霍尔开关比较简单，电路连接上只需要用专用的传感器连接线，将霍尔开关与传感器扩展板上的相应端口连接起来就可以了：</p>
<p><img class="aligncenter" title="hall" src="http://image.flamingoeda.com/albums/userpics/10002/febb_hall_3.JPG" alt="" width="460" height="345" /></p>
<p>编程的话使用最简单的数字输入函数digitalRead()进行读取就可以了：</p>
<pre>
<span style="color: #CC6600;">int</span> ledPin = 13;
<span style="color: #CC6600;">int</span> switchPin = 19;
<span style="color: #CC6600;">int</span> value = 0; 

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span>() {
&nbsp;&nbsp;<span style="color: #CC6600;">pinMode</span>(switchPin, <span style="color: #006699;">INPUT</span>);
&nbsp;&nbsp;<span style="color: #CC6600;">pinMode</span>(ledPin, <span style="color: #006699;">OUTPUT</span>);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">begin</span>(9600);
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span>() {
&nbsp;&nbsp;value&nbsp;=&nbsp;<span style="color: #CC6600;">digitalRead</span>(switchPin);
&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (<span style="color: #006699;">HIGH</span> == value) {
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">digitalWrite</span>(ledPin, <span style="color: #006699;">HIGH</span>);
&nbsp;&nbsp;}&nbsp;<span style="color: #CC6600;">else</span> {
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">digitalWrite</span>(ledPin, <span style="color: #006699;">LOW</span>);
&nbsp;&nbsp;}
}
</pre>
<p>使用的时候当霍尔开关靠近磁铁的时候，从Arduino相应引脚读出来的值为高，而当霍尔开关远离磁铁的时候，从Arduino相应引脚读出来的值为低。另外这里介绍的霍尔开关模块属于单极性霍尔元件，所以只对磁铁的南极或者北极有响应，实验的时候如果发现不响应的话可以试着换磁铁的另一极使用噢;-)</p>
<p><img class="aligncenter" title="hall" src="http://image.flamingoeda.com/albums/userpics/10002/febb_hall_4.JPG" alt="" width="460" height="345" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e9%9c%8d%e5%b0%94%e5%bc%80%e5%85%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 4位7段数码管</title>
		<link>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e4%bd%8d7%e6%ae%b5%e6%95%b0%e7%a0%81%e7%ae%a1/</link>
		<comments>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e4%bd%8d7%e6%ae%b5%e6%95%b0%e7%a0%81%e7%ae%a1/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 16:22:11 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[数码管]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=726</guid>
		<description><![CDATA[7段数码管可以用来很方便地显示0-9的数字以及，因此在一些电子制作中经常被使用到。7段数码管顾名思义其实就是由7个LED组成，它们一般按照共阴或者共阳的方式连接在一起，既然原理上这么简单，那么用Arduino来驱动7段数码管的方式自然就不言而喻了：分别将7个LED的引脚连接到Arduino的7个引脚上，然后通过给相应引脚置高或者置低的方式来控制7段数码管上显示出不同的数字来。可是仔细想想你会发现，通常Arduino上只有12个可以使用的数字引脚，如果驱动一个7段数码管就需要占用7个引脚，那驱动两个更者更多7段数码管的话，Arduino的引脚数目马上就告急了！这个时候你就可以考虑我们这里介绍的这个4路7段数码管的电子积木模块了:-) 这个4位7段数码管的模块采用专用的驱动芯片来控制数码管的各个引脚，并且使用I2C总线与Arduino进行连接，也就是说我们只需要用两根数据线就可以用Arduino来控制这一数码管模块了： 连接的方法很简单，只需要用专用的I2C连接线，将这一4位7段数码管与Arduino专用扩展板上的I2C端口连接起来就可以了： 同时注意将模块背面的RS开关设置到ON的位置，使能I2C引脚上的上拉电阻： 测试的时候可以使用如下的代码，该代码可以在数码管上循环显示0-9和a-f，同时还可以控制数码管上的小数点： #include&#160;"Wire.h" // enable I2C bus //byte&#160;saa1064&#160;=&#160;0x70&#160;&#62;&#62;&#160;1;&#160;//&#160;define&#160;the&#160;I2C&#160;bus&#160;address&#160;for&#160;our&#160;SAA1064&#160;(pin&#160;1&#160;to&#160;GND) byte saa1064 = 0x76 &#62;&#62; 1; // define the I2C bus address for our SAA1064 (pin 1 to VCC) int digits[16]={63, 6, 91, 79, 102, 109, 125,7, 127, 111, 119, 124, 57, 94, 121, 113}; //&#160;these&#160;are&#160;the&#160;byte&#160;representations&#160;of&#160;pins&#160;required&#160;to&#160;display&#160;each&#160;digit&#160;0~9&#160;then&#160;A~F void setup() { &#160;&#160;Wire.begin(); // start up I2C [...]]]></description>
			<content:encoded><![CDATA[<p>7段数码管可以用来很方便地显示0-9的数字以及，因此在一些电子制作中经常被使用到。7段数码管顾名思义其实就是由7个LED组成，它们一般按照共阴或者共阳的方式连接在一起，既然原理上这么简单，那么用Arduino来驱动7段数码管的方式自然就不言而喻了：分别将7个LED的引脚连接到Arduino的7个引脚上，然后通过给相应引脚置高或者置低的方式来控制7段数码管上显示出不同的数字来。可是仔细想想你会发现，通常Arduino上只有12个可以使用的数字引脚，如果驱动一个7段数码管就需要占用7个引脚，那驱动两个更者更多7段数码管的话，Arduino的引脚数目马上就告急了！这个时候你就可以考虑我们这里介绍的这个4路7段数码管的电子积木模块了:-)</p>
<p><img class="aligncenter" title="7seg" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_3.JPG" alt="" width="460" height="345" /></p>
<p>这个4位7段数码管的模块采用专用的驱动芯片来控制数码管的各个引脚，并且使用I2C总线与Arduino进行连接，也就是说我们只需要用两根数据线就可以用Arduino来控制这一数码管模块了：</p>
<p><img class="aligncenter" title="7seg" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_2.JPG" alt="" width="460" height="345" /></p>
<p>连接的方法很简单，只需要用专用的I2C连接线，将这一4位7段数码管与Arduino专用扩展板上的I2C端口连接起来就可以了：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_8.JPG" alt="" width="460" height="345" /></p>
<p>同时注意将模块背面的RS开关设置到ON的位置，使能I2C引脚上的上拉电阻：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_7.JPG" alt="" width="230" height="173" /></p>
<p>测试的时候可以使用如下的代码，该代码可以在数码管上循环显示0-9和a-f，同时还可以控制数码管上的小数点：</p>
<pre>
#include&nbsp;<span style="color: #006699;">"Wire.h"</span>  <span style="color: #7E7E7E;">// enable I2C bus</span>

<span style="color: #7E7E7E;">//byte&nbsp;saa1064&nbsp;=&nbsp;0x70&nbsp;&gt;&gt;&nbsp;1;&nbsp;//&nbsp;define&nbsp;the&nbsp;I2C&nbsp;bus&nbsp;address&nbsp;for&nbsp;our&nbsp;SAA1064&nbsp;(pin&nbsp;1&nbsp;to&nbsp;GND)</span>
<span style="color: #CC6600;">byte</span> saa1064 = 0x76 &gt;&gt; 1; <span style="color: #7E7E7E;">// define the I2C bus address for our SAA1064 (pin 1 to VCC)</span>

<span style="color: #CC6600;">int</span> digits[16]={63, 6, 91, 79, 102, 109, 125,7, 127, 111, 119, 124, 57, 94, 121, 113};
<span style="color: #7E7E7E;">//&nbsp;these&nbsp;are&nbsp;the&nbsp;byte&nbsp;representations&nbsp;of&nbsp;pins&nbsp;required&nbsp;to&nbsp;display&nbsp;each&nbsp;digit&nbsp;0~9&nbsp;then&nbsp;A~F</span>

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span>()
{
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">begin</span>(); <span style="color: #7E7E7E;">// start up I2C bus</span>
&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(500);
&nbsp;&nbsp;initDisplay();
}

<span style="color: #CC6600;">void</span> initDisplay()
<span style="color: #7E7E7E;">//&nbsp;turns&nbsp;on&nbsp;dynamic&nbsp;mode&nbsp;and&nbsp;adjusts&nbsp;segment&nbsp;current&nbsp;to&nbsp;12mA</span>
{
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">beginTransmission</span>(saa1064);
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(<span style="color: #006699;">B00000000</span>); <span style="color: #7E7E7E;">// this is the instruction byte. Zero means the next byte is the control byte</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(<span style="color: #006699;">B01000111</span>); <span style="color: #7E7E7E;">// control byte (dynamic mode on, digits 1+3 on, digits 2+4 on, 12mA segment current</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">endTransmission</span>();
}

<span style="color: #CC6600;">void</span> displayDigits()
<span style="color: #7E7E7E;">//&nbsp;show&nbsp;all&nbsp;digits&nbsp;0~9,&nbsp;A~F&nbsp;on&nbsp;all&nbsp;digits&nbsp;of&nbsp;display</span>
{
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> z=0; z&lt;16; z++)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">beginTransmission</span>(saa1064);
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(1); <span style="color: #7E7E7E;">// instruction byte - first digit to control is 1 (right hand side)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]); <span style="color: #7E7E7E;">// digit 1 (RHS)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]); <span style="color: #7E7E7E;">// digit 2</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]); <span style="color: #7E7E7E;">// digit 3</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]); <span style="color: #7E7E7E;">// digit 4 (LHS)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">endTransmission</span>();
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(500);
&nbsp;&nbsp;}

<span style="color: #7E7E7E;">//&nbsp;now&nbsp;repeat&nbsp;but&nbsp;with&nbsp;decimal&nbsp;point</span>

&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> z=0; z&lt;16; z++)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">beginTransmission</span>(saa1064);
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(1); <span style="color: #7E7E7E;">// instruction byte - first digit to control is 1 (right hand side)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]+128); <span style="color: #7E7E7E;">// digit 1 (RHS)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]+128); <span style="color: #7E7E7E;">// digit 2</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]+128); <span style="color: #7E7E7E;">// digit 3</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(digits[z]+128); <span style="color: #7E7E7E;">// digit 4 (LHS)</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">endTransmission</span>();
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(500);
&nbsp;&nbsp;}
}

<span style="color: #CC6600;">void</span> clearDisplay()
<span style="color: #7E7E7E;">//&nbsp;clears&nbsp;all&nbsp;digits</span>
{
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">beginTransmission</span>(saa1064);
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(1); <span style="color: #7E7E7E;">// instruction byte - first digit to control is 1 (right hand side)</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(0); <span style="color: #7E7E7E;">// digit 1 (RHS)</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(0); <span style="color: #7E7E7E;">// digit 2</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(0); <span style="color: #7E7E7E;">// digit 3</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">send</span>(0); <span style="color: #7E7E7E;">// digit 4 (LHS)</span>
&nbsp;&nbsp;<span style="color: #CC6600;">Wire</span>.<span style="color: #CC6600;">endTransmission</span>();
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span>()
{
&nbsp;&nbsp;displayDigits();
&nbsp;&nbsp;clearDisplay();
&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(1000);
}
</pre>
<p>运行结果如下图所示：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_9.JPG" alt="" width="460" height="345" /></p>
<p>由于该模块使用的是I2C接口，因此实际上也允许同时接入多个数码管模块，但必须对模块的地址进行设置。在数码管模块的背面有一个ADDR跳线，正是进行这一地址位设置的：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_4.JPG" alt="" width="230" height="173" /></p>
<p>设置的办法是用铬铁将中间的引脚分别与VCC或者GND端连接起来，如果中间引脚与VCC连接时，相应的地址为0&#215;76：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_5.JPG" alt="" width="230" height="173" /></p>
<p>如果中间引脚与GND连接时，相应的地址为0&#215;70：</p>
<p><img class="aligncenter" title="7seg4" src="http://image.flamingoeda.com/albums/userpics/10002/febb_7seg4_6.JPG" alt="" width="230" height="173" /></p>
<p>这一模块在出厂时中间的引脚即不与VCC连接，也不与GND连接，此时的地址也是0&#215;76。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2011/08/13/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e4%bd%8d7%e6%ae%b5%e6%95%b0%e7%a0%81%e7%ae%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 4路MOSFET开关 V02版</title>
		<link>http://blog.flamingoeda.com/2011/08/05/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e8%b7%afmosfet%e5%bc%80%e5%85%b3-v02%e7%89%88/</link>
		<comments>http://blog.flamingoeda.com/2011/08/05/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e8%b7%afmosfet%e5%bc%80%e5%85%b3-v02%e7%89%88/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 02:55:21 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=723</guid>
		<description><![CDATA[电子积木模块4路MOSFET开关 V02版在原来版本的基础上电路做了相应的调整，但主要的变化还是在元件的布局和连接上，首先将MOSFET管的布局改成卧式的了，虽然这样会占据一定的空间，但相对于以前立式的版本更加美观一些，受到影响的程度也更小一些。 此外的与外界电路的连接上提供了更多的连接端子，这样就避免了以前必须将几条线一同连接到一个端子的现象。按照目前的设计，外接电源还是连接在POWER 所标记的+和-两个引脚上，而外接用电设备（如LED灯带）则可以直接连接在CH1、CH2、CH3、CH4这4个通道的+/-两个引脚上，使用起来更加 方便一些，但缺点是整个电路板的体积比起以前的版本来稍大一些。 最后是背面图，电路走线的宽度增加，为更大电流通过时通过了相应的可能性 有关MOSFET模块的具体使用办法可以参考之前blog上的文章Arduino 电子积木 4路MOSFET开关 &#160;]]></description>
			<content:encoded><![CDATA[<p>电子积木模块4路MOSFET开关 V02版在原来版本的基础上电路做了相应的调整，但主要的变化还是在元件的布局和连接上，首先将MOSFET管的布局改成卧式的了，虽然这样会占据一定的空间，但相对于以前立式的版本更加美观一些，受到影响的程度也更小一些。</p>
<p><img class="aligncenter" title="mosfet" src="http://image.flamingoeda.com/albums/userpics/10002/febb_mosfet4_1.JPG" alt="" width="460" height="345" /></p>
<p>此外的与外界电路的连接上提供了更多的连接端子，这样就避免了以前必须将几条线一同连接到一个端子的现象。按照目前的设计，外接电源还是连接在POWER 所标记的+和-两个引脚上，而外接用电设备（如LED灯带）则可以直接连接在CH1、CH2、CH3、CH4这4个通道的+/-两个引脚上，使用起来更加 方便一些，但缺点是整个电路板的体积比起以前的版本来稍大一些。</p>
<p><img class="aligncenter" title="mosfet" src="http://image.flamingoeda.com/albums/userpics/10002/febb_mosfet4_2.JPG" alt="" width="460" height="345" /></p>
<p>最后是背面图，电路走线的宽度增加，为更大电流通过时通过了相应的可能性 <img src='http://blog.flamingoeda.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img class="aligncenter" title="mosfet" src="http://image.flamingoeda.com/albums/userpics/10002/febb_mosfet4_3.JPG" alt="" width="460" height="345" />有关MOSFET模块的具体使用办法可以参考之前blog上的文章<a href="http://blog.flamingoeda.com/2010/01/03/arduino-%E7%94%B5%E5%AD%90%E7%A7%AF%E6%9C%A8-4%E8%B7%AFmosfet%E5%BC%80%E5%85%B3/">Arduino 电子积木 4路MOSFET开关</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2011/08/05/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-4%e8%b7%afmosfet%e5%bc%80%e5%85%b3-v02%e7%89%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino L298N 电机驱动扩展板 V03 使用手册</title>
		<link>http://blog.flamingoeda.com/2011/02/18/arduino-l298n-%e7%94%b5%e6%9c%ba%e9%a9%b1%e5%8a%a8%e6%89%a9%e5%b1%95%e6%9d%bf-v03-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c/</link>
		<comments>http://blog.flamingoeda.com/2011/02/18/arduino-l298n-%e7%94%b5%e6%9c%ba%e9%a9%b1%e5%8a%a8%e6%89%a9%e5%b1%95%e6%9d%bf-v03-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 01:25:28 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[手册]]></category>
		<category><![CDATA[l298n]]></category>
		<category><![CDATA[电机]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=716</guid>
		<description><![CDATA[Arduino电机驱动扩展板 L298N V03是我们最新的电机驱动扩展板： 同前一版本的Arduino L298N 电机驱动扩展板相比，V03版本的改动主要是添加了更多的设置开关，以满足不同场合下的应用要求： VLO（Voltage Logic Onboard） 电机驱动芯片L298N在工作的时候有两个电压：逻辑电压和电机电压，其中逻辑电压是5V，一般会小于电机电压（比如7.2V，9V或者12V）。为了能够将接在VEX端子上的电机电压转换成5V逻辑电压使用，电机驱动板上提供了相应的电压转换电路。电压转换电路的工作电压是受限的（小于20V），所以如果电机大于20V的时候，就不能使用这个电压转换电路了。VLO开关的作用就是选择是打开（开关置于ON）还是关闭（开关置于OFF）板上这一逻辑转换电路。 VLC（Voltage Logic Connected） L298N电机驱动扩展板上的逻辑电压除了可以通过上面介绍的电压转换电路提供之后，也可以通过与Arduino控制板上的5V逻辑电压直接连接来提供。VLC开关的作用是决定是否将电机驱动扩展板上的5V逻辑电压与Arduino控制板上的5V逻辑电压连接起来：当开关置于ON的位置上时连接，当开关置于OFF的位置上时不连接。 VM（Voltage Motor）： VM的作用是对电机电压进行选择。当L298N电机驱动扩展板与Arduino连接起来之后，有两种办法为电机提供电源：通过Arduino板上的Vin引脚（开关置于VIN）和通过电机驱动扩展板上的VEX端子（开关置于VEX）。 相对于Arduino来讲，L298N电机驱动扩展板所承载的电流和电压都是比较高的，因此在使用的过程中要特别注意连线。下面提供几种典型的电路连接方式供大家在使用中参考： 1. 电机电压为6~12V 一般来讲，Arduino可以通过外接的6V-12V变压器进行供电（Arduino上的Vin引脚），如果你的电机电压正好在这个范围之内，那就正好可以利用这一外接电源来同时为Arduino和电机供电。这种情况下VLO、VLC和VM三者的设置为： VLO：OFF，不需要电机驱动扩展板上的电压转换电路 VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供逻辑电压 VM：VIN，与Arduino的Vin引脚进行连接，为电机驱动扩展板提供电机电压 2. 电机电压小于6V 这种情况下只能通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V逻辑电压转换电路无法正常工作（VEX电压太低），所以我们只能同Arduino板上的5V引脚连接来为电机驱动扩展板提供5V逻辑电压。这种情况下电机驱动扩展板的设置为： VLO：OFF，不需要电机驱动扩展板上的电压转换电路 VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供5V逻辑电压 VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压 3. 电机电压为12V-20V 这种情况下也只能是通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V 逻辑电压转换电路可以正常工作。这种情况下电机 驱动扩展板的设置为： VLO：ON，需要电机驱动扩展板上的电压转换电路 VLC：OFF，不与Arduino的5V引脚进行连接，安全隔离 VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压 上述设置中因为VLC并没有将Arduino的5V引脚与电机扩展板上的5V逻辑电压连接起来，因此我们仍需要再额外为Arduino供电（通过USB线或者外接电源），主要是出于安全隔离的考虑，特别是在VEX上的电压比较高的情况下。 4. 电机电压为20V-46V 这种情况下也只能是通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V 逻辑电压转换电路无法正常工作（VEX电压太低）。这种情况下电机 驱动扩展板的设置为： VLO：OFF，不需要电机驱动扩展板上的电压转换电路 VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供5V逻辑电压 VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压 除了这些配置上的不同之外，V03与前一版本不存在太大的区别，因此你可以参考Arduino L298N 电机驱动扩展板中的代码进行电机的驱动。]]></description>
			<content:encoded><![CDATA[<p>Arduino电机驱动扩展板 L298N V03是我们最新的电机驱动扩展板：</p>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_3.JPG" alt="" width="460" height="345" /></p>
<p>同前一版本的<a href="http://blog.flamingoeda.com/2009/04/19/arduino-l298n-%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%89%A9%E5%B1%95%E6%9D%BF/">Arduino L298N 电机驱动扩展板</a>相比，V03版本的改动主要是添加了更多的设置开关，以满足不同场合下的应用要求：</p>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_1.JPG" alt="" width="460" height="345" /></p>
<ul>
<li>VLO（Voltage Logic Onboard）</li>
</ul>
<p>电机驱动芯片L298N在工作的时候有两个电压：逻辑电压和电机电压，其中逻辑电压是5V，一般会小于电机电压（比如7.2V，9V或者12V）。为了能够将接在VEX端子上的电机电压转换成5V逻辑电压使用，电机驱动板上提供了相应的电压转换电路。电压转换电路的工作电压是受限的（小于20V），所以如果电机大于20V的时候，就不能使用这个电压转换电路了。VLO开关的作用就是选择是打开（开关置于ON）还是关闭（开关置于OFF）板上这一逻辑转换电路。</p>
<ul>
<li>VLC（Voltage Logic Connected）</li>
</ul>
<p>L298N电机驱动扩展板上的逻辑电压除了可以通过上面介绍的电压转换电路提供之后，也可以通过与Arduino控制板上的5V逻辑电压直接连接来提供。VLC开关的作用是决定是否将电机驱动扩展板上的5V逻辑电压与Arduino控制板上的5V逻辑电压连接起来：当开关置于ON的位置上时连接，当开关置于OFF的位置上时不连接。</p>
<ul>
<li>VM（Voltage Motor）：</li>
</ul>
<p>VM的作用是对电机电压进行选择。当L298N电机驱动扩展板与Arduino连接起来之后，有两种办法为电机提供电源：通过Arduino板上的Vin引脚（开关置于VIN）和通过电机驱动扩展板上的VEX端子（开关置于VEX）。</p>
<p>相对于Arduino来讲，L298N电机驱动扩展板所承载的电流和电压都是比较高的，因此在使用的过程中要特别注意连线。下面提供几种典型的电路连接方式供大家在使用中参考：</p>
<h3>1. 电机电压为6~12V</h3>
<p>一般来讲，Arduino可以通过外接的6V-12V变压器进行供电（Arduino上的Vin引脚），如果你的电机电压正好在这个范围之内，那就正好可以利用这一外接电源来同时为Arduino和电机供电。这种情况下VLO、VLC和VM三者的设置为：</p>
<ul>
<li>VLO：OFF，不需要电机驱动扩展板上的电压转换电路</li>
<li>VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供逻辑电压</li>
<li>VM：VIN，与Arduino的Vin引脚进行连接，为电机驱动扩展板提供电机电压</li>
</ul>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_4.JPG" alt="" width="460" height="345" /></p>
<h3>2. 电机电压小于6V</h3>
<p>这种情况下只能通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V逻辑电压转换电路无法正常工作（VEX电压太低），所以我们只能同Arduino板上的5V引脚连接来为电机驱动扩展板提供5V逻辑电压。这种情况下电机驱动扩展板的设置为：</p>
<ul>
<li>VLO：OFF，不需要电机驱动扩展板上的电压转换电路</li>
<li>VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供5V逻辑电压</li>
<li>VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压</li>
</ul>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_5.JPG" alt="" width="460" height="345" /></p>
<h3>3. 电机电压为12V-20V</h3>
<p>这种情况下也只能是通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V 逻辑电压转换电路可以正常工作。这种情况下电机 驱动扩展板的设置为：</p>
<ul>
<li>VLO：ON，需要电机驱动扩展板上的电压转换电路</li>
<li>VLC：OFF，不与Arduino的5V引脚进行连接，安全隔离</li>
<li>VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压</li>
</ul>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_6.JPG" alt="" width="460" height="345" /></p>
<p>上述设置中因为VLC并没有将Arduino的5V引脚与电机扩展板上的5V逻辑电压连接起来，因此我们仍需要再额外为Arduino供电（通过USB线或者外接电源），主要是出于安全隔离的考虑，特别是在VEX上的电压比较高的情况下。</p>
<h3>4. 电机电压为20V-46V</h3>
<p>这种情况下也只能是通过电机驱动扩展板上的GND和VEX两个端子来给电机供电，此时电机驱动扩展板上的5V 逻辑电压转换电路无法正常工作（VEX电压太低）。这种情况下电机 驱动扩展板的设置为：</p>
<ul>
<li>VLO：OFF，不需要电机驱动扩展板上的电压转换电路</li>
<li>VLC：ON，与Arduino的5V引脚进行连接，为电机驱动扩展板提供5V逻辑电压</li>
<li>VM：VEX，通过电机驱动扩展板上的VEX/GND端子为电机提供驱动电压</li>
</ul>
<p><img class="aligncenter" title="l298n" src="http://image.flamingoeda.com/albums/userpics/10002/shield_l298n_v03_7.JPG" alt="" width="460" height="345" /></p>
<p>除了这些配置上的不同之外，V03与前一版本不存在太大的区别，因此你可以参考<a href="../2009/04/19/arduino-l298n-%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%89%A9%E5%B1%95%E6%9D%BF/">Arduino L298N 电机驱动扩展板</a>中的代码进行电机的驱动。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2011/02/18/arduino-l298n-%e7%94%b5%e6%9c%ba%e9%a9%b1%e5%8a%a8%e6%89%a9%e5%b1%95%e6%9d%bf-v03-%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 ENC28J60 网络模块</title>
		<link>http://blog.flamingoeda.com/2010/12/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-enc28j60-%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/</link>
		<comments>http://blog.flamingoeda.com/2010/12/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-enc28j60-%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 13:52:44 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[ENC28J60]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=711</guid>
		<description><![CDATA[ENC28J60是除W5100之外另一个经常用到的网络芯片，最早出现在Arduino上的网络扩展板就是借助于ENC28J60来完成的，虽然后来Arduino官方提供的网络扩展板是基于W5100实现的，但ENC28J60仍以其稳定可靠的特性被广泛使用着。这里要介绍的这款电子积木正是基于ENC28J60实现的网络模块： 该款网络模块也是基于SPI接口的，因此在电路连接上只需要通过我们的IDC扩展板用相应的6芯连接线将其与Arduino连接起来就可以了： 程序的话我们需要下载相应的库文件EncEthernet.zip，将其解压缩到Arduino安装目录下的libraries目录中并重命名为EncEthernet： 重新启动Arduino之后，就可以在File-&#62;Examples-&#62;EncEtherent菜单中找到WebServer这一示例程序： 通常你只需要根据自己的网络配置情况修改IP地址就可以了： static uint8_t myip[4] = {192,168,0,15}; 将程序下载到Arduino中之后，你就可以通过浏览器来访问你的Arduino了：]]></description>
			<content:encoded><![CDATA[<p>ENC28J60是除W5100之外另一个经常用到的网络芯片，最早出现在Arduino上的网络扩展板就是借助于ENC28J60来完成的，虽然后来Arduino官方提供的网络扩展板是基于W5100实现的，但ENC28J60仍以其稳定可靠的特性被广泛使用着。这里要介绍的这款电子积木正是基于ENC28J60实现的网络模块：</p>
<p><img class="aligncenter" title="enc28j60" src="http://image.flamingoeda.com/albums/userpics/febb_enc28j60_1.JPG" alt="" width="460" height="345" /></p>
<p>该款网络模块也是基于SPI接口的，因此在电路连接上只需要通过我们的IDC扩展板用相应的6芯连接线将其与Arduino连接起来就可以了：</p>
<p><img class="aligncenter" title="enc28j60" src="http://image.flamingoeda.com/albums/userpics/febb_enc28j60_2.JPG" alt="" width="460" height="330" /></p>
<p>程序的话我们需要下载相应的库文件<a href="http://flamingoarduino.googlecode.com/files/EncEthernet-20101229.zip">EncEthernet.zip</a>，将其解压缩到Arduino安装目录下的libraries目录中并重命名为EncEthernet：</p>
<p><img class="aligncenter" title="enc28j60" src="http://image.flamingoeda.com/albums/userpics/febb_enc28j60_3.JPG" alt="" width="460" height="364" /></p>
<p>重新启动Arduino之后，就可以在File-&gt;Examples-&gt;EncEtherent菜单中找到WebServer这一示例程序：</p>
<p><img class="aligncenter" title="enc28j60" src="http://image.flamingoeda.com/albums/userpics/febb_enc28j60_4.JPG" alt="" width="460" height="551" /></p>
<p>通常你只需要根据自己的网络配置情况修改IP地址就可以了：</p>
<pre><span style="color: #cc6600;">static</span> uint8_t myip[4] = {192,168,0,15};
</pre>
<p>将程序下载到Arduino中之后，你就可以通过浏览器来访问你的Arduino了：</p>
<p><img class="aligncenter" title="enc28j60" src="http://image.flamingoeda.com/albums/userpics/febb_enc28j60_5.JPG" alt="" width="460" height="363" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/12/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-enc28j60-%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 W5100网络模块</title>
		<link>http://blog.flamingoeda.com/2010/12/28/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-w5100%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/</link>
		<comments>http://blog.flamingoeda.com/2010/12/28/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-w5100%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 15:42:58 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[W5100]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=708</guid>
		<description><![CDATA[目前将Arduino连接到局域网中已经有不少解决方案，比如之前介绍的Ethernet扩展板或者WiFi模块，这里要介绍的电子积木W5100网络模块提供了另外一种选择。W5100是一款集TCP/IP协议、MAC和PHY于一体的网络芯片，支持直接总线接口、间接总线接口和 SPI总线，并且Arduino IDE内置的Ethernet库就是直接针对W5100设置的： 这款W5100网格模块电子积木采用的是SPI接口，因此我们可以使用IDC扩展板与Arduino主板进行连接： 另外正常使用时模块上的PROG开关不能置到ON的位置上： 测试的话我们可以使用Arduino自带的Ethernet库中的WebServer例子，从Arduino IDE的File-&#62;Examples-&#62;Ethernet菜单中选择WebServer，打开相应的代码： 根据你的局域网设置的不同，一般只需要修改IP地址就可以了： byte ip[] = { 192,168,0, 177 }; 相应的程序下载到Arduino并运行起来之后，Arduino实际上就成为了一个Web Server，因此我们可以通过浏览器来进行访问。Ethernet库所提供的WebServer程序实际上是接收来自于浏览器的请求，读出所有模拟输入端口的值，并返回给浏览器。如果感兴趣的话可以试着在模拟输入端口上接上相应的传感器，来观察返回值的不同：]]></description>
			<content:encoded><![CDATA[<p>目前将Arduino连接到局域网中已经有不少解决方案，比如之前介绍的Ethernet扩展板或者WiFi模块，这里要介绍的电子积木W5100网络模块提供了另外一种选择。W5100是一款集TCP/IP协议、MAC和PHY于一体的网络芯片，支持直接总线接口、间接总线接口和 SPI总线，并且Arduino IDE内置的Ethernet库就是直接针对W5100设置的：</p>
<p><img class="aligncenter" title="w5100" src="http://image.flamingoeda.com/albums/userpics/febb_w5100_1.JPG" alt="" width="460" height="345" /></p>
<p>这款W5100网格模块电子积木采用的是SPI接口，因此我们可以使用IDC扩展板与Arduino主板进行连接：</p>
<p><img class="aligncenter" title="w5100" src="http://image.flamingoeda.com/albums/userpics/febb_w5100_2.JPG" alt="" width="460" height="345" /></p>
<p>另外正常使用时模块上的PROG开关不能置到ON的位置上：</p>
<p><img class="aligncenter" title="w5100" src="http://image.flamingoeda.com/albums/userpics/febb_w5100_5.JPG" alt="" width="120" height="145" /></p>
<p>测试的话我们可以使用Arduino自带的Ethernet库中的WebServer例子，从Arduino IDE的File-&gt;Examples-&gt;Ethernet菜单中选择WebServer，打开相应的代码：</p>
<p><img class="aligncenter" title="w5100" src="http://image.flamingoeda.com/albums/userpics/febb_w5100_3.JPG" alt="" width="460" height="511" /></p>
<p>根据你的局域网设置的不同，一般只需要修改IP地址就可以了：</p>
<pre><span style="color: #cc6600;">byte</span> ip[] = { 192,168,0, 177 };
</pre>
<p>相应的程序下载到Arduino并运行起来之后，Arduino实际上就成为了一个Web Server，因此我们可以通过浏览器来进行访问。Ethernet库所提供的WebServer程序实际上是接收来自于浏览器的请求，读出所有模拟输入端口的值，并返回给浏览器。如果感兴趣的话可以试着在模拟输入端口上接上相应的传感器，来观察返回值的不同：</p>
<p><img class="aligncenter" title="w5100" src="http://image.flamingoeda.com/albums/userpics/febb_w5100_4.JPG" alt="" width="460" height="353" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/12/28/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-w5100%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9d%97/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 彩色 Nokia LCD 132&#215;132</title>
		<link>http://blog.flamingoeda.com/2010/12/18/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%bd%a9%e8%89%b2-nokia-lcd-132x132/</link>
		<comments>http://blog.flamingoeda.com/2010/12/18/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%bd%a9%e8%89%b2-nokia-lcd-132x132/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 16:35:29 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[LCD]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=702</guid>
		<description><![CDATA[对于要在Arduino上使用彩色屏幕进行显示的项目来讲，这里要介绍的这款彩色Nokia LCD模块应该是个不错的选择，该彩色LCD电子积木使用SPI接口与Arduino进行通信，能够提供132 x 132的显示区域： 彩色LCD电子积木与Arduino之间最重要的连接是SPI接口，这可以通过我们的IDC扩展板和相应的连接线来完成： 除了SPI接口之外，彩色LCD电子积木模块上还有另外两个引脚：RESET和LIGHT，分别用来控制对LCD模拟的复位和背光。这两个引脚我们可以使用Arduino专用传感器扩展板和相应的传感器连接线，来与Arduino相应的引脚进行连接。彩色LCD电子积木在设计的时候主要使用的是Arduino上的PORTB引脚，根据之后的测试代码，我们需要将RESET引脚接到Arduino的12号引脚上，而LIGHT引脚则接到Arduino的3号引脚上： 电路连接好之后，我们就可以往里面写入相应的代码了。这一款Nokia LCD屏幕有两种控制芯片，分别是Epson和Philips。我们目前测试的是一款基于Philips控制器的屏幕，你可以下载我们所使用的测试代码LCD_Philips（代码大部分参考了Gravitech的例子）。 以下是运行时的效果图： 下载我们所使用的测试代码]]></description>
			<content:encoded><![CDATA[<p>对于要在Arduino上使用彩色屏幕进行显示的项目来讲，这里要介绍的这款彩色Nokia LCD模块应该是个不错的选择，该彩色LCD电子积木使用SPI接口与Arduino进行通信，能够提供132 x 132的显示区域：</p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_1.JPG" alt="" width="460" height="345" /></p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_2.JPG" alt="" width="460" height="345" />彩色LCD电子积木与Arduino之间最重要的连接是SPI接口，这可以通过我们的IDC扩展板和相应的连接线来完成：</p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_3.JPG" alt="" width="460" height="345" /></p>
<p>除了SPI接口之外，彩色LCD电子积木模块上还有另外两个引脚：RESET和LIGHT，分别用来控制对LCD模拟的复位和背光。这两个引脚我们可以使用Arduino专用传感器扩展板和相应的传感器连接线，来与Arduino相应的引脚进行连接。彩色LCD电子积木在设计的时候主要使用的是Arduino上的PORTB引脚，根据之后的测试代码，我们需要将RESET引脚接到Arduino的12号引脚上，而LIGHT引脚则接到Arduino的3号引脚上：</p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_4.JPG" alt="" width="460" height="345" />电路连接好之后，我们就可以往里面写入相应的代码了。这一款Nokia LCD屏幕有两种控制芯片，分别是Epson和Philips。我们目前测试的是一款基于Philips控制器的屏幕，你可以下载我们所使用的测试代码<a href="http://blog.flamingoeda.com/wp-content/uploads/2010/12/LCD_Philips.txt">LCD_Philips</a>（代码大部分参考了Gravitech的例子）。</p>
<p>以下是运行时的效果图：</p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_5.JPG" alt="" width="460" height="345" /></p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_6.JPG" alt="" width="460" height="455" /></p>
<p><img class="aligncenter" title="nokia" src="http://image.flamingoeda.com/albums/userpics/febb_nokia_lcd_7.JPG" alt="" width="460" height="460" /></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1274px; width: 1px; height: 1px; overflow: hidden;">下载我们所使用的测试代码</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/12/18/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%bd%a9%e8%89%b2-nokia-lcd-132x132/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 对射型红外开关 8M</title>
		<link>http://blog.flamingoeda.com/2010/12/17/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%af%b9%e5%b0%84%e5%9e%8b%e7%ba%a2%e5%a4%96%e5%bc%80%e5%85%b3-8m/</link>
		<comments>http://blog.flamingoeda.com/2010/12/17/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%af%b9%e5%b0%84%e5%9e%8b%e7%ba%a2%e5%a4%96%e5%bc%80%e5%85%b3-8m/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 11:25:56 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=696</guid>
		<description><![CDATA[对射型的红外开关一般由两个结点组成：一个发射端和一个接收端，其工作原理是发射端发出相应的红外光线（一般是15度角的锥形），接收端有一个对红外光线敏感的元件用来检测发送端发送出来的红外光线。如果发射端和接收端之间正好有物体遮挡的话，那接收端就无法接收到发射端发送出来的红外光线，从而能够判断出发射端和接收端之间是否有物体存在。 对射型红外开关的特点决定了其在现场安装的时候可能会有一定的难度，一是要保证发射端和接收端对准在一条直线上，另外在有多对红外开关存在的情况下，还要注意如何避免相邻的两个红外开关之间不致于相互影响。红外对射开关接照功率的不同有不同的作用距离，我们这里介绍的这对红外开关的作用距离最远可以达到8米，不过工作的距离越长，相应的发射出来的红外光线的锥体也就越大，对邻近的红外开关的影响也就越大，这点在实际项目中需要考虑到，特别是多个红外开关共同使用的时候。 对射型红外开关的发射端只是用来发射相应的红外信号，一般不需要进行控制，所以我们可以用5V的供电模块直接给发射端供电： 注意连线的时候绿色线要接5V供电模块的地（GND），而红色线则要接5V供电模块的输出端（OUT）： 对射型红外开关的接收端是用来判断是否有物体经过的，我们可以将其相应的输出信号通过Arduino读取出来，然后根据读出来的值进行相应的控制，比如传给计算机做进一步的处理等。接收端与Arduino的连接可以借助于我们提供的Arduino专用传感器扩展板，其中红外接收端三条线的连接顺序分别是GND（绿）、5V（红）和信号（黄）： 下面是整个电路的连接图：右侧是红外发射端，其通过5V供电模块直接供电，负责不间断地发射红外光线；左侧是红外接收端，当有或者没有物体位于发射端和接收端之间时，接收端送给Arduino的信号是有所不同的： 下面是我们测试时使用的代码，通过从红外接收端读出来的信号的不同，Arduino会点亮或者熄灭位于13号数字I/O引脚上所连接的LED： int ledPin = 13; int switchPin = 7; int value = 0; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { value = digitalRead(switchPin); if (HIGH == value) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } //delay(100); }]]></description>
			<content:encoded><![CDATA[<p>对射型的红外开关一般由两个结点组成：一个发射端和一个接收端，其工作原理是发射端发出相应的红外光线（一般是15度角的锥形），接收端有一个对红外光线敏感的元件用来检测发送端发送出来的红外光线。如果发射端和接收端之间正好有物体遮挡的话，那接收端就无法接收到发射端发送出来的红外光线，从而能够判断出发射端和接收端之间是否有物体存在。</p>
<p>对射型红外开关的特点决定了其在现场安装的时候可能会有一定的难度，一是要保证发射端和接收端对准在一条直线上，另外在有多对红外开关存在的情况下，还要注意如何避免相邻的两个红外开关之间不致于相互影响。红外对射开关接照功率的不同有不同的作用距离，我们这里介绍的这对红外开关的作用距离最远可以达到8米，不过工作的距离越长，相应的发射出来的红外光线的锥体也就越大，对邻近的红外开关的影响也就越大，这点在实际项目中需要考虑到，特别是多个红外开关共同使用的时候。</p>
<p><img class="aligncenter" title="ir" src="http://image.flamingoeda.com/albums/userpics/febb_ir_8m.JPG" alt="" width="460" height="345" /></p>
<p>对射型红外开关的发射端只是用来发射相应的红外信号，一般不需要进行控制，所以我们可以用5V的供电模块直接给发射端供电：</p>
<p><img class="aligncenter" title="ir" src="http://image.flamingoeda.com/albums/userpics/febb_ir_8m_1.JPG" alt="" width="460" height="345" /></p>
<p>注意连线的时候绿色线要接5V供电模块的地（GND），而红色线则要接5V供电模块的输出端（OUT）：</p>
<p><img class="aligncenter" title="ir" src="http://image.flamingoeda.com/albums/userpics/febb_ir_8m_2.JPG" alt="" width="460" height="345" /></p>
<p>对射型红外开关的接收端是用来判断是否有物体经过的，我们可以将其相应的输出信号通过Arduino读取出来，然后根据读出来的值进行相应的控制，比如传给计算机做进一步的处理等。接收端与Arduino的连接可以借助于我们提供的Arduino专用传感器扩展板，其中红外接收端三条线的连接顺序分别是GND（绿）、5V（红）和信号（黄）：</p>
<p><img class="aligncenter" title="ir" src="http://image.flamingoeda.com/albums/userpics/febb_ir_8m_3.JPG" alt="" width="460" height="345" /></p>
<p>下面是整个电路的连接图：右侧是红外发射端，其通过5V供电模块直接供电，负责不间断地发射红外光线；左侧是红外接收端，当有或者没有物体位于发射端和接收端之间时，接收端送给Arduino的信号是有所不同的：</p>
<p><img class="aligncenter" title="ir" src="http://image.flamingoeda.com/albums/userpics/febb_ir_8m_4.JPG" alt="" width="460" height="345" /></p>
<p>下面是我们测试时使用的代码，通过从红外接收端读出来的信号的不同，Arduino会点亮或者熄灭位于13号数字I/O引脚上所连接的LED：</p>
<pre><span style="color: #cc6600;">int</span> ledPin = 13;
<span style="color: #cc6600;">int</span> switchPin = 7;
<span style="color: #cc6600;">int</span> value = 0; 

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>setup</strong></span>() {
  <span style="color: #cc6600;">pinMode</span>(switchPin, <span style="color: #006699;">INPUT</span>);
  <span style="color: #cc6600;">pinMode</span>(ledPin, <span style="color: #006699;">OUTPUT</span>);
  <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">begin</span>(9600);
}

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>loop</strong></span>() {
  value = <span style="color: #cc6600;">digitalRead</span>(switchPin);
  <span style="color: #cc6600;">if</span> (<span style="color: #006699;">HIGH</span> == value) {
    <span style="color: #cc6600;">digitalWrite</span>(ledPin, <span style="color: #006699;">HIGH</span>);
  } <span style="color: #cc6600;">else</span> {
    <span style="color: #cc6600;">digitalWrite</span>(ledPin, <span style="color: #006699;">LOW</span>);
  }
  <span style="color: #7e7e7e;">//delay(100);</span>
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/12/17/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e5%af%b9%e5%b0%84%e5%9e%8b%e7%ba%a2%e5%a4%96%e5%bc%80%e5%85%b3-8m/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 串口RFID模块</title>
		<link>http://blog.flamingoeda.com/2010/12/15/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e4%b8%b2%e5%8f%a3rfid%e6%a8%a1%e5%9d%97/</link>
		<comments>http://blog.flamingoeda.com/2010/12/15/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e4%b8%b2%e5%8f%a3rfid%e6%a8%a1%e5%9d%97/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 16:15:04 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=689</guid>
		<description><![CDATA[RFID射频识别是一种非接触式的物体识别技术，它可以通过射频信号自动识别目标对象并获取相关数据，因此许多互动项目正是借用这一特性来实现对物体的识别的。通常来讲，一个最基本的RFID识系统主要由以下三部分组成： 标签（Tag）：由耦合元件及芯片组成，每个标签具有唯一的电子编码，附着在物体上标识目标对象； 阅读器（Reader）：读取（有时还可以写入）标签信息的设备，可设计为手持式或固定式； 天线（Antenna）：在标签和读取器间传递射频信号。 目前能够使用的RFID模块比较多，与Arduino之间的接口也有所区别，我们设计的这两款RFID模块都是通过串口来与Arduino连接的，两者的功能和连接方式完全一样，只是天线的形式有所区别而已。 下图这款是阅读器和天线分离的，分别位于两块电路板上，由于天线的面积相对较大，因此检测距离可以达到10cm： 而下图这款则是阅读器和天线集成在一块电路板上的，检测距离为6cm： RFID的工作原理其实并不复杂，当标签进入到读卡器的工作区域之后，读卡器就可以通过天线所产生的磁场，读出标签里所存储的数据： 根据具体使用场景的不同，我们可以使用不同类型的标签，不同类型的标签作用范围有所区别： 在实际使用的过程中，我们可以先用读卡器读出不同标签中的ID，此时可以使用我们之前介绍的USB转串口模块Serial Dongle： 电路连接好之后，用串口调试工具打开Serial Dongle对应的串口，将波特率设置为19200，然后以HEX格式发送读卡的命令 AA BB 02 20 22（一共5个字节）： 如果此时没有卡在读卡器的作用区间之内，RFID模块将通过串口返回HEX格式的AA BB 02 DF DD（五个字节）： 但如果此时有卡在读卡器的作用区间之内，RFID模块上的红色LED会点亮，同时通过串口返回HEX格式的AA BB 06 20 5E 97 25 C7 0D（9个字节），其中从20之后开始的4个字节5E 97 25 C7即是标签的ID。不同标签返回的ID值是不一样的，而我们正是通过对该ID值的判断来区分不同的物体的。 在得到了相应标签的ID值后，我们就可以在Arduino中来进行识别了，硬件连接上依然是通过传感器扩展板上的COM接口来连接我们的串口RFID模块： 与之对应的Arduino代码如下所示，其中我们要检测的标签ID是5E 97 25 C7，当Arduino检测到相应的标签后，会将13号数字I/O端口上的LED点亮1秒钟： int val = 0; int ledPin = 13; int status = 0; unsigned char searchCMD[] [...]]]></description>
			<content:encoded><![CDATA[<p>RFID射频识别是一种非接触式的物体识别技术，它可以通过射频信号自动识别目标对象并获取相关数据，因此许多互动项目正是借用这一特性来实现对物体的识别的。通常来讲，一个最基本的RFID识系统主要由以下三部分组成：</p>
<ul>
<li> 标签（Tag）：由耦合元件及芯片组成，每个标签具有唯一的电子编码，附着在物体上标识目标对象；</li>
</ul>
<ul>
<li> 阅读器（Reader）：读取（有时还可以写入）标签信息的设备，可设计为手持式或固定式；</li>
</ul>
<ul>
<li> 天线（Antenna）：在标签和读取器间传递射频信号。</li>
</ul>
<p>目前能够使用的RFID模块比较多，与Arduino之间的接口也有所区别，我们设计的这两款RFID模块都是通过串口来与Arduino连接的，两者的功能和连接方式完全一样，只是天线的形式有所区别而已。</p>
<p>下图这款是阅读器和天线分离的，分别位于两块电路板上，由于天线的面积相对较大，因此检测距离可以达到10cm：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_big.JPG" alt="" width="460" height="342" /></p>
<p>而下图这款则是阅读器和天线集成在一块电路板上的，检测距离为6cm：<br />
<img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_1.JPG" alt="" width="460" height="345" /></p>
<p>RFID的工作原理其实并不复杂，当标签进入到读卡器的工作区域之后，读卡器就可以通过天线所产生的磁场，读出标签里所存储的数据：</p>
<p>根据具体使用场景的不同，我们可以使用不同类型的标签，不同类型的标签作用范围有所区别：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_card_1.JPG" alt="" width="460" height="345" /></p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_card_2.JPG" alt="" width="460" height="345" /></p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_card_3.JPG" alt="" width="460" height="345" /></p>
<p>在实际使用的过程中，我们可以先用读卡器读出不同标签中的ID，此时可以使用我们之前介绍的USB转串口模块Serial Dongle：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_3.JPG" alt="" width="460" height="345" /></p>
<p>电路连接好之后，用串口调试工具打开Serial Dongle对应的串口，将波特率设置为19200，然后以HEX格式发送读卡的命令 AA BB 02 20 22（一共5个字节）：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_5.JPG" alt="" width="460" height="365" /></p>
<p>如果此时没有卡在读卡器的作用区间之内，RFID模块将通过串口返回HEX格式的AA BB 02 DF DD（五个字节）：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_6.JPG" alt="" width="460" height="365" /></p>
<p>但如果此时有卡在读卡器的作用区间之内，RFID模块上的红色LED会点亮，同时通过串口返回HEX格式的AA BB 06 20 5E 97 25 C7 0D（9个字节），其中从20之后开始的4个字节5E 97 25 C7即是标签的ID。不同标签返回的ID值是不一样的，而我们正是通过对该ID值的判断来区分不同的物体的。</p>
<p>在得到了相应标签的ID值后，我们就可以在Arduino中来进行识别了，硬件连接上依然是通过传感器扩展板上的COM接口来连接我们的串口RFID模块：</p>
<p><img class="aligncenter" title="rfid" src="http://image.flamingoeda.com/albums/userpics/febb_serial_rfid_4.JPG" alt="" width="460" height="345" /></p>
<p>与之对应的Arduino代码如下所示，其中我们要检测的标签ID是5E 97 25 C7，当Arduino检测到相应的标签后，会将13号数字I/O端口上的LED点亮1秒钟：</p>
<pre><span style="color: #cc6600;">int</span> val = 0;
<span style="color: #cc6600;">int</span> ledPin = 13;
<span style="color: #cc6600;">int</span> <span style="color: #cc6600;">status</span> = 0;
<span style="color: #cc6600;">unsigned</span> <span style="color: #cc6600;">char</span> searchCMD[] = {0xAA, 0xBB,0x02, 0x20, 0x22};
<span style="color: #cc6600;">unsigned</span> <span style="color: #cc6600;">char</span> searchRES[4];

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>setup</strong></span>()
{
  <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">begin</span>(19200);
  <span style="color: #cc6600;">pinMode</span>(13, <span style="color: #006699;">OUTPUT</span>);
}

<span style="color: #cc6600;">int</span> searchCard()
{
  <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">write</span>(searchCMD, 5);
  <span style="color: #cc6600;">delay</span>(100);
  <span style="color: #cc6600;">status</span> = 0;
  <span style="color: #cc6600;">while</span>(<span style="color: #cc6600;">true</span>) {
    <span style="color: #cc6600;">if</span> (<span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">available</span>() &gt; 0) {
      val = <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">read</span>();

      <span style="color: #cc6600;">switch</span> (<span style="color: #cc6600;">status</span>) {
        <span style="color: #cc6600;">case</span> 0:  <span style="color: #7e7e7e;">// parse 0xAA</span>
          <span style="color: #cc6600;">if</span> (val == 0xAA) <span style="color: #cc6600;">status</span> = 1;
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">case</span> 1: <span style="color: #7e7e7e;">// parse 0xBB</span>
          <span style="color: #cc6600;">if</span> (val == 0xBB) <span style="color: #cc6600;">status</span> = 2;
          <span style="color: #cc6600;">else</span> <span style="color: #cc6600;">return</span> -1;
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">case</span> 2:
          <span style="color: #cc6600;">if</span> (val == 0x06) <span style="color: #cc6600;">status</span> = 3;
          <span style="color: #cc6600;">else</span> <span style="color: #cc6600;">return</span> -1;
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">case</span> 3:
          <span style="color: #cc6600;">if</span> (val == 0x20) <span style="color: #cc6600;">status</span> = 4;
          <span style="color: #cc6600;">else</span> <span style="color: #cc6600;">return</span> -1;
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">case</span> 4:
        <span style="color: #cc6600;">case</span> 5:
        <span style="color: #cc6600;">case</span> 6:
        <span style="color: #cc6600;">case</span> 7:
          searchRES[<span style="color: #cc6600;">status</span> - 4] = val;
          <span style="color: #cc6600;">status</span> ++;
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">case</span> 8:
          <span style="color: #cc6600;">return</span> 0; <span style="color: #7e7e7e;">// read successfully</span>
          <span style="color: #cc6600;">break</span>;
        <span style="color: #cc6600;">default</span>:
          <span style="color: #cc6600;">return</span> -1;
          <span style="color: #cc6600;">break</span>;
      }

    }
  }
}

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>loop</strong></span>()
{
  <span style="color: #cc6600;">if</span> (searchCard() != -1) {
    <span style="color: #cc6600;">if</span> (searchRES[0] == 0x5E &amp;&amp; searchRES[1] == 0x97 &amp;&amp; searchRES[2] == 0x25 &amp;&amp; searchRES[3] == 0xC7) {
      <span style="color: #cc6600;">digitalWrite</span>(13, <span style="color: #006699;">HIGH</span>);
      <span style="color: #cc6600;">delay</span>(1000);
      <span style="color: #cc6600;">digitalWrite</span>(13, <span style="color: #006699;">LOW</span>);
      <span style="color: #cc6600;">delay</span>(1000);
    }
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/12/15/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e4%b8%b2%e5%8f%a3rfid%e6%a8%a1%e5%9d%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino 电子积木 FlexiForce压力传感器</title>
		<link>http://blog.flamingoeda.com/2010/11/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-flexiforce%e5%8e%8b%e5%8a%9b%e4%bc%a0%e6%84%9f%e5%99%a8/</link>
		<comments>http://blog.flamingoeda.com/2010/11/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-flexiforce%e5%8e%8b%e5%8a%9b%e4%bc%a0%e6%84%9f%e5%99%a8/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 14:30:40 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[电子积木]]></category>
		<category><![CDATA[FlexiForce]]></category>
		<category><![CDATA[压力传感器]]></category>

		<guid isPermaLink="false">http://blog.flamingoeda.com/?p=670</guid>
		<description><![CDATA[FlexiForce传感器由由美国Tekscan公司生产的一种电阻元件，其特点是电导率与负载之间能够呈现高度的线性关系。在完全没有压力的状况下，该传感器所表现出来的电阻值非常大，可 以说基本上是一个开放式电路；但随着压力增加，电阻值开始下降，最后可以达到10千欧或者更低的水平。 FlexiForce压力传感器在实际使用的时候需要搭配相应的放大电路，因此我们设计了这一电子积木，以便在实际工程中能够很方便地运用这一传感器： 同其他电子积木一样，在使用的时候只需要用传感器连接线，将该模块与传感器扩展板连接起来就可以了： 对Arduino来讲，读取该传感器输出的值与其它模拟传感器的做法是一样的，下面是相应的测试代码： int sensorPin = 5; int value = 0; void setup() { Serial.begin(9600); } void loop() { value = analogRead(sensorPin); Serial.println(value, DEC); delay(10); }]]></description>
			<content:encoded><![CDATA[<p>FlexiForce传感器由由美国Tekscan公司生产的一种电阻元件，其特点是电导率与负载之间能够呈现高度的线性关系。在完全没有压力的状况下，该传感器所表现出来的电阻值非常大，可 以说基本上是一个开放式电路；但随着压力增加，电阻值开始下降，最后可以达到10千欧或者更低的水平。</p>
<p>FlexiForce压力传感器在实际使用的时候需要搭配相应的放大电路，因此我们设计了这一电子积木，以便在实际工程中能够很方便地运用这一传感器：</p>
<p><img class="aligncenter" title="flexiforce" src="http://image.flamingoeda.com/albums/userpics/febb_flexiforce.JPG" alt="" width="460" height="345" /></p>
<p>同其他电子积木一样，在使用的时候只需要用传感器连接线，将该模块与传感器扩展板连接起来就可以了：</p>
<p><img class="aligncenter" title="flexiforce" src="http://image.flamingoeda.com/albums/userpics/febb_flexiforce_2.JPG" alt="" width="460" height="345" /></p>
<p>对Arduino来讲，读取该传感器输出的值与其它模拟传感器的做法是一样的，下面是相应的测试代码：</p>
<pre><span style="color: #cc6600;">int</span> sensorPin = 5;
<span style="color: #cc6600;">int</span> value = 0;

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>setup</strong></span>() {
  <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">begin</span>(9600);
}

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>loop</strong></span>() {
  value = <span style="color: #cc6600;">analogRead</span>(sensorPin);
  <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">println</span>(value, <span style="color: #006699;">DEC</span>);
  <span style="color: #cc6600;">delay</span>(10);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2010/11/30/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-flexiforce%e5%8e%8b%e5%8a%9b%e4%bc%a0%e6%84%9f%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

