<?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中国 &#187; Monome</title>
	<atom:link href="http://blog.flamingoeda.com/tag/monome/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flamingoeda.com</link>
	<description>Flamingo EDA</description>
	<lastBuildDate>Mon, 02 Aug 2010 05:45:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>RGB Monome 硅胶按钮</title>
		<link>http://blog.flamingoeda.com/2009/05/10/rgb-monome-%e7%a1%85%e8%83%b6%e6%8c%89%e9%92%ae/</link>
		<comments>http://blog.flamingoeda.com/2009/05/10/rgb-monome-%e7%a1%85%e8%83%b6%e6%8c%89%e9%92%ae/#comments</comments>
		<pubDate>Sun, 10 May 2009 15:09:18 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[RGB Monome]]></category>
		<category><![CDATA[Monome]]></category>

		<guid isPermaLink="false">http://blog.arduino.cn/?p=422</guid>
		<description><![CDATA[按钮是RGB Monome非常重要的一个部分，最后采用是透明硅胶制作的按钮，以保证有足够好的透光度。由于目前加工的量还不是很多，所以价格相对来讲并不是很便宜。 至此，制作RGB Monome所需要的各种元件和电路板都已经备齐，随后将通过本站的淘宝网店进行销售:-)]]></description>
			<content:encoded><![CDATA[<p>按钮是RGB Monome非常重要的一个部分，最后采用是透明硅胶制作的按钮，以保证有足够好的透光度。由于目前加工的量还不是很多，所以价格相对来讲并不是很便宜。</p>
<p style="text-align: center;"><img class="aligncenter" src="http://image.flamingoeda.com/albums/userpics/normal_silicon_4x4.jpg" alt="" width="400" height="300" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://image.flamingoeda.com/albums/userpics/normal_silicon_4x4_1.jpg" alt="" width="400" height="397" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://image.flamingoeda.com/albums/userpics/normal_silicon_4x4_2.jpg" alt="" width="400" height="339" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://image.flamingoeda.com/albums/userpics/normal_silicon_4x4_3.jpg" alt="" width="400" height="305" /></p>
<p style="text-align: left;">至此，制作RGB Monome所需要的各种元件和电路板都已经备齐，随后将通过本站的淘宝网店进行销售:-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2009/05/10/rgb-monome-%e7%a1%85%e8%83%b6%e6%8c%89%e9%92%ae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RGB Monome</title>
		<link>http://blog.flamingoeda.com/2009/05/05/octinct-rgb-monome/</link>
		<comments>http://blog.flamingoeda.com/2009/05/05/octinct-rgb-monome/#comments</comments>
		<pubDate>Tue, 05 May 2009 00:26:28 +0000</pubDate>
		<dc:creator>flamingoeda</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[RGB Monome]]></category>
		<category><![CDATA[Monome]]></category>

		<guid isPermaLink="false">http://blog.arduino.cn/?p=394</guid>
		<description><![CDATA[时间对项目来讲是一个魔咒，你经常需要快点赶上进度，但往往又必须付出足够长的时间，才能得到相应的结果。这次制做8&#215;8的RGB Monome再一次验证了它。 硬件的组成包括下面几个部分： 4块4&#215;4的RGB 按钮板，用来安装全彩LED和按钮 1块Arduino扩展板，用来连接Arduino和按钮扩展板 16块4&#215;4的按钮 4根24针的连接线 PCB板出厂之后，立马就焊接了一块RGB 按钮板和Arduino扩展板，检查连线正常之后，下载相应的程序进行验证，结果16个LED没一个亮的。仔细阅读了代码后，认为可能是初始时所有灯均为熄灭状态，可是对下面的数组进行初始化设置之后，情况依然没有什么变化： int levelB[64] = { 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, [...]]]></description>
			<content:encoded><![CDATA[<p>时间对项目来讲是一个魔咒，你经常需要快点赶上进度，但往往又必须付出足够长的时间，才能得到相应的结果。这次制做8&#215;8的RGB Monome再一次验证了它。</p>
<p>硬件的组成包括下面几个部分：</p>
<ul>
<li>4块4&#215;4的RGB 按钮板，用来安装全彩LED和按钮</li>
<li>1块Arduino扩展板，用来连接Arduino和按钮扩展板</li>
<li>16块4&#215;4的按钮</li>
<li>4根24针的连接线</li>
</ul>
<p>PCB板出厂之后，立马就焊接了一块RGB 按钮板和Arduino扩展板，检查连线正常之后，下载相应的程序进行验证，结果16个LED没一个亮的。仔细阅读了代码后，认为可能是初始时所有灯均为熄灭状态，可是对下面的数组进行初始化设置之后，情况依然没有什么变化：</p>
<pre class="java">int levelB[64] = {
1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024};</pre>
<p>仔细检查电路，接线上并没有发现什么异常。由于之间在选型的时候，做了一个TLC5940的实验，而这一RGB 按钮板的核心正是一个TLC5940，于是打算用<a href="http://code.google.com/p/tlc5940arduino/" target="_blank">tlc5940arduino</a>提供的BasicUse进行验证。与之前自已用3块TLC5940的想法不同，RGB 按钮板上只用了一个TLC5940，通过三个三极管的来回切换，完成三种颜色的分别控制，做法倒是经济，但调试起来很不方便。在弄清楚了RGB 按钮板的工作原理之后，为BasicUse加上了三极管控制的代码，但仍然是无法点亮任何一个LED。</p>
<pre class="java">#include "Tlc5940.h"

void setup()
{
  Tlc.init();
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop()
{
  Tlc.clear();
  // red
  for (int channel = 0; channel &lt; 16; channel ++) {
    Tlc.set(channel, 4095);
  }
  Tlc.update();
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
}</pre>
<p>继续研究RGB 按钮板的工作原理，偶然发现与TLC5940通常的共阳接法不同，这里采用的居然是共阴的接法！原因找到之后，用共阴的LED再焊接了一块RGB 按钮板，之前那块用共阳LED的按钮板壮烈牺牲！</p>
<p>再次用修改后的BasicUse进行测试，这次倒是按钮板上的灯能够亮了，算是一大进步。可是连接上Arduino扩展板之后，依然是LED工作得不正常，但用镊子短路按钮板上的按钮，倒是能够在串口上读到相应的数据，而且似乎结果还是正确的。</p>
<p>此时，我做了一个判断，让为硬件上应该基本是正确的，包括LED和按钮，问题应该主要是出在软件上，为了赶上相应的进度，我将4块4&#215;4 RGB 按钮板和一块Arduino扩展板寄出。</p>
<p>但事实很快粉碎了我的设想，本来觉得应该很快弄好的代码，却一直无法让这一堆硬件正常工作。这里是我最后修改后的<a href="http://blog.arduino.cn/wp-content/uploads/2009/05/code.txt">代码</a>，将其下载到Arduino之后并运行的话，期待的结果是4个RGB 按钮板上的LED在上电的时候全亮，然后一个一个变成彩色再熄灭，之后就可以通过按钮来控制每一个灯的亮灭，即按下哪个按钮，相应的LED就变亮。</p>
<p>好几天都在来来回回折腾这段代码和这堆硬件，RGB 按钮板经常出现只有一块亮，或者均不亮的情况。仔细读了网站上的各种说明，从网上找了TLC5940的资料无数，都没有弄明白为什么BasicUse可以点亮LED，可RGB 按钮板就无法正常工作。各种能够想到的检测办法都用上了，也试着用示波器查看波形，但似乎都没有发现问题所在。</p>
<p>抱着试试看的态度，做了如下的修改：</p>
<ol>
<li>Arduino扩展板上的电阻，改成4.7K</li>
<li>尝试用Arduino扩展板上的5V外接电源</li>
</ol>
<p>第一个改动在我的硬件上没有实质性的作用，倒是第二个改动，偶然中出现了两块RGB 按钮板都正常的情况，兴奋中！来来回回不断地插拔RGB 按钮板，并不断地调整RGB 按钮板的连接顺序，虽然没有搞明白为什么，但几个小时后终于在用5V外接电源的情况下，出现了4块RGB 按钮板均亮的情况！看着RGB 按钮板上的LED按照程序一颗一颗闪烁的时候，真是想哭的心都有了;-)</p>
<p>尽管此时已经是凌晨两点多了，还是抑制不住兴奋的心情，去楼下让基本上已经麻木的大脑呼吸了一把新鲜空气，回来美美地睡了一觉。</p>
<p>第二天起床后就赶紧验证按钮。将4块4&#215;4 RGB 按钮板按位置摆好后，对按钮一个一个进行验证。按照上面给的Arduino代码，我期望的结果是当相应位置的按钮按下之后，该按钮下面的灯同时亮起。定做的硅胶按钮倒是表现得不错，但紧接着问题又来了，第0行上的任何一个按钮按下去的话，都会点亮相应列上的8个LED，其它行上的按钮工作正常！晕！</p>
<p>接着查电路吧！74HC164和74HC165的工作原理，对照着代码好好地检查了一番，再用示波器检查了一下74HC165各个输入管脚上的波形，的确有一个与别的有所不同，但一时却找不到原因所在。又一天过去了！</p>
<p>昨天晚上，几近崩溃但尚未放弃的我又一次检查了相应的电路，最后终于将原因锁定在了Arduino扩展板上的一个直插的排阻上。由于是第一次用到排阻，并没有仔细想到排阻也是分管脚的，而之前焊接的排阻正好焊反了！将排阻换好之后，按钮总算正常工作了。</p>
<p style="text-align: center;"><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_mistake.jpg"><img class="size-full wp-image-403 aligncenter" title="octinct_mistake" src="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_mistake.jpg" alt="" width="460" height="345" /></a></p>
<p style="text-align: center;"><strong>装反了的排阻</strong></p>
<p>似乎此时总算可以长舒一口气了，因为至少在目前这堆硬件固定的连接上，所有的功能都正常了！但此时还有一个问题困扰我：为什么连接RGB 按钮板的时候，有时候正常，有时候不正常呢？有时候只亮一块或者几块，有时就能够4块全亮，而且只要全亮，不管怎么断电都可以，但只要是换一下RGB 按钮板的连接顺序，就可能会有一块不亮！</p>
<p>还是不死心，原因没有找到，但不断实验的过程中总结出一个规律，也许有借鉴的作用。在连接RGB 按钮板的过程中，严格按照下面的步骤进行安装：</p>
<ol>
<li>断电，只连接UPPER-RIGHT，上电，点亮第一块RGB 按钮板</li>
<li>断电，将连接在UPPER-RIGHT上的RGB 按钮板拔下接到LOWER-RIGHT上，将第二块RGB 按钮板连接到LOWER-RIGHT，上电，同时点亮两块RGB 按钮板</li>
<li>断电，将连接在LOWER-RIGHT上的RGB 按钮板拔下接到LOWER-LEFT，将连接在 UPPER-RIGHT上的RGB 按钮板拔下接到LOWER-RIGHT上，将第三块RGB 按钮板连接到UPPER-RIGHT，上电，同时点亮三块RGB 按钮板</li>
<li>断电，将连接在LOWER-LEFT上的RGB 按钮板拔下接到UPPER-LEFT，将连接在LOWER-RIGHT上的RGB 按钮板拔下接到LOWER-LEFT，将连接在 UPPER-RIGHT上的RGB 按钮板拔下接到LOWER-RIGHT上，将第四块RGB 按钮板连接到UPPER-RIGHT，上电，同时点亮四块RGB 按钮板</li>
</ol>
<p>试了两块Arduino扩展板，按照上面的做法似乎都能够正常！一个猜测的原因是不是因为TLC5940里的EEPROM导致的？这个似乎需要更多的时间来研究确定，而一整夜都在排错和总结上述规律的我此时已经精疲力竭，丝毫没有任何心思来仔细啄磨这些细节了，只能上几张照片然后睡觉去:(</p>
<p style="text-align: center;"><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_shield.jpg"><img class="size-full wp-image-404 aligncenter" title="octinct_shield" src="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_shield.jpg" alt="" width="460" height="345" /></a></p>
<p style="text-align: center;"><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_buttonpads.jpg"><img class="alignnone size-full wp-image-405" title="octinct_buttonpads" src="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_buttonpads.jpg" alt="" width="460" height="345" /></a></p>
<p style="text-align: center;"><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_buttonpad.jpg"><img class="size-full wp-image-406 aligncenter" title="octinct_buttonpad" src="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_buttonpad.jpg" alt="" width="460" height="345" /></a></p>
<p style="text-align: center;"><a href="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_button.jpg"><img class="size-full wp-image-407 aligncenter" title="octinct_button" src="http://blog.flamingoeda.com/wp-content/uploads/2009/05/octinct_button.jpg" alt="" width="460" height="345" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flamingoeda.com/2009/05/05/octinct-rgb-monome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
