<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3514498658767469367</id><updated>2011-12-07T02:49:02.827+09:00</updated><category term='圧電スピーカ'/><category term='イーサネット'/><category term='距離センサ'/><category term='arduino'/><category term='緊急モーションセンサー'/><category term='ファイルチューザー'/><category term='processing'/><category term='サーボ'/><category term='Xbee'/><category term='デジタルコンパス'/><category term='PID制御'/><category term='７セグLED'/><category term='Webカメラ'/><category term='シリアル通信'/><category term='マトリクスLED'/><category term='３D'/><category term='マテリアル'/><category term='タッチセンサ'/><category term='BlueTooth'/><category term='カラーセンサ'/><category term='加速度センサ'/><category term='電子工作'/><category term='ビデオ信号'/><category term='モーショントラッキング'/><category term='ビデオ'/><category term='Firmata'/><category term='秋葉原マップ'/><category term='モータ'/><category term='ワイヤレス通信'/><category term='光センサ'/><category term='ファイル保存'/><category term='QRコード'/><category term='HTTPサーバ'/><category term='曲げセンサ'/><category term='スケジュール'/><category term='タッチパネル'/><category term='LED'/><category term='モータドライバ'/><category term='建築農業工作ゼミ2009'/><category term='ネットワーク'/><category term='サウンド'/><category term='タクトスイッチ'/><category term='カラートラッキング'/><category term='パルス'/><title type='text'>建築発明工作ゼミ2008</title><subtitle type='html'>四谷アートステュディウム・建築発明工作ゼミ（2008年度）の授業サブノート&lt;br&gt;主にProcessingやArduinoについて記載しています。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default?start-index=101&amp;max-results=100'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>107</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5692487430088825105</id><published>2010-06-14T11:44:00.002+09:00</published><updated>2010-06-23T10:47:31.949+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='秋葉原マップ'/><title type='text'>秋葉原工作マップ</title><content type='html'>秋葉原の電子部品関連のマップです。&lt;br /&gt;緑マーク：Arduino販売店。&lt;br /&gt;青マーク：電子部品など。&lt;br /&gt;黄マーク：Wifi／FONスポット。&lt;br /&gt;赤マーク：飲食など。&lt;br /&gt;&lt;br /&gt;&lt;iframe width="640" height="480" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.jp/maps/ms?ie=UTF8&amp;amp;hl=ja&amp;amp;brcurrent=3,0x60188c1c2969d079:0xcbce389a6b190c21,0&amp;amp;msa=0&amp;amp;msid=106657995331555245824.000484475e17cc785f83a&amp;amp;ll=35.70007,139.771736&amp;amp;spn=0.008364,0.013733&amp;amp;z=16&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;より大きな地図で &lt;a href="http://maps.google.co.jp/maps/ms?ie=UTF8&amp;amp;hl=ja&amp;amp;brcurrent=3,0x60188c1c2969d079:0xcbce389a6b190c21,0&amp;amp;msa=0&amp;amp;msid=106657995331555245824.000484475e17cc785f83a&amp;amp;ll=35.70007,139.771736&amp;amp;spn=0.008364,0.013733&amp;amp;z=16&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;秋葉原工作マップ&lt;/a&gt; を表示&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5692487430088825105?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5692487430088825105/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5692487430088825105' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5692487430088825105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5692487430088825105'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2010/06/blog-post.html' title='秋葉原工作マップ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8961544547519664531</id><published>2010-04-17T08:50:00.001+09:00</published><updated>2010-04-17T08:51:58.589+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>建築農業工作ゼミ2010開講</title><content type='html'>&lt;a href="http://ken-nou-kou.blogspot.com/"&gt;建築農業工作ゼミ2010&lt;/a&gt;、4/17から開講です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8961544547519664531?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8961544547519664531/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8961544547519664531' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8961544547519664531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8961544547519664531'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2010/04/2010.html' title='建築農業工作ゼミ2010開講'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-2027980709727002230</id><published>2010-02-19T02:00:00.009+09:00</published><updated>2010-03-23T15:22:01.029+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>2010年度 「建築農業工作ゼミ」トライアルワークショップ（工作編）＋ガイダンス</title><content type='html'>&lt;span style="font-weight:bold;"&gt;終了致しました。ご参加ありがとうございました。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2010年度「&lt;a href="http://ken-nou-kou.blogspot.com/"&gt;建築農業工作ゼミ&lt;/a&gt;」受講にむけたトライアルワークショップとして、初心者向けのArduino電子工作ワークショップ行ないます。&lt;br /&gt;「建築農業工作ゼミ」受講希望者は、ぜひご参加下さい。&lt;br /&gt;ワークショップ後には、ゼミ全体のガイダンスも行なわれます。&lt;br /&gt;&lt;br /&gt;■日時：2010年3月20日（土）&lt;br /&gt;13:00－17:00｜初心者向けArduino電子工作ワークショップ&lt;br /&gt;17:00－17:30｜建築農業工作ゼミ ガイダンス&lt;br /&gt;&lt;br /&gt;■ワークショップ内容：&lt;br /&gt;電子工作の経験はないけれども興味がある初心者を対象としています。&lt;br /&gt;Arduinoボード（マイコン）を用いて、電子回路や電子工作の基礎を学びます。&lt;br /&gt;（1）電子工作／プログラムに必要な環境のセットアップ&lt;br /&gt;（2）基本：LEDを光らせる&lt;br /&gt;（3）応用：センサと音出力&lt;br /&gt;&lt;br /&gt;■定員：20名&lt;br /&gt;&lt;br /&gt;■参加費：1000円（材料費込）&lt;br /&gt;※持参するものの費用は各自ご負担ください。&lt;br /&gt;※ガイダンスのみの参加も可能です（その場合は無料）。&lt;br /&gt;&lt;br /&gt;■当日持参するもの：&lt;br /&gt;●ノートパソコン（WinまたはMac）&lt;br /&gt;●Arduinoボード（以下に購入方法の説明あり）&lt;br /&gt;●USBケーブル（Arduinoホードとパソコンをつなぐケーブル）&lt;br /&gt;&lt;br /&gt;Arduinoボード（基板）には幾つか種類がありますが、「&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001VG2RYO/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduino Duemilanove 328&lt;/a&gt;」（3200円）という種類のものをおすすめします。&lt;br /&gt;WEB通販であれば、&lt;a href="http://www.amazon.co.jp/Arduino-Duemilanove-328/dp/B001VG2RYO/ref=sr_1_3?ie=UTF8&amp;s=electronics&amp;qid=1266521867&amp;sr=8-3"&gt;アマゾン&lt;/a&gt;、&lt;a href="http://www.switch-science.com/products/detail.php?product_id=3"&gt;スイッチサイエンス&lt;/a&gt;などがあります。&lt;br /&gt;秋葉原の店頭で購入するなら&lt;a href="http://sengoku-akb.jugem.jp/?eid=89"&gt;千石電商&lt;/a&gt;などがあります&lt;br /&gt;その他購入先については以下のサイトに説明があります。&lt;br /&gt;&lt;a href="http://ken-nou-kou.blogspot.com/2009/08/arduino.html"&gt;http://ken-nou-kou.blogspot.com/2009/08/arduino.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;申し込み方法&lt;br /&gt;&lt;br /&gt;事務室までお電話／ファックスでまたは直接ご予約ください&lt;br /&gt;（定員に達し次第受付を締め切りますのでお早めにお申し込みください）。&lt;br /&gt;&lt;br /&gt;■会場：四谷アート・ステュディウム講義室&lt;a href="http://correlative.org/access/index.html"&gt;【地図】&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;■お申し込み／お問い合わせ：&lt;a href="http://artstudium.org/"&gt;四谷アート・ステュディウム&lt;/a&gt;事務室（校舎2F）&lt;br /&gt;tel. 03-3351-0591&lt;br /&gt;&lt;br /&gt;リンク：&lt;br /&gt;&lt;a href="http://artstudium.org/news/2010/02/post_59.htm"&gt;「建築農業工作ゼミ」トライアルワークショップ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-2027980709727002230?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/2027980709727002230/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=2027980709727002230' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2027980709727002230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2027980709727002230'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2010/02/2010.html' title='2010年度 「建築農業工作ゼミ」トライアルワークショップ（工作編）＋ガイダンス'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8225830098021235301</id><published>2009-12-15T02:08:00.006+09:00</published><updated>2009-12-18T15:54:17.108+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建築農業工作ゼミ2009'/><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>建築農業工作ゼミ2009 企画展示開催のお知らせ</title><content type='html'>&lt;br&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;font-size:180%;"&gt;『 Nature in Our Life 　+ nöche café - 』&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_o3YsxTmVCK4/SyPK1JhGPHI/AAAAAAAAANA/xZwATTAQ34Q/s1600-h/cafe_fryer_for_blog.png"&gt;&lt;img style="MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; FLOAT: left; HEIGHT: 252px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5414394191466085490" border="0" alt="" src="http://4.bp.blogspot.com/_o3YsxTmVCK4/SyPK1JhGPHI/AAAAAAAAANA/xZwATTAQ34Q/s400/cafe_fryer_for_blog.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;　+++ place +++&lt;br /&gt;　&lt;a href="http://correlative.org/" target="_blank"&gt;GALLERY OBJECTIVE CORRELATIVE&lt;/a&gt;&lt;br /&gt;　〒160-0004　東京都新宿区四谷1-5&lt;br /&gt;&lt;br /&gt;　+++ date/time +++&lt;br /&gt;　2009/12/24 Thu 17:00 - 20:00&lt;br /&gt;　2009/12/25 Fri 13:00 - 18:00&lt;br /&gt;　2009/12/26 Sat 10:00 - 20:00&lt;br /&gt;&lt;br /&gt;　+++ organizer +++&lt;br /&gt;　&lt;a href="http://ken-nou-kou.blogspot.com/" target="_blank"&gt;建築農業工作ゼミ&lt;/a&gt; カフェプロジェクト&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■&lt;br /&gt;&lt;br /&gt;●展示主旨&lt;br /&gt;&lt;br /&gt;「Nature in Our Life」は、都市に生活する私たちの「自然」や「農」に対する関心を深めるに&lt;br /&gt;はどうすればよいかをテーマにした企画展です。&lt;br /&gt;&lt;br /&gt;私たち都市生活者は、自然から離れ、食料確保の直接的な営みを遠ざけてきました。食料危機&lt;br /&gt;や気候変動など「自然」をめぐるさまざまな問題が顕在化している今、「農＝生態系の循環と&lt;br /&gt;共にある暮らし」を、あらためて都市の生活に組み込んでいくことが課題になっています。&lt;br /&gt;&lt;br /&gt;会場ではエレクトロニクスを応用して農作物や植物との関係性を探る作品が展示されるほか、&lt;br /&gt;カフェとしても機能し、コミュニケーションの「場」としてのあり方を模索する試みを合わせ&lt;br /&gt;てご紹介いたします。&lt;br /&gt;&lt;br /&gt;私たちが獲得したテクノロジーと「自然」とを融合させ、暮らしにおける新しい価値を生み出&lt;br /&gt;して行く可能性を提示したいと考えています。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■&lt;br /&gt;&lt;br /&gt;●カフェ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;+ nöche café -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;「農地」から収穫したハーブを温かいフレッシュハーブティにしてご提供いたします。&lt;br /&gt;また、ベランダ栽培で収穫できる素材を使用したお料理もご用意しております。&lt;br /&gt;お手数ですが、食器（お皿、コップ、箸）をご持参ください。&lt;br /&gt;本展覧会のテーマへの皆様のご理解をいただければ幸いです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■&lt;br /&gt;&lt;br /&gt;近畿大学　国際人文科学研究所&lt;br /&gt;東京コミュニティカレッジ　&lt;a href="http://artstudium.org/"&gt;四谷アート・ステュディウム&lt;/a&gt;&lt;br /&gt;〒160-0004　東京都新宿区四谷1-5&lt;br /&gt;tel. 03-3351-0591&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8225830098021235301?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8225830098021235301/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8225830098021235301' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8225830098021235301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8225830098021235301'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/12/2009.html' title='建築農業工作ゼミ2009 企画展示開催のお知らせ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_o3YsxTmVCK4/SyPK1JhGPHI/AAAAAAAAANA/xZwATTAQ34Q/s72-c/cafe_fryer_for_blog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5914273665415405006</id><published>2009-05-31T09:46:00.003+09:00</published><updated>2009-05-31T09:55:13.513+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建築農業工作ゼミ2009'/><title type='text'>建築農業工作ゼミ２００９</title><content type='html'>２００９年度版「&lt;a href="http://ken-nou-kou.blogspot.com" target="_blank"&gt;建築農業工作ゼミ&lt;/a&gt;」のブログを新たに開設しました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5914273665415405006?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5914273665415405006/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5914273665415405006' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5914273665415405006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5914273665415405006'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/05/blog-post.html' title='建築農業工作ゼミ２００９'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6457867826566827881</id><published>2009-04-07T03:08:00.006+09:00</published><updated>2009-04-11T18:06:30.604+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>書籍：Programming Interactivity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://oreilly.com/catalog/covers/9780596800581_cat.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 180px; height: 236px;" src="http://oreilly.com/catalog/covers/9780596800581_cat.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Programming Interactivity: Rough Cuts Version&lt;br /&gt;A Designer's Guide to Processing, Arduino, and openFrameworks&lt;br /&gt;&lt;a href="http://oreilly.com/catalog/9780596800581/index.html"&gt;http://oreilly.com/catalog/9780596800581/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596154143/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/5105WKiFYSL._SL160_.jpg" alt="Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596154143/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/0596154143/kousakukousak-22/ref=nosim/" title="Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks" target="_blank"&gt;amazlet&lt;/a&gt; at 09.04.11&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Joshua Noble &lt;br /&gt;Oreilly &amp; Associates Inc &lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596154143/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6457867826566827881?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6457867826566827881/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6457867826566827881' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6457867826566827881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6457867826566827881'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/04/programming-interactivity.html' title='書籍：Programming Interactivity'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-980394834201199289</id><published>2009-04-02T09:54:00.010+09:00</published><updated>2009-05-09T16:26:25.786+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino Quad Core Quadruino</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://magicsmoke.downingterrazas.com/wp-content/uploads/2009/05/multiduino-2layout.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 160px;" src="http://magicsmoke.downingterrazas.com/wp-content/uploads/2009/05/multiduino-2layout.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.freeduino.de/files/images/arduino_quad.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 172px;" src="http://www.freeduino.de/files/images/arduino_quad.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Quadruino：&lt;br /&gt;ATmega328を４個搭載したQuadruinoが４週間後に$70で販売されるようです。&lt;br /&gt;４つのスケッチを同時に実行することが可能で、従来のシールドも搭載可能らしいです。&lt;br /&gt;また、ALTERA EP1K50 FPGAチップによって、４個のコントローラをひとまとまりにしたパワフルな動作も可能らしいです。&lt;br /&gt;&lt;br /&gt;マイクロコントローラ：ATmega328x4個&lt;br /&gt;使用電圧：5V&lt;br /&gt;入力電圧（推奨）：7-12V&lt;br /&gt;入力電圧（限界）：6-20V&lt;br /&gt;デジタル入出力ピン数：56本&lt;br /&gt;アナログ入力ピン数：24本&lt;br /&gt;&lt;br /&gt;リンク：&lt;br /&gt;&lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238600379/0"&gt;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238600379/0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freeduino.de/en/blog/arduino-quad-core-quadruino-0" target="_blank"&gt;http://www.freeduino.de/en/blog/arduino-quad-core-quadruino-0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274501868/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51WGgbQm8OL._SL160_.jpg" alt="超低コスト インターネット・ガジェット設計―USB・μIP・microSDプロトコールスタックの活用" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274501868/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;超低コスト インターネット・ガジェット設計―USB・μIP・microSDプロトコールスタックの活用&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4274501868/kousakukousak-22/ref=nosim/" title="超低コスト インターネット・ガジェット設計―USB・μIP・microSDプロトコールスタックの活用" target="_blank"&gt;amazlet&lt;/a&gt; at 09.04.02&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;武藤 佳恭 &lt;br /&gt;オーム社 &lt;br /&gt;売り上げランキング: 5687&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274501868/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-980394834201199289?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/980394834201199289/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=980394834201199289' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/980394834201199289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/980394834201199289'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/04/arduino-quad-core-quadruino.html' title='Arduino Quad Core Quadruino'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6785515451468948126</id><published>2009-03-30T05:11:00.004+09:00</published><updated>2009-03-30T05:36:21.612+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino　Li-ionバッテリ Litium Backpack Stealth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/Sc_WsOvI3nI/AAAAAAAAAjs/RXQMKBnvZnc/s1600-h/litium.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/Sc_WsOvI3nI/AAAAAAAAAjs/RXQMKBnvZnc/s400/litium.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5318705740306243186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.liquidware.com" target="_blank"&gt;Liquidwire&lt;/a&gt;が販売している&lt;a href="http://www.liquidware.com/shop/show/BP/Lithium+Backpack+Stealth" target="_blank"&gt;Arduino用リチウムイオンバッテリ&lt;/a&gt;（5V/3.3V出力）。&lt;br /&gt;&lt;br /&gt;三種類あり、Arduino基板を通して充電可能、またはmini USBケーブル接続で直接充電可能。&lt;br /&gt;サイズはArduino基板と同程度。&lt;br /&gt;Arduino基板に重ねて取り付けるためのネジ類付属。&lt;br /&gt;&lt;br /&gt;・高容量：2200mAh（29時間）：$47.36&lt;br /&gt;・中容量：1000mAh（15時間）：$34.63&lt;br /&gt;・小容量：600mAh（9.4時間）：$31.90&lt;br /&gt;&lt;br /&gt;リンク：&lt;a href="http://www.liquidware.com/shop/show/BP/Lithium+Backpack+Stealth" target="_blank"&gt;liquidwire/Litium Backpack Stealth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789834468/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/5175GGE3PSL._SL160_.jpg" alt="電池応用ハンドブック―各種電池の基礎知識から、電池応用回路、充放電マネージメント・システム、活用資料集まで (ハードウェア・セレクション)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789834468/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;電池応用ハンドブック―各種電池の基礎知識から、電池応用回路、充放電マネージメント・システム、活用資料集まで (ハードウェア・セレクション)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4789834468/kousakukousak-22/ref=nosim/" title="電池応用ハンドブック―各種電池の基礎知識から、電池応用回路、充放電マネージメント・システム、活用資料集まで (ハードウェア・セレクション)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;&lt;br /&gt;CQ出版 &lt;br /&gt;売り上げランキング: 100791&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789834468/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6785515451468948126?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6785515451468948126/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6785515451468948126' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6785515451468948126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6785515451468948126'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduinoli-ion-litium-backpack-stealth.html' title='Arduino　Li-ionバッテリ Litium Backpack Stealth'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/Sc_WsOvI3nI/AAAAAAAAAjs/RXQMKBnvZnc/s72-c/litium.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6035847777947174167</id><published>2009-03-28T01:45:00.005+09:00</published><updated>2009-03-30T01:57:28.247+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino AC Power Shield</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/Scz9kXnt2rI/AAAAAAAAAjc/f30fE__24Ds/s1600-h/ACpow.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/Scz9kXnt2rI/AAAAAAAAAjc/f30fE__24Ds/s400/ACpow.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5317904061275429554" /&gt;&lt;/a&gt;&lt;br /&gt;Arduino AC Power Shield&lt;br /&gt;&lt;br /&gt;まだプロトタイプ段階のようですが、一応販売もしているようです。&lt;br /&gt;120V/60Hz用らしいです。&lt;br /&gt;&lt;br /&gt;リンク：&lt;br /&gt;販売：&lt;a href="http://ryanjmclaughlin.com/arduino" target="_blank"&gt;http://ryanjmclaughlin.com/arduino&lt;/a&gt;&lt;br /&gt;記事：&lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236998971" target="_blank"&gt;Arduino Forum内&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://px.a8.net/svt/ejp?a8mat=1HS2Y1+5U61BM+Z82+67JU9" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" width="234" height="60" alt="" src="http://www24.a8.net/svt/bgt?aid=090329833353&amp;wid=001&amp;eno=01&amp;mid=s00000004565001043000&amp;mc=1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;img border="0" width="1" height="1" src="http://www14.a8.net/0.gif?a8mat=1HS2Y1+5U61BM+Z82+67JU9" alt=""&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6035847777947174167?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6035847777947174167/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6035847777947174167' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6035847777947174167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6035847777947174167'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduino-ac-power-shield.html' title='Arduino AC Power Shield'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7uyXRm_coS4/Scz9kXnt2rI/AAAAAAAAAjc/f30fE__24Ds/s72-c/ACpow.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8214915646413536536</id><published>2009-03-28T01:30:00.003+09:00</published><updated>2009-06-21T21:23:52.963+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='マテリアル'/><title type='text'>DSbrut</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/Sc0J9yLIMlI/AAAAAAAAAjk/n2eHBAjL-ck/s1600-h/imagemagic2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/Sc0J9yLIMlI/AAAAAAAAAjk/n2eHBAjL-ck/s400/imagemagic2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5317917692039541330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;DS brut（$31.95/€26.00）:上画像&lt;br /&gt;ニンテンドーDSからUART、GPIO、PWM、ADC、I2Cなどの制御／通信が可能。&lt;br /&gt;Atmega168(8MHz)を使用。&lt;br /&gt;Arduinoソフトウェア（LilyPad Arduino用）でプログラムをアップすることが可能。&lt;br /&gt;&lt;br /&gt;新型DS brut 3G（€38.00）：&lt;br /&gt;加速度センサADXL330内蔵型。&lt;br /&gt;&lt;br /&gt;専用ファームウェア「libdsbrut-0.9」が最近リリースされたようです。&lt;br /&gt;＊ただし、最近の&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B8%E3%82%B3%E3%83%B3"&gt;マジコン&lt;/a&gt;の流通規制との関係から利用は難しいのかもしれません（？）。&lt;br /&gt;&lt;br /&gt;リンク：&lt;br /&gt;&lt;a href="http://dsbrut.sukzessiv.net/"&gt;DSbrut&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.electrobee.com/nds-io-adapters-c-5.html"&gt;electrobee&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8214915646413536536?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8214915646413536536/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8214915646413536536' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8214915646413536536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8214915646413536536'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/dsbrut.html' title='DSbrut'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7uyXRm_coS4/Sc0J9yLIMlI/AAAAAAAAAjk/n2eHBAjL-ck/s72-c/imagemagic2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8673010897471501139</id><published>2009-03-28T00:40:00.003+09:00</published><updated>2009-03-29T01:41:38.999+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PID制御'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino PID制御ライブラリ</title><content type='html'>PID制御用のライブラリ（最新バージョン：Beta 0.6）。&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Code/PIDLibrary"&gt;http://www.arduino.cc/playground/Code/PIDLibrary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837130/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/5155Y3EN56L._SL160_.jpg" alt="シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837130/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4789837130/kousakukousak-22/ref=nosim/" title="シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.29&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;広井 和男 宮田 朗 &lt;br /&gt;CQ出版 &lt;br /&gt;売り上げランキング: 20517&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837130/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8673010897471501139?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8673010897471501139/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8673010897471501139' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8673010897471501139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8673010897471501139'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduino-pid.html' title='Arduino PID制御ライブラリ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3851685519893632277</id><published>2009-03-27T04:09:00.006+09:00</published><updated>2009-03-27T04:34:12.624+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino Mega+Arduino IDE version 0015</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/ScvTov6WRCI/AAAAAAAAAi8/GGARLVrirVs/s1600-h/ArduinoMega.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/ScvTov6WRCI/AAAAAAAAAi8/GGARLVrirVs/s400/ArduinoMega.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5317576482050425890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Arduino Mega発売（&lt;a href="http://www.switch-science.com/products/detail.php?product_id=147" target="_blank"&gt;スイッチサイエンス&lt;/a&gt;、&lt;a href="http://strawberry-linux.com/catalog/items?code=35006" target="_blank"&gt;ストロベリーリナックス&lt;/a&gt;で購入可：7350円）。&lt;br /&gt;それに合わせて、&lt;a href="http://arduino.cc/en/Main/Software" target="_blank"&gt;IDEバージョン0015&lt;/a&gt;もリリースしているようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3851685519893632277?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3851685519893632277/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3851685519893632277' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3851685519893632277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3851685519893632277'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduino-megaarduino-ide-version-0015.html' title='Arduino Mega+Arduino IDE version 0015'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/ScvTov6WRCI/AAAAAAAAAi8/GGARLVrirVs/s72-c/ArduinoMega.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8258316007041266741</id><published>2009-03-26T09:31:00.009+09:00</published><updated>2009-03-30T04:37:13.281+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='タッチパネル'/><title type='text'>Arduino TouchShield Slide</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/ScrNTrdlCaI/AAAAAAAAAh8/Pczk22ZC9zA/s1600-h/touch.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 279px;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/ScrNTrdlCaI/AAAAAAAAAh8/Pczk22ZC9zA/s320/touch.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5317288048032287138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TouchShield Slide:&lt;br /&gt;320x240 OLEDタッチスクリーン（$174.93）&lt;br /&gt;&lt;br /&gt;リンク:&lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide" target="_blank"&gt;liquidwire open source electronics&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00067PZP2/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/3142FW009KL._SL160_.jpg" alt="Logitec USB対応15型タッチパネル LTP-15U" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00067PZP2/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Logitec USB対応15型タッチパネル LTP-15U&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B00067PZP2/kousakukousak-22/ref=nosim/" title="Logitec USB対応15型タッチパネル LTP-15U" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;ロジテック (2004-10-31)&lt;br /&gt;売り上げランキング: 13768&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00067PZP2/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001MYRPVK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51oy6dLTSjL._SL160_.jpg" alt="タッチパネル・キット Asus EEE PC 901-X用タッチスクリーン" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001MYRPVK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;タッチパネル・キット Asus EEE PC 901-X用タッチスクリーン&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001MYRPVK/kousakukousak-22/ref=nosim/" title="タッチパネル・キット Asus EEE PC 901-X用タッチスクリーン" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Monomobile &lt;br /&gt;売り上げランキング: 33808&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001MYRPVK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8258316007041266741?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8258316007041266741/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8258316007041266741' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8258316007041266741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8258316007041266741'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduino-touchshield-slide.html' title='Arduino TouchShield Slide'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/ScrNTrdlCaI/AAAAAAAAAh8/Pczk22ZC9zA/s72-c/touch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8125903737586592690</id><published>2009-03-25T03:04:00.004+09:00</published><updated>2009-03-28T00:08:34.953+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>書籍：Arduinoをはじめよう</title><content type='html'>&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113989/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51aB2N0kJGL._SL160_.jpg" alt="Arduinoをはじめよう" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113989/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduinoをはじめよう&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4873113989/kousakukousak-22/ref=nosim/" title="Arduinoをはじめよう" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.28&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Massimo Banzi &lt;br /&gt;オライリージャパン &lt;br /&gt;売り上げランキング: 1556&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113989/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8125903737586592690?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8125903737586592690/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8125903737586592690' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8125903737586592690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8125903737586592690'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/03/arduino.html' title='書籍：Arduinoをはじめよう'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-7025057081655721640</id><published>2009-02-11T01:45:00.007+09:00</published><updated>2009-03-30T04:39:38.282+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino バージョン0013</title><content type='html'>Arduinoの&lt;a href="http://arduino.cc/en/Main/Software"&gt;バージョン0013&lt;/a&gt;がリリースされたようです。&lt;br /&gt;0013では細かなバグ修正のほか：&lt;br /&gt;・Serial、Ethernet、LiquidCrystalライブラリにおいてfloatで出力可能。&lt;br /&gt;・&lt;a href="http://arduino.cc/en/Reference/WordCast"&gt;word()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/BitRead"&gt;bitRead()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/BitWrite"&gt;bitWrite()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/BitSet"&gt;bitSet()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/BitClear"&gt;bitClear()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/Bit"&gt;bit()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/LowByte"&gt;lowByte()&lt;/a&gt;、&lt;a href="http://arduino.cc/en/Reference/HighByte"&gt;highByte()&lt;/a&gt;が追加。&lt;br /&gt;・ATmega328をサポート（ATmega328は&lt;a href="http://www.switch-science.com/products/detail.php?product_id=113"&gt;スイッチサイエンス&lt;/a&gt;や&lt;a href="http://www.microfan.jp/shop/6_10.html"&gt;マイクロファン&lt;/a&gt;にて購入可）。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001VG2RYO/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51aITGILQUL._SL160_.jpg" alt="Arduino Duemilanove 328" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001VG2RYO/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduino Duemilanove 328&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001VG2RYO/kousakukousak-22/ref=nosim/" title="Arduino Duemilanove 328" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;スイッチサイエンス &lt;br /&gt;売り上げランキング: 2300&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001VG2RYO/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-7025057081655721640?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/7025057081655721640/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=7025057081655721640' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7025057081655721640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7025057081655721640'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/02/arduino-0013.html' title='Arduino バージョン0013'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-7062242660750165504</id><published>2009-01-30T05:27:00.039+09:00</published><updated>2010-11-17T14:47:56.834+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>目次：Arduino</title><content type='html'>・Arduinoボード購入先については、ページ右下の&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/arduino.html#shop"&gt;ショップリスト&lt;/a&gt;に掲載（秋葉原のマップは&lt;a href="http://kousaku-kousaku.blogspot.com/2010/06/blog-post.html"&gt;こちら&lt;/a&gt;）。&lt;br /&gt;・&lt;a href="http://www.musashinodenpa.com/arduino/ref/"&gt;Arduino 日本語リファレンス&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;書籍：Books&lt;/span&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113989/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduinoをはじめよう&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113849/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Making Things Talk -Arduinoで作る「会話」するモノたち&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114535/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002XNUJ3U/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;CQ ham radio (ハムラジオ)増刊 マイコンと電子工作No.1 電脳Arduinoでちょっと未来を作る 2010年 01月号 [雑誌]&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789812553/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;アーデュイーノ互換マイコン・ボードを作る (プリント基板付き電子工作解説書シリーズ)&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/159200346X/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Physical Computing: Sensing and Controlling the Physical World with Computers&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/0596154143?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0596154143"&gt;Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0596154143" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1430224770/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Practical Arduino: Cool Projects for Open Source Hardware (Technology in Action)&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596802471/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduino Cookbook (Oreilly Cookbooks)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;基本操作：Basics&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino.html"&gt;Arduinoのセッティング&lt;/a&gt;」--Arduino 0018のダウンロード／インストールの仕方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino_17.html"&gt;Arduino基盤の概要&lt;/a&gt;」--Arduino基盤の機能や端子の説明&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduinoled.html"&gt;Arduino　LEDの点滅&lt;/a&gt;」--プログラム、アップロードの仕方、LEDを点滅させる&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-led.html"&gt;Arduino　７セグLEDの点灯&lt;/a&gt;」--７セグLEDの接続／表示方法&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino_26.html"&gt;Arduino　アナログ入出力&lt;/a&gt;」--LEDの明暗をコントロールする&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;入出力部品の種類：Input/Output Parts and Materials&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post.html"&gt;センサについて&lt;/a&gt;」--赤外線距離センサ、光センサ、タクトスイッチの接続と入力方法&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/blog-post.html"&gt;センサについて２&lt;/a&gt;」--各ショップにおけるセンサの種類（秋月、千石、共立、Sparkfun）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post_02.html"&gt;出力方法について&lt;/a&gt;」--表示、アクチュエータ、熱、音などの出力部品の種類について&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduino.html"&gt;Arduino　モータドライバ+モータ&lt;/a&gt;」--モータドライバやDCモータの種類／選び方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/12/blog-post.html"&gt;スピーカ/音出力について&lt;/a&gt;」--通常のコーンスピーカ以外の特殊なスピーカなどについて&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post_18.html"&gt;導電性素材／材料について&lt;/a&gt;」--電気を通すことができる様々な材料について&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post_22.html"&gt;素材実験／鉛筆の描画線&lt;/a&gt;」--紙の上に鉛筆で描いた線を可変抵抗として使う&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post_5032.html"&gt;素材実験／小型・薄型の材料&lt;/a&gt;」--チップLEDやペーパーバッテリなどの小型部品について&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;センサ（入力系）各種：Sensors/Inputs&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post.html"&gt;センサについて&lt;/a&gt;」--赤外線距離センサ、光センサ、タクトスイッチの接続と入力方法&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino_9230.html"&gt;Arduino　圧電スピーカ&lt;/a&gt;」--ブザー、センサとして圧電スピーカを使う／シリアルモニターの仕方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino_16.html"&gt;Arduino　加速度センサ&lt;/a&gt;」--加速度センサで物体の傾斜角を計測する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinohmc6352.html"&gt;Arduino　デジタルコンパス／HMC6352&lt;/a&gt;」--方位センサ「HMC6352」の使い方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduino_22.html"&gt;Arduino　距離センサ／超音波レンジファインダー&lt;/a&gt;」--Parallax「Ping)))」の使い方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processingbluetooth.html"&gt;Arduino-Processing　BlueTooth通信+曲げセンサ&lt;/a&gt; 」--曲げセンサの入力値をBluetoothで送信する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduino_24.html"&gt;Arduino　タッチパネル（４線式）&lt;/a&gt;」--４線式タッチパネルの接続方法／使い方&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino.html"&gt;Arduino　タッチセンサ&lt;/a&gt;」--抵抗だけでタッチセンサをつくる&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/arduinos9706.html"&gt;Arduino　デジタルカラーセンサ S9706&lt;/a&gt;」--RGB同時測光カラーセンサの実験&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/07/ic-s9648-100.html"&gt;光センサ フォトICダイオード S9648-100&lt;/a&gt;」（建築農業工作ゼミ2009より）&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/07/sht-71.html"&gt;温・湿度センサ SHT-71&lt;/a&gt;」（建築農業工作ゼミ2009より）&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/06/blog-post_14.html"&gt;温度センサ LM35DZ&lt;/a&gt;」（建築農業工作ゼミ2009より）&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/06/lm60biz.html"&gt;温度センサ LM60BIZ&lt;/a&gt;」（建築農業工作ゼミ2009より）&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2010/06/arduino7njl7502l.html"&gt;Arduino：7セグ＋照度センサNJL7502L&lt;/a&gt;」--照度センサで得た値を7セグを用いて表示する&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;マトリクスLED：Matrix LED&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html"&gt;Arduino　マトリクスLED１&lt;/a&gt;」--マトリクスLEDをArduinoに直結して表示する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoledmax7219.html"&gt;Arduino　マトリクスLED２／MAX7219&lt;/a&gt;」--LEDドライバMAX7219でマトリクスLED表示する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラの映像をマトリクスLEDに映す&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;サーボ／モータ／モータドライバ：Servos/Motors/Motor drivers&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino.html"&gt;Arduino　サーボ制御&lt;/a&gt;」--PWM、ライブラリ、パルスによるサーボ制御&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-dcta7291p.html"&gt;Arduino　小型DCモータ／TA7291P&lt;/a&gt;」--モータドライバTA7291Pでモータを制御する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduino.html"&gt;Arduino　モータドライバ+モータ&lt;/a&gt;」--モータドライバやDCモータの種類／選び方&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;シリアル通信：（パソコン上のProcessingプログラムとの通信）Serial communication&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing.html"&gt;Arduino-Processing　シリアル通信１&lt;/a&gt;」--ひとつの値を送信する（非同期通信）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_27.html"&gt;Arduino-Processing　シリアル通信２&lt;/a&gt;」--複数の値を送信する（同期通信）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_28.html"&gt;Arduino-Processing　シリアル通信３&lt;/a&gt;」--大きな値を複数送信する（ビット演算の説明）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/processing-arduino.html"&gt;Processing-Arduino　シリアル通信４&lt;/a&gt;」--Processingの図形をマウスで動かしてArduinoを制御&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」--大きな値、複数の値を文字列で一括送信する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processing.html"&gt;Arduino-Processing　シリアル通信６&lt;/a&gt;」--複数のArduinoをProcessingを通してシリアル通信する&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ワイヤレス／ネットワーク通信：Wireless/Network comminication&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduinoxbee-shieldprocessingxbee.html"&gt;Arduino+Xbee Shield/Processing+XBee Explorer USB&lt;/a&gt;」--Xbee、XBee Explorer USBを用いて無線通信する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processingbluetooth.html"&gt;Arduino-Processing　BlueTooth通信+曲げセンサ&lt;/a&gt; 」--曲げセンサの入力値をBluetoothで送信する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processing-arduino.html"&gt;Processing-Arduino　ネットワーク制御&lt;/a&gt;」--ネットワークを通してサーボ、LEDを制御する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/arduinoethernet-shield.html"&gt;Arduino　Ethernet Shield&lt;/a&gt;」--イーサネットシールドを使って、ArduinoをWebサーバとして機能させる&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2010/03/arduino-mega-ethernet-shield.html"&gt;Arduino Mega + Ethernet Shield&lt;/a&gt;」--未対応のArduino Megaにイーサネットシールドを重ねて使う方法&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/06/arduinoweb.html"&gt;Arduinoで計測した値を指定のwebサーバに送信／保存する&lt;/a&gt;」（建築農業工作ゼミ2009より）&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ビデオ信号／TV：Video signal/TV&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino_26.html"&gt;Arduino　ビデオ信号／テレビ画面に出力&lt;/a&gt;」--Arduinoを使ってテレビ画面に模様や矩形を表示する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino_29.html"&gt;Arduino　ビデオ信号／バウンドするドット&lt;/a&gt;」--Arduinoを使ってテレビ画面に動く映像を表示する&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ライブラリ：Libraries&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/12/processing-arduinofirmata.html"&gt;Processing-Arduino　Firmataライブラリ&lt;/a&gt;」--ProcessingでArduino基板の各設定をし制御する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/arduino-pid.html"&gt;Arduino PID制御ライブラリ&lt;/a&gt;」--PID制御用の専用ライブラリ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;シールド／ハードウェア：Shield/Hardware&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/arduino-touchshield-slide.html"&gt;Arduino TouchShield Slide&lt;/a&gt;」--Liquidwireが販売しているArduino用OLEDタッチパネルスクリーン&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/arduinoli-ion-litium-backpack-stealth.html"&gt;Arduino　Li-ionバッテリ Litium Backpack Stealth&lt;/a&gt;」--Arduino基板用リチウムイオン充電電池パック&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/arduino-ac-power-shield.html"&gt;Arduino AC Power Shield&lt;/a&gt;」--交流電源を制御するArduinoシールド&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/arduino-megaarduino-ide-version-0015.html"&gt;Arduino Mega+Arduino IDE version 0015&lt;/a&gt;」--54個のデジタル入出力ピンがある大型のArduino基板&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2010/03/arduino-mega.html"&gt;Arduino Mega：ピンマッピング&lt;/a&gt;」--Arduino MegaボードとATmage1280のピン配置関係&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/10/arduino-megaanalogread-815.html"&gt;Arduino Mega：analogRead 8~15番ピンのバグ&lt;/a&gt;」--Arduino0017におけるバグの解決方法&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/04/arduino-quad-core-quadruino.html"&gt;Arduino Quad Core Quadruino&lt;/a&gt;」--ATmega328を４個搭載したArduino基板：Quidruino&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2009/03/dsbrut.html"&gt;DSbrut&lt;/a&gt;」--LilyPad ArduinoでプログラムできるニンテンドーDS用のカートリッジ基板&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-7062242660750165504?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/7062242660750165504/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=7062242660750165504' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7062242660750165504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7062242660750165504'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/07/arduino.html' title='目次：Arduino'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-2828000685476364487</id><published>2009-01-30T01:12:00.020+09:00</published><updated>2010-07-02T02:07:44.082+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>目次：Processing</title><content type='html'>&lt;span style="font-weight:bold;"&gt;書籍：Books&lt;/span&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4861007070/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/4873113784?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4873113784"&gt;ビジュアライジング・データ ―Processingによる情報視覚化手法&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=4873113784" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/144937980X/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Getting Started With Processing&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/0262182629?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0262182629"&gt;Processing: A Programming Handbook for Visual Designers and Artists&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0262182629" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/159059617X?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=159059617X"&gt;Processing: Creative Coding and Computational Art (Foundation)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=159059617X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/0123736021?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0123736021"&gt;Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0123736021" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;・&lt;a href="http://www.amazon.co.jp/gp/product/0596154143?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0596154143"&gt;Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0596154143" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;基本操作：Basics&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/04/processing.html"&gt;Processingのダウンロードとインストール&lt;/a&gt;」--Processingのセッティング。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/04/processing_20.html"&gt;Processingの基本操作　その１&lt;/a&gt;」--プログラムの仕方。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/04/processing_7188.html"&gt;Processingの基本操作　その２&lt;/a&gt;」--図形の描画。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/04/processing_5192.html"&gt;Processingの基本操作　その３&lt;/a&gt;」--図形を動かす。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing.html"&gt;Processingの描画サンプル&lt;/a&gt;」--図形を動かすサンプル。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing1.html"&gt;Processing　マウス入力１&lt;/a&gt;」--マウスボタン／クリック。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_13.html"&gt;Processing　マウス入力２&lt;/a&gt;」--マウスに合わせて図形を動かす／図形をドラッグする。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_3561.html"&gt;Processing　マウス入力３&lt;/a&gt;」--図形の上にマウスが重なると色が変わる／ロールオーバー。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_258.html"&gt;Processing　マウス入力４&lt;/a&gt;」--トグルボタン／フラグ／３回押すとオンになるスイッチ。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_14.html"&gt;Processing　文字と画像&lt;/a&gt;」--文字（フォント）の表示方法、画像の取り込みと表示方法。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/processing.html"&gt;Processing　手描きの線の表現&lt;/a&gt;」--手描きで自由に線を描く。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/processing_06.html"&gt;Processing　ドラッグしながら図形を描く&lt;/a&gt;」--描画ソフトのように矩形をドラッグして描く。&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2010/06/processing.html"&gt;Processing：デジタル時計のプログラム&lt;/a&gt;」--時間に合わせて文字列を表示する。&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2010/06/processing_13.html"&gt;Processing：アナログ時計のプログラム&lt;/a&gt;」--時間に合わせて図形を回転させる。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;サウンド：Sound&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingsoniajsyn.html"&gt;Processing　サウンド/Sonia　JSynプラグイン&lt;/a&gt;」--MacOSX(Intel)は、JSynプラグイン再インストールが必要。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing-sonia.html"&gt;Processing　サウンド１／Sonia&lt;/a&gt;」--Soniaライブラリで音源の再生／停止／ポーズする。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing.html"&gt;Processing　サウンド２／逆再生&lt;/a&gt;」--Soniaライブラリで逆再生の音源をつくる。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing_28.html"&gt;Processing　サウンド３／テンポ&lt;/a&gt;」--Soniaライブラリで音源再生のテンポ変換をする。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing_30.html"&gt;Processing　サウンド４／スクラッチ&lt;/a&gt;」--Soniaライブラリを使って曲をスクラッチ演奏する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/12/blog-post.html"&gt;スピーカ/音出力について&lt;/a&gt;」--通常のコーンスピーカ以外の特殊なスピーカなどについて&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ファイル選択／読み込み／書き出し：File chooser/File loading/File output&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser.html"&gt;Processing　FileChooser/ファイル選択画面の表示&lt;/a&gt;」--Java Swingファイルチューザー（画像／音源ファイル読み込み）。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser_12.html"&gt;Processing　FileChooser２&lt;/a&gt;」--ファイルチューザーで画像を選択表示、ドラッグ可能にする。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processing.html"&gt;Processing　ドラッグした図形の動きを記録/保存/再生する&lt;/a&gt;」--データのセーブ／ロードを使ったサンプル。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Webカメラ：Web camera&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」--Webカメラの使い方／映像にフィルタをかけて表示。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラ映像をマトリクスLEDに映す。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html"&gt;Processing　Webカメラを光センサとして使う&lt;/a&gt;」--点光源で画面内に線を描く。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingweb.html"&gt;Processing　Webカメラ／定点記録画像&lt;/a&gt;」--Webカメラ映像を0.5秒おきに画像保存（JPEG）する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html"&gt;Processing　Webカメラ/カラートラッキング&lt;/a&gt;」--Webカメラを使い、色を手がかりに物体を追いかける。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/import-processing.html"&gt;Processing　Webカメラ/モーショントラッキング&lt;/a&gt;」--Webカメラを使って動体検知する。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;シリアル通信：（センサ/アクチュエータ＋Arduino基板との通信）Serial communication&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing.html"&gt;Arduino-Processing　シリアル通信１&lt;/a&gt;」--ひとつの値を送信する（非同期通信）。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_27.html"&gt;Arduino-Processing　シリアル通信２&lt;/a&gt;」--複数の値を送信する（同期通信）。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_28.html"&gt;Arduino-Processing　シリアル通信３&lt;/a&gt;」--大きな値を複数送信する（ビット演算の説明）。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/processing-arduino.html"&gt;Processing-Arduino　シリアル通信４&lt;/a&gt;」--Processingの図形をマウスで動かしてArduinoを制御。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」--大きな値、複数の値を文字列で一括送信する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processing.html"&gt;Arduino-Processing　シリアル通信６&lt;/a&gt;」--複数のArduinoをProcessingとシリアル通信する。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ネットワーク／ワイヤレス通信：Network/Wireless communication&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processing-arduino.html"&gt;Processing-Arduino　ネットワーク制御&lt;/a&gt;」ネットワークを通してサーボ、LEDを制御する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processinghttpweb.html"&gt;Processing　HTTPサーバ/Webページ表示&lt;/a&gt;」--Networkライブラリを使ってWebサーバとして機能させる。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduinoxbee-shieldprocessingxbee.html"&gt;Arduino+Xbee Shield/Processing+XBee Explorer USB&lt;/a&gt;」--Xbee、XBee Explorer USBを用いて無線通信する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processingbluetooth.html"&gt;Arduino-Processing　BlueTooth通信+曲げセンサ&lt;/a&gt;」--曲げセンサの入力値をBluetoothで送信する。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;その他：Others:3D models/Sudden Motion Sensor(Mac)/QR code/Firmata library&lt;/span&gt;&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processing3dobj-loader.html"&gt;Processing　3Dモデル／OBJ Loader&lt;/a&gt;」--外部制作した3Dモデルを読み込む。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingmac.html"&gt;Processing　緊急モーションセンサー(Mac)&lt;/a&gt;」--緊急モーションセンサーで3Dモデルを動かす。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingqr2.html"&gt;Processing　QRコード／2次元コード&lt;/a&gt;」--QRコードを生成／読み込み／解読する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/12/processing-arduinofirmata.html"&gt;Processing-Arduino　Firmataライブラリ&lt;/a&gt;」--ProcessingでArduino基板の各設定をし制御する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processing.html"&gt;Processing　ライブラリのインストール先（v149以降）&lt;/a&gt;」バージョン149以降のライブラリインストール変更点。&lt;br /&gt;「&lt;a href="http://ken-nou-kou.blogspot.com/2009/06/processing.html"&gt;ProcessingプログラムをApplet表示する方法&lt;/a&gt;」--プログラムをWeb上でAppletを使って表示する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-2828000685476364487?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/2828000685476364487/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=2828000685476364487' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2828000685476364487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2828000685476364487'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/07/processing_10.html' title='目次：Processing'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3850770450459382772</id><published>2009-01-11T00:04:00.010+09:00</published><updated>2009-01-11T00:54:43.610+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>展覧会報告</title><content type='html'>建築発明工作ゼミの展覧会「BODY, FURNI, ROOM」が「&lt;a href="http://correlative.org/"&gt;GALLERY OBJECTIVE CORRELATIVE&lt;/a&gt;」にて、2008.12.14-17まで開催されました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjAE2eXToI/AAAAAAAAAfU/JM_KYhjiTRw/s1600-h/IMG_3435.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjAE2eXToI/AAAAAAAAAfU/JM_KYhjiTRw/s400/IMG_3435.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289688951921528450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SWjAFTUb4XI/AAAAAAAAAfc/cYIwoQrMdBs/s1600-h/IMG_3439.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SWjAFTUb4XI/AAAAAAAAAfc/cYIwoQrMdBs/s400/IMG_3439.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289688959664513394" /&gt;&lt;/a&gt;&lt;br /&gt;巨大な折り紙、振動モータ、プロジェクタ、超磁歪素子スピーカ（壁上）を使って相互作用する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SWjAFRASGcI/AAAAAAAAAfk/BH4_9SqL7yM/s1600-h/IMG_3476.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SWjAFRASGcI/AAAAAAAAAfk/BH4_9SqL7yM/s400/IMG_3476.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289688959043115458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SWjAFqrvDoI/AAAAAAAAAfs/wRpMzaU67gk/s1600-h/IMG_3426.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SWjAFqrvDoI/AAAAAAAAAfs/wRpMzaU67gk/s400/IMG_3426.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289688965936254594" /&gt;&lt;/a&gt;&lt;br /&gt;室内壁面上に氷をつくる（ペルチェ素子使用）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjAFzoTE3I/AAAAAAAAAf0/Q3JBT6BOG3I/s1600-h/IMG_3466.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjAFzoTE3I/AAAAAAAAAf0/Q3JBT6BOG3I/s400/IMG_3466.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289688968337757042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjANc-x_5I/AAAAAAAAAf8/XxwS5IAG5AQ/s1600-h/IMG_3469.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SWjANc-x_5I/AAAAAAAAAf8/XxwS5IAG5AQ/s400/IMG_3469.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289689099696996242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SWjANn1K5jI/AAAAAAAAAgE/uWc5y7e0hEU/s1600-h/IMG_3475.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SWjANn1K5jI/AAAAAAAAAgE/uWc5y7e0hEU/s400/IMG_3475.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289689102609475122" /&gt;&lt;/a&gt;&lt;br /&gt;カーテンがモータ制御によって自動的に開閉し、重心移動によりカーテンレール自体が回転する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3850770450459382772?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3850770450459382772/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3850770450459382772' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3850770450459382772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3850770450459382772'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2009/01/blog-post.html' title='展覧会報告'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7uyXRm_coS4/SWjAE2eXToI/AAAAAAAAAfU/JM_KYhjiTRw/s72-c/IMG_3435.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6802440581357274894</id><published>2008-12-21T03:00:00.003+09:00</published><updated>2010-03-10T04:50:48.971+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Firmata'/><title type='text'>Processing-Arduino　Firmataライブラリ</title><content type='html'>今回は、「&lt;a href="http://www.arduino.cc/playground/Interfacing/Processing"&gt;Firmataライブラリ&lt;/a&gt;」のテストを行いたいと思います。&lt;br /&gt;通常Processing-Arduinoの間を通信させるときにはシリアル通信を使い、Processing側のプログラムとArduino側のプログラムをそれぞれ別々に書いていましたが、「&lt;a href="http://www.arduino.cc/playground/Interfacing/Processing"&gt;Firmataライブラリ&lt;/a&gt;」を使うことで、Processing側から直接Arduinoをプログラムし制御することが可能になります（パソコンにUSB接続したArduino基板をProcessing側からのプログラムだけで操作できるので便利です）。&lt;br /&gt;&lt;br /&gt;Firmataライブラリを使うための準備：&lt;br /&gt;・まず&lt;a href="http://www.arduino.cc/playground/uploads/Interfacing/processing-arduino2.zip"&gt;Firmataライブラリ&lt;/a&gt;をダウンロードし、Processingのlibrariesフォルダ内にインストールします。&lt;br /&gt;・Arduino-0012であればArduino用Firmataライブラリは含まれているので、メニューバーのSketchBook&gt;Examples&gt;Library-Firmata&gt;StandardFirmataを開き、Arduino基板にアップロードしておきます。Arduinoのセッティングは以上です。&lt;br /&gt;&lt;br /&gt;今回はProcessing用のFirmataライブラリに含まれているサンプルを用いたいと思います。&lt;br /&gt;Processingを開いて、File&gt;Sketchbook&gt;libraries&gt;arduino&gt;examples&gt;arduino_outputを選択します。&lt;br /&gt;以下のようなプログラムが表示されるはずです。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.serial.*;&lt;br /&gt;&lt;br /&gt;import cc.arduino.*;&lt;br /&gt;&lt;br /&gt;Arduino arduino;&lt;br /&gt;&lt;br /&gt;color off = color(4, 79, 111);&lt;br /&gt;color on = color(84, 145, 158);&lt;br /&gt;&lt;br /&gt;int[] values = { Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,&lt;br /&gt; Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,&lt;br /&gt; Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW };&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  size(470, 200);&lt;br /&gt;  &lt;br /&gt;  println(Arduino.list());&lt;br /&gt;  arduino = new Arduino(this, Arduino.list()[0], 115200);&lt;br /&gt;  &lt;br /&gt;  for (int i = 0; i &lt;= 13; i++)&lt;br /&gt;    arduino.pinMode(i, Arduino.OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  background(off);&lt;br /&gt;  stroke(on);&lt;br /&gt;  &lt;br /&gt;  for (int i = 0; i &lt;= 13; i++) {&lt;br /&gt;    if (values[i] == Arduino.HIGH)&lt;br /&gt;      fill(on);&lt;br /&gt;    else&lt;br /&gt;      fill(off);&lt;br /&gt;      &lt;br /&gt;    rect(420 - i * 30, 30, 20, 20);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed()&lt;br /&gt;{&lt;br /&gt;  int pin = (450 - mouseX) / 30;&lt;br /&gt;  &lt;br /&gt;  if (values[pin] == Arduino.LOW) {&lt;br /&gt;    arduino.digitalWrite(pin, Arduino.HIGH);&lt;br /&gt;    values[pin] = Arduino.HIGH;&lt;br /&gt;  } else {&lt;br /&gt;    arduino.digitalWrite(pin, Arduino.LOW);&lt;br /&gt;    values[pin] = Arduino.LOW;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Processing上でこのプログラムをランさせます。この時点でProcessingから、Arduino基板の各ピンの入出力設定がなされます。Processingでは以下のような画面が現れます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SU1AJgH0txI/AAAAAAAAAec/CdMAieX9iOo/s1600-h/sample.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 170px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SU1AJgH0txI/AAAAAAAAAec/CdMAieX9iOo/s400/sample.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5281948469961209618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;１４個ならんでいる正方形をそれぞれクリックすれば（クリックするとその正方形は塗りつぶされる）、Arduinoの0番ピンから13番ピンの合計14個のピンに対応してデジタル出力されます（Processing画面上の左端の正方形がArduinoの13番ピンに対応）。試しにProcessing画面上左端の正方形をクリックすると、13番ピンに接続されたLED（基板内蔵LED）が点灯します。同様に他の正方形をクリックすれば、それに対応したピンからデジタル出力されることが確認できます（各ピンにLED+抵抗:220Ωを接続して下さい）。&lt;br /&gt;ただし、0番ピンと1番ピンに関しては、Processing-Arduino間でのシリアル通信で使用されているため、クリックしても反応しないので、2番ピンから13番ピンでのデジタル出力制御となります。&lt;br /&gt;&lt;br /&gt;Processingのプログラム上で、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;arduino.pinMode(ピン番号, 入出力設定);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすれば、Arduinoの任意のピンの入出力設定（Arduino.INPUT または Arduino.OUTPUT）を行うことができます。&lt;br /&gt;出力をHIGHかLOWにするには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;arduino.digitalWrite(ピン番号, 出力値);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;で、出力値をarduino.LOWかarduino.HIGHで設定します。&lt;br /&gt;そのほか、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;デジタル入力：arduino.digitalRead(ピン番号)&lt;br /&gt;アナログ入力：arduino.analogRead(ピン番号)&lt;br /&gt;アナログ出力：arduino.analogWrite(ピン番号,出力値)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という感じになるので、arduino.を頭につければ、Arduino上でのプログラムとほぼ同じです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6802440581357274894?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6802440581357274894/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6802440581357274894' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6802440581357274894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6802440581357274894'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/12/processing-arduinofirmata.html' title='Processing-Arduino　Firmataライブラリ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SU1AJgH0txI/AAAAAAAAAec/CdMAieX9iOo/s72-c/sample.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-7328506639858904174</id><published>2008-12-06T16:43:00.014+09:00</published><updated>2010-11-04T17:02:07.731+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='サウンド'/><category scheme='http://www.blogger.com/atom/ns#' term='マテリアル'/><title type='text'>スピーカ/音出力について</title><content type='html'>音を出力するものとしてコーンスピーカが一般的に使われますが、それ以外にも以下のようなものがあります。&lt;br /&gt;&lt;br /&gt;・「&lt;a href="http://akizukidenshi.com/catalog/g/gP-01251/"&gt;圧電スピーカ&lt;/a&gt;」：パルスを送り振動させブザーのような音を鳴らす（「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino_9230.html"&gt;Arduino　圧電スピーカ&lt;/a&gt;」を参照）。&lt;br /&gt;・「&lt;a href="http://www.sengoku.co.jp/mod/sgk_cart/search.php?toku=%25e3%2582%2582%252d%25e3%2581%259f%252d%25e6%258c%25af%25e5%258b%2595&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;振動モータ&lt;/a&gt;」：偏心錘がついたモータによって振動させる（携帯電話のバイブレータなど）。&lt;br /&gt;・「&lt;a href="https://www.marutsu.co.jp/user/shohin.php?p=6749"&gt;ソレノイド&lt;/a&gt;」：電磁石の力によって金属のシリンダーを往復運動させ、物体などをたたくことで音を出す。&lt;br /&gt;・「&lt;a href="http://akizukidenshi.com/catalog/g/gK-02617/"&gt;パラメトリックスピーカ&lt;/a&gt;」：指向性スピーカ（&lt;a href="http://akizukidenshi.com/catalog/g/gP-02430/"&gt;超音波スピーカ&lt;/a&gt;による方向性／反射性のある音のビーム）。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SdMCUsLd7dI/AAAAAAAAAj0/exEbXZNelC0/s1600-h/parasp.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SdMCUsLd7dI/AAAAAAAAAj0/exEbXZNelC0/s400/parasp.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5319598139334585810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;・超磁歪素子という振動体を物体に接触させると、その物体がスピーカのように振動し音を出す機器として以下のようなものがあります。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0034L42VK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41Qype-wPnL._SL160_.jpg" alt="どこでも伝導スピーカー　ホワイト（p-0034-39）" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0034L42VK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;どこでも伝導スピーカー　ホワイト（p-0034-39）&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B0034L42VK/kousakukousak-22/ref=nosim/" title="どこでも伝導スピーカー　ホワイト（p-0034-39）" target="_blank"&gt;amazlet&lt;/a&gt; at 10.04.21&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;ピーナッツクラブ &lt;br /&gt;売り上げランキング: 7277&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0034L42VK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;1550円&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00376ZDU6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51HQCw%2BwapL._SL160_.jpg" alt="ピタッとスピーカー(ブルー)DN-A002BU" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00376ZDU6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;ピタッとスピーカー(ブルー)DN-A002BU&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B00376ZDU6/kousakukousak-22/ref=nosim/" title="ピタッとスピーカー(ブルー)DN-A002BU" target="_blank"&gt;amazlet&lt;/a&gt; at 10.04.17&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;株式会社 StrapyaNext &lt;br /&gt;売り上げランキング: 14047&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00376ZDU6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;2980円から。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F4XZ4S/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51Cdl2m4tqL._SL160_.jpg" alt="何でもスピーカーGPECKER" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F4XZ4S/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;何でもスピーカーGPECKER&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001F4XZ4S/kousakukousak-22/ref=nosim/" title="何でもスピーカーGPECKER" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;日本電話施設株式会社 &lt;br /&gt;売り上げランキング: 12997&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F4XZ4S/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;5500円。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0031571QM/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/213XWDi9GhL._SL160_.jpg" alt="エンティス デジタルサウンドジェネレーター Tunebug-Vibe Tunebug-vibe" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0031571QM/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;エンティス デジタルサウンドジェネレーター Tunebug-Vibe Tunebug-vibe&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B0031571QM/kousakukousak-22/ref=nosim/" title="エンティス デジタルサウンドジェネレーター Tunebug-Vibe Tunebug-vibe" target="_blank"&gt;amazlet&lt;/a&gt; at 10.04.21&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;エンティス (2009-12-18)&lt;br /&gt;売り上げランキング: 3390&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0031571QM/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;7971円。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001CD6B7U/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51u208EiP4L._SL160_.jpg" alt="DESIGN FACTORY　どこでもスピーカー" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001CD6B7U/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;DESIGN FACTORY　どこでもスピーカー&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001CD6B7U/kousakukousak-22/ref=nosim/" title="DESIGN FACTORY　どこでもスピーカー" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;㈱デザインファクトリー &lt;br /&gt;売り上げランキング: 13234&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001CD6B7U/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;4280円。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000J108Q6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51herJyLtAL._SL160_.jpg" alt="NIMZY VIBRO BLASTER SILVER" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000J108Q6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;NIMZY VIBRO BLASTER SILVER&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B000J108Q6/kousakukousak-22/ref=nosim/" title="NIMZY VIBRO BLASTER SILVER" target="_blank"&gt;amazlet&lt;/a&gt; at 09.07.29&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;海連 (2006-10-31)&lt;br /&gt;売り上げランキング: 42650&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000J108Q6/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001M5QSPS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/310BqO1kKIL._SL160_.jpg" alt="デバイスネット ヨロズオーディオ DN-A001" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001M5QSPS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;デバイスネット ヨロズオーディオ DN-A001&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001M5QSPS/kousakukousak-22/ref=nosim/" title="デバイスネット ヨロズオーディオ DN-A001" target="_blank"&gt;amazlet&lt;/a&gt; at 09.07.29&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;デバイスネット (2008-12-05)&lt;br /&gt;売り上げランキング: 19195&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001M5QSPS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;5577円。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000I19BLU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/415DFXT75HL._SL160_.jpg" alt="FOSTEX エア アクティブ・コンタクト・スピーカー ウォーム・シルバー GY-1(S)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000I19BLU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;FOSTEX エア アクティブ・コンタクト・スピーカー ウォーム・シルバー GY-1(S)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B000I19BLU/kousakukousak-22/ref=nosim/" title="FOSTEX エア アクティブ・コンタクト・スピーカー ウォーム・シルバー GY-1(S)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.07.29&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;FOSTEX (2006-06-23)&lt;br /&gt;売り上げランキング: 43846&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000I19BLU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;また、音の入力装置（通常のマイク以外）として「ギター用ピックアップ」のように金属弦の振動を磁気的に拾いとる部品もあります。&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F0X362/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31-3Ta15TbL._SL160_.jpg" alt="Dimarzio DP175/True Velvet Neck/WH エレキギター用ピックアップ" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F0X362/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Dimarzio DP175/True Velvet Neck/WH エレキギター用ピックアップ&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001F0X362/kousakukousak-22/ref=nosim/" title="Dimarzio DP175/True Velvet Neck/WH エレキギター用ピックアップ" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;DiMarzio &lt;br /&gt;売り上げランキング: 120012&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F0X362/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;あるいは磁気テープを読み取る場合、以下のような製品のヘッド部分を取り出して利用することもできます。&lt;br /&gt;&lt;a href="http://mekamekameka.blogspot.com/2010/05/blog-post.html"&gt;カセットテープヘッド&lt;/a&gt;についてのまとめ。&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000V6GP4I/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51gusxtqwbL._SL160_.jpg" alt="カセットアダプターiPod/MP3/MD他 車内使用可 黒" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000V6GP4I/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;カセットアダプターiPod/MP3/MD他 車内使用可 黒&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B000V6GP4I/kousakukousak-22/ref=nosim/" title="カセットアダプターiPod/MP3/MD他 車内使用可 黒" target="_blank"&gt;amazlet&lt;/a&gt; at 10.04.21&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;OEM &lt;br /&gt;売り上げランキング: 46549&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000V6GP4I/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;680円。&lt;br /&gt;以下は改造例。&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/E5D3uYYWmRg&amp;hl=ja_JP&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/E5D3uYYWmRg&amp;hl=ja_JP&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-7328506639858904174?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/7328506639858904174/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=7328506639858904174' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7328506639858904174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/7328506639858904174'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/12/blog-post.html' title='スピーカ/音出力について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7uyXRm_coS4/SdMCUsLd7dI/AAAAAAAAAj0/exEbXZNelC0/s72-c/parasp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-4348367921849170190</id><published>2008-11-29T16:08:00.033+09:00</published><updated>2010-02-20T17:10:04.639+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='モーショントラッキング'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Webカメラ'/><title type='text'>Processing　Webカメラ/モーショントラッキング</title><content type='html'>今回は、Webカメラ（USBカメラ）を使ってProcessing上で動体検知/動体追跡の実験を行ってみます。前回の「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html"&gt;Processing　Webカメラ/カラートラッキング&lt;/a&gt;」に似たプログラムですが、特定の色を追いかけるのではなく、画面上で動いている物体を検知し、その動きの方向に合わせて物体の座標値を取得します。逆に、動いている物体が画面内に見当たらない場合は、なにも検知しないことになります。&lt;br /&gt;&lt;br /&gt;*Windowsの場合、そのままの設定ではこのVideoライブラリを使用することができません。&lt;a href="http://www.shiffman.net/vdig/WinVDIG_101.exe"&gt;WinVDIG 1.0.1&lt;/a&gt;をインストールする必要があります。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;各ピクセルの色の取得：&lt;/span&gt;&lt;br /&gt;・カメラ画像における、前回の画面と今回の画面の各ピクセルの色を比較します。&lt;br /&gt;・320×240の画面サイズであれば76800個のピクセルを&lt;a href="http://www.processing.org/reference/for.html"&gt;for()&lt;/a&gt;を使って繰り返しの比較処理をさせることになります。&lt;br /&gt;・各ピクセルの色を抽出するには、&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[i]&lt;/a&gt;で順番にひとつずつピクセルを取り出します。&lt;br /&gt;・&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[i]&lt;/a&gt;は、画面内のi番目のピクセルの色の値を返します。&lt;br /&gt;・さらに、その一つのピクセルをRGBの３色に分解し、それぞれの値を取得します。&lt;br /&gt;・３色のそれぞれの値を取得するには、&lt;a href="http://www.processing.org/reference/red_.html"&gt;red()&lt;/a&gt;、&lt;a href="http://www.processing.org/reference/green_.html"&gt;green()&lt;/a&gt;、&lt;a href="http://www.processing.org/reference/blue_.html"&gt;blue()&lt;/a&gt;を用います。&lt;br /&gt;・red(pixels[i])と書けば、そのピクセルの赤の値を取得できます（緑、青についても同様に処理）。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;色の比較：&lt;/span&gt;&lt;br /&gt;前回と今回の画面内のピクセルを比較するためには、一旦前回の全ピクセルの色情報を配列に代入して記憶させておきます。そして、記憶させておいた前回の色情報と今回の色情報を各ピクセルごとに比較します。&lt;br /&gt;・色を比較するには、「前回の赤の値」から「今回の赤の値」を差し引きします（最終的に、絶対値&lt;a href="http://www.processing.org/reference/abs_.html"&gt;abs()&lt;/a&gt;を使うので逆でも大丈夫です）。&lt;br /&gt;・各色の値は０〜２５５までの段階があるので、その数値の差となります。緑や青についても同様に値の差を求めておきます。&lt;br /&gt;・各色において、ある一定以上の差があるときに、画面内に「動作」があったと見なします。&lt;br /&gt;・多少細かなノイズなどが含まれるので、差についてはある程度の許容値を設けておきます。例えば、±20以内の差であればノイズと見なし「動作なし」と判断し、それ以上の差があるときにだけ「動作あり」と見なすことにします。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;平均値で座標を求める：&lt;/span&gt;&lt;br /&gt;上記の方法で、設定した許容値を超えるピクセルがあったときに、そのピクセルの画面内でのXY座標値を調べておきます。今回の方法では、許容値を超えるピクセル（変化があったピクセル）のXY座標と個数から平均値を求め、その値をXとYの座標値として利用することにします。&lt;br /&gt;例えば、X座標値100に10個、101に12個、102に8個あるときは、(100*10+101*12+102*8)/(10+12+8)=100.9333となり、この値を平均値としてX座標値にします。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/STHA_7gh3iI/AAAAAAAAAd0/29sgKBjcmnY/s1600-h/mt_green.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 321px; height: 237px;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/STHA_7gh3iI/AAAAAAAAAd0/29sgKBjcmnY/s400/mt_green.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5274208843165982242" /&gt;&lt;/a&gt;&lt;br /&gt;（緑の部分が変化のあったピクセル、赤い正方形の位置がそれらの平均座標値、左上に許容値表示）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「変化があったピクセルを緑で表示し座標値を求めるプログラム」：&lt;/span&gt;&lt;br /&gt;以下のプログラムでは、見やすくするために、変化があったピクセルを緑color(0,255,0)で塗りつぶすことにします。そして、それらのピクセルの平均座標値を求めて、赤い正方形を動かすことにします。&lt;br /&gt;光や明るさの状況に合わせて許容値を調整できるプログラムにしておきます。&lt;br /&gt;左右の矢印キーで色の許容値（変数：tolerance）を調節できるようにします（「←」:-1、「→」:+1）。&lt;br /&gt;変化する数値をPFontを用いて表示するので、「Tools&gt;Create Font...」をクリックし「Monaco-10.vlw」を取り込んでおいて下さい。&lt;br /&gt;「c」キーを押せば、カメラセッティング画面に切り替わります（手動露出や手動コントラストなどに切り替えた方が認識しやすくなります）。&lt;br /&gt;&lt;br /&gt;&lt;a href="#" onClick="showHide('a1');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="a1" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture video;&lt;br /&gt;PFont font;&lt;br /&gt;&lt;br /&gt;int w=320;&lt;br /&gt;int h=240;&lt;br /&gt;&lt;br /&gt;//前回画面ピクセル色を保存するための配列を用意&lt;br /&gt;color[] exColor=new color[w*h];&lt;br /&gt;//許容値の変数：50に設定しておく&lt;br /&gt;int tolerance=50;&lt;br /&gt;&lt;br /&gt;int sumX,sumY;//平均値を求めるための合計座標値の変数&lt;br /&gt;int pixelNum;//変化のあったピクセルを数えるための変数&lt;br /&gt;float x,y;//座標値の変数&lt;br /&gt;float filterX,filterY;//フィルタをかけた座標値の変数&lt;br /&gt;boolean movement=false;//動体の有無のフラグ&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(w, h);  &lt;br /&gt;  video = new Capture(this, w, h);&lt;br /&gt;  font=loadFont("Monaco-10.vlw");&lt;br /&gt;  textFont(font);&lt;br /&gt;  rectMode(CENTER);&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  if(video.available()){&lt;br /&gt;    background(0);&lt;br /&gt;    video.read();&lt;br /&gt;    set(0,0,video);//カメラ映像表示&lt;br /&gt;    loadPixels();//画面内ピクセルをロードしておく&lt;br /&gt;&lt;br /&gt;    movement=false;//動体のフラグをfalseに戻しておく&lt;br /&gt;&lt;br /&gt;    for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;      //前回と今回の画面のピクセルの各色の差を求める&lt;br /&gt;      float difRed=abs(red(exColor[i])-red(video.pixels[i]));&lt;br /&gt;      float difGreen=abs(green(exColor[i])-green(video.pixels[i]));&lt;br /&gt;      float difBlue=abs(blue(exColor[i])-blue(video.pixels[i]));&lt;br /&gt;&lt;br /&gt;      //色の差が許容値以上の場合（動体がある場合）&lt;br /&gt;      if(difRed&gt;tolerance &amp;&amp; difGreen&gt;tolerance &amp;&amp; difBlue&gt;tolerance){&lt;br /&gt;        movement=true;//動体有りのフラグをtrueにしておく&lt;br /&gt;        pixels[i]=color(0,255,0);//そのピクセルを緑にする&lt;br /&gt;        sumX+=i%w;//平均値を求めるためにX座標値を加算する&lt;br /&gt;        sumY+=i/w;//平均値を求めるためにY座標値を加算する&lt;br /&gt;        pixelNum++;//変化のあったピクセル数を数える&lt;br /&gt;      }&lt;br /&gt;      //次回ループのために今回の画面を前回の画面として保存しておく&lt;br /&gt;      exColor[i]=video.pixels[i];&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    //動体があった場合（画面内に変化があった場合）&lt;br /&gt;    if(movement==true){&lt;br /&gt;      updatePixels();//画面内ピクセルをアップデート&lt;br /&gt;      x=sumX/pixelNum;//X座標平均値を求める&lt;br /&gt;      y=sumY/pixelNum;//Y座標平均値を求める&lt;br /&gt;      //各変数を初期化しておく&lt;br /&gt;      sumX=0;&lt;br /&gt;      sumY=0;&lt;br /&gt;      pixelNum=0;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  filterX+=(x-filterX)*0.3;//X座標にフィルタをかける&lt;br /&gt;  filterY+=(y-filterY)*0.3;//Y座標にフィルタをかける&lt;br /&gt;  fill(255,0,0);&lt;br /&gt;  rect(filterX,filterY,20,20);//正方形描画&lt;br /&gt;  text(tolerance,10,10);//許容値を表示 &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  if(key=='c'){&lt;br /&gt;    video.settings();//カメラセッティング&lt;br /&gt;  }&lt;br /&gt;  if(key==CODED){&lt;br /&gt;    if(keyCode==LEFT){&lt;br /&gt;      tolerance-=1;//許容値を-1する&lt;br /&gt;    }&lt;br /&gt;    if(keyCode==RIGHT){&lt;br /&gt;      tolerance+=1;//許容値を+1する&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Pongをプレイ」&lt;/span&gt;&lt;br /&gt;次に、応用として「Pong」のパドルをモーショントラッキングで動かすサンプルをつくってみます。&lt;br /&gt;動作によって変化があったピクセルの位置が画面内の左側あるいは右側を判別し、左右のパドルを個別に動かせるようにします。画面の端から50ピクセル幅のエリアで動作検知します（画面中央付近では反応しません）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/STE2D2RejDI/AAAAAAAAAds/VQYWpbbpvNc/s1600-h/pong_mt.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 318px; height: 244px;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/STE2D2RejDI/AAAAAAAAAds/VQYWpbbpvNc/s400/pong_mt.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5274056078363888690" /&gt;&lt;/a&gt;&lt;br /&gt;（モーショントラッキングで「Pong」をプレイする）&lt;br /&gt;&lt;br /&gt;以下プログラムを実行するには点数表示用としてフォント（Monaco-10.vlw, smoothなし）を取り込む必要があります。&lt;br /&gt;プレイしやすいように、カメラ映像は左右反転（鏡像）しています。&lt;br /&gt;左右矢印キーで許容値を調整します（画面には許容値は表示されません）。&lt;br /&gt;画面上部に点数を表示。&lt;br /&gt;「c」キーでカメラセッティング。&lt;br /&gt;「スペース」キーで点数をリセット。&lt;br /&gt;&lt;br /&gt;&lt;a href="#" onClick="showHide('a2');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="a2" style="display: none"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture video;&lt;br /&gt;PFont font;&lt;br /&gt;&lt;br /&gt;int w=320;&lt;br /&gt;int h=240;&lt;br /&gt;//前回画面ピクセル色を保存するための配列を用意&lt;br /&gt;color[] exColor=new color[w*h];&lt;br /&gt;int tolerance=20;&lt;br /&gt;&lt;br /&gt;float y;//右パドルのY座標&lt;br /&gt;int sumY;//平均値を求めるための合計座標値の変数&lt;br /&gt;int pixelNum;//変化のあったピクセル数を数えるための変数&lt;br /&gt;float filterY;//フィルタをかけたY座標変数&lt;br /&gt;boolean movement=false;//動体検知フラグ&lt;br /&gt;&lt;br /&gt;float y2;//左パドルのY座標&lt;br /&gt;int sumY2;//平均値を求めるための合計座標値の変数&lt;br /&gt;int pixelNum2;//変化のあったピクセル数を数えるための変数&lt;br /&gt;float filterY2;//フィルタをかけたY座標変数&lt;br /&gt;boolean movement2=false;//動体検知フラグ&lt;br /&gt;&lt;br /&gt;int ballX=-200,ballY=height/3;//ボール座標&lt;br /&gt;int dirX=1,dirY=1;//ボールの向きの変数&lt;br /&gt;int speedX=2,speedY=2;//ボール移動量変数&lt;br /&gt;int pt=0,pt2=0;//点数の変数&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(w, h);  &lt;br /&gt;  video = new Capture(this, w, h);&lt;br /&gt;  font=loadFont("Monaco-10.vlw");&lt;br /&gt;  textFont(font);&lt;br /&gt;  rectMode(CENTER);&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  &lt;br /&gt;  if(video.available()){&lt;br /&gt;    background(0);&lt;br /&gt;    video.read();&lt;br /&gt;    scale(-1,1);//画面を鏡像（左右反転）&lt;br /&gt;    image(video,-w,0);//鏡像のため映像のX座標を-wにして表示&lt;br /&gt;    scale(-1,1);//鏡像を戻しておく&lt;br /&gt;    &lt;br /&gt;    movement=false;//動体検知のフラグをfalseにしておく（初期化）&lt;br /&gt;    movement2=false;&lt;br /&gt;&lt;br /&gt;    for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;      //前回と今回の画面のピクセルの各色の差を求める&lt;br /&gt;      float difRed=abs(red(exColor[i])-red(video.pixels[i]));&lt;br /&gt;      float difGreen=abs(green(exColor[i])-green(video.pixels[i]));&lt;br /&gt;      float difBlue=abs(blue(exColor[i])-blue(video.pixels[i]));&lt;br /&gt;      &lt;br /&gt;      //色の差が許容値以上の場合（動体がある場合）&lt;br /&gt;      if(difRed&gt;tolerance &amp;&amp; difGreen&gt;tolerance &amp;&amp; difBlue&gt;tolerance){&lt;br /&gt;        if(i%w&amp;lt;50){//X座標が50以下の場合（画面右側の場合）&lt;br /&gt;          movement=true;//動態検知フラグをtrueにしておく&lt;br /&gt;          sumY+=i/w;//平均値を求めるために座標値を加算しておく&lt;br /&gt;          pixelNum++;//ピクセル数を数えておく&lt;br /&gt;        }&lt;br /&gt;        if(i%w&gt;width-50){//X座標が270以上の場合（画面左側の場合）&lt;br /&gt;          movement2=true;&lt;br /&gt;          sumY2+=i/w;&lt;br /&gt;          pixelNum2++;&lt;br /&gt;        }        &lt;br /&gt;      }&lt;br /&gt;      //次回ループのために今回の画面を前回の画面として保存しておく&lt;br /&gt;      exColor[i]=video.pixels[i];&lt;br /&gt;    }&lt;br /&gt;    if(movement==true){//動体検知した場合（画面右）&lt;br /&gt;      y=sumY/pixelNum;//平均Y座標を求める&lt;br /&gt;      //0に戻しておく（初期化）&lt;br /&gt;      sumY=0;&lt;br /&gt;      pixelNum=0;&lt;br /&gt;    }&lt;br /&gt;    if(movement2==true){//動体検知した場合（画面左）&lt;br /&gt;      y2=sumY2/pixelNum2;&lt;br /&gt;      sumY2=0;&lt;br /&gt;      pixelNum2=0;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  //フィルタをかけたパドルのY座標値  &lt;br /&gt;  filterY+=(y-filterY)*0.4;&lt;br /&gt;  filterY2+=(y2-filterY2)*0.4;&lt;br /&gt;&lt;br /&gt;  //ボール上下跳ね返りの処理  &lt;br /&gt;  if(ballY&amp;lt;5){&lt;br /&gt;    ballY=5;&lt;br /&gt;    dirY=1;&lt;br /&gt;  }&lt;br /&gt;  if(ballY&gt;height-5){&lt;br /&gt;    ballY=height-5;&lt;br /&gt;    dirY=-1;&lt;br /&gt;  }&lt;br /&gt;  //ボールがパドルに当たって跳ね返る処理&lt;br /&gt;  if(ballX&gt;25 &amp;&amp; ballX&amp;lt;30 &amp;&amp; ballY&gt;filterY2-28 &amp;&amp; ballY&amp;lt;filterY2+28 &amp;&amp; dirX==-1){&lt;br /&gt;    ballX=30;&lt;br /&gt;    dirX=1;&lt;br /&gt;  }&lt;br /&gt;  if(ballX&gt;width-30 &amp;&amp; ballX&amp;lt;width-25 &amp;&amp; ballY&gt;filterY-28 &amp;&amp; ballY&amp;lt;filterY+28 &amp;&amp; dirX==1){&lt;br /&gt;    ballX=width-30;&lt;br /&gt;    dirX=-1;&lt;br /&gt;  }&lt;br /&gt;  //ボールが画面端から出てしまったときの処理（得点処理）&lt;br /&gt;  if(ballX&amp;lt;0 &amp;&amp; dirX==-1){&lt;br /&gt;    ballX=width+200;//ボールを画面反対側へ移動&lt;br /&gt;    pt+=1;//左プレイヤー点数加算&lt;br /&gt;  }&lt;br /&gt;  if(ballX&gt;width &amp;&amp; dirX==1){&lt;br /&gt;    ballX=-200;//ボールを画面反対側へ移動&lt;br /&gt;    pt2+=1;//右プレイヤー点数加算&lt;br /&gt;  }&lt;br /&gt;  //ボールの移動量&lt;br /&gt;  ballX+=speedX*dirX;&lt;br /&gt;  ballY+=speedY*dirY;&lt;br /&gt;  fill(255);塗り色（白）&lt;br /&gt;  rect(width-20,filterY,10,50);//右パドル表示&lt;br /&gt;  rect(20,filterY2,10,50);//左パドル表示&lt;br /&gt;  rect(ballX,ballY,10,10);//ボール表示&lt;br /&gt;  text(pt,60,20);//左プレイヤー点数表示&lt;br /&gt;  text(pt2,width-65,20);//右プレイヤー点数表示&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  if(key=='c'){//cキーでカメラセッティング&lt;br /&gt;    video.settings();&lt;br /&gt;  }&lt;br /&gt;  if(key==' '){//スペースキーで点数をリセット&lt;br /&gt;    pt=0;&lt;br /&gt;    pt2=0;&lt;br /&gt;  }&lt;br /&gt;  if(key==CODED){&lt;br /&gt;    if(keyCode==LEFT){&lt;br /&gt;      tolerance-=1;&lt;br /&gt;      if(tolerance&lt;0){&lt;br /&gt;        tolerance=0;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    if(keyCode==RIGHT){&lt;br /&gt;      tolerance+=1;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;Webカメラ：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」--Webカメラの使い方／映像にフィルタをかけて表示。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラ映像をマトリクスLEDに映す。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html"&gt;Processing　Webカメラを光センサとして使う&lt;/a&gt;」--点光源で画面内に線を描く。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingweb.html"&gt;Processing　Webカメラ／定点記録画像&lt;/a&gt;」--Webカメラ映像を0.5秒おきに画像保存（JPEG）する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html"&gt;Processing　Webカメラ/カラートラッキング&lt;/a&gt;」--Webカメラを使い、色を手がかりに物体を追いかける。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=ITZrhoJYN4w&amp;offerid=137851.10000013&amp;subid=0&amp;type=4"&gt;&lt;IMG border="0"   alt="ロジクールストア（ウェブカメラカテゴリ）" src="http://ad.linksynergy.com/fs-bin/show?id=ITZrhoJYN4w&amp;bids=137851.10000013&amp;subid=0&amp;type=4&amp;gridnum=0"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-4348367921849170190?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/4348367921849170190/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=4348367921849170190' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4348367921849170190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4348367921849170190'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/import-processing.html' title='Processing　Webカメラ/モーショントラッキング'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/STHA_7gh3iI/AAAAAAAAAd0/29sgKBjcmnY/s72-c/mt_green.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5815681454824940337</id><published>2008-11-26T05:40:00.018+09:00</published><updated>2010-02-20T17:09:28.686+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='カラートラッキング'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Webカメラ'/><title type='text'>Processing　Webカメラ/カラートラッキング</title><content type='html'>今回はProcessingとWebカメラ（USBカメラ）を使い、色を手がかりとして画面内で動く物体の座標値を取得してみます。例えば、カメラに向かって動かした赤いボールの座標値を検出し、XY座標をArduinoへシリアル通信すれば、ボールの動きに応じてサーボなどを動かすことができます。&lt;br /&gt;最初に物体の色を記憶させ、その色に近いピクセルを画面内から抜き出します。抜き出されたピクセルのXY座標値を調べ、中点や平均値を使って最終的なXY座標を導き出します。必ずしも単一の色面を背景にする必要はないのですが、色を手がかりとするので、対象とする物体と背景の色の差がある方が検出しやすくなります。&lt;br /&gt;&lt;br /&gt;尚、Webカメラを使った画像認識や動体検知などのプログラムとしてFile&gt;Examples&gt;Libraries&gt;Video(Capture)の中に「&lt;a href="http://www.processing.org/learning/libraries/brightnesstracking.html"&gt;BrightnessTracking&lt;/a&gt;」や「&lt;a href="http://www.processing.org/learning/libraries/framedifferencing.html"&gt;FrameDifferencing&lt;/a&gt;」などのサンプルがあります。また、ライブラリとしては「&lt;a href="http://webcamxtra.sourceforge.net/"&gt;JMyron&lt;/a&gt;」があります（「&lt;a href="http://webcamxtra.sourceforge.net/"&gt;JMyron&lt;/a&gt;」のサンプルでは「Myron_CameraAsMouse」があります）。&lt;br /&gt;&lt;br /&gt;Webカメラ（USBカメラ）を使用するには、ProcessingのVideoライブラリをインポートします。Webカメラの基本的な使い方は「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」や色抽出する方法として「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html"&gt;Processing　Webカメラを光センサとして使う&lt;/a&gt;」を参照して下さい。&lt;br /&gt;&lt;br /&gt;*Windowsの場合、そのままの設定ではこのVideoライブラリを使用することができません。&lt;a href="http://www.shiffman.net/vdig/WinVDIG_101.exe"&gt;WinVDIG 1.0.1&lt;/a&gt;をインストールする必要があります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SSwWEkJ9D_I/AAAAAAAAAdc/9ndy5URR5_c/s1600-h/colortrack.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 321px; height: 241px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SSwWEkJ9D_I/AAAAAAAAAdc/9ndy5URR5_c/s400/colortrack.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5272613531424722930" /&gt;&lt;/a&gt;&lt;br /&gt;「Processing上の画面」&lt;br /&gt;（手に握った物体の動きに合わせて赤い円が動く）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今回の設定として：&lt;br /&gt;・キャプチャする映像のサイズ（幅:w、高さ:h）を320×240（4:3）にします。&lt;br /&gt;　（処理速度が遅くなる場合は160×120などの小さいサイズに変更して下さい。）&lt;br /&gt;・最初に、画面内の対象となる物体をマウスでクリックし、そのピクセルの色を記憶しておきます。&lt;br /&gt;　（背景とはできる限り異なる色の物体を選ぶ方が認識しやすくなります。）&lt;br /&gt;・物体の動きに合わせて、画面上の図形（赤い円）が動くプログラムにします。&lt;br /&gt;&lt;br /&gt;プログラムの手順としては：&lt;br /&gt;・video.&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[]&lt;/a&gt;で、カメラ映像内の各ピクセル（320×240=76800ピクセル）を全て読み込みます。&lt;br /&gt;・対象となる物体の色（特定の１ピクセル分の色）を&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[]&lt;/a&gt;で取り出します。&lt;br /&gt;・各ピクセルを&lt;a href="http://www.processing.org/reference/red_.html"&gt;red()&lt;/a&gt;、&lt;a href="http://www.processing.org/reference/green_.html"&gt;green()&lt;/a&gt;、&lt;a href="http://www.processing.org/reference/blue_.html"&gt;blue()&lt;/a&gt;でRGBに分解します。&lt;br /&gt;・各ピクセルの色と物体の色を各RGB色ごとに比較します。&lt;br /&gt;・比較した各RGB色が設定した許容値（tolerance）以内であるかを判別します。&lt;br /&gt;・許容値以内のピクセルがある場合、そのピクセルの座標値を調べます。&lt;br /&gt;・選択された複数のピクセルの座標を統合して、最終的にXY座標を導き出します。&lt;br /&gt;・導かれた座標を図形（赤い円）の座標に代入し、物体に合わせて図形（赤い円）が動くようにします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「選択したピクセルの色をRGBに分解し判別する」：&lt;/span&gt;&lt;br /&gt;ひとつのピクセルである&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[i]&lt;/a&gt;には、&lt;a href="http://www.processing.org/reference/color_.html"&gt;color(R,G,B)&lt;/a&gt;の３つの値が含まれています（アルファ値／透明度も含めれば４つになりますが、今回はRGB値だけを扱います）。各RGB色に分解するには、red(pixels[i])、green(pixels[i])、blue(pixels[i])というようにred()、green()、blue()を用いてpixels[i]を括ります。得られる値はそれぞれ0.0~255.0の小数値になります。色を特定化しても光の反射などによって多少色が変化するので、特定化する色にある程度の許容値を与えておきます。例えば、赤の値が80の場合、許容値を10にすることで70~90の値であれば同等の色と見なすことにします。許容値が小さすぎれば、色が限定されすぎるので取りこぼしがでてきます。逆に許容値が大きすぎれば、他の色を混同してしまうので、状況に応じて調整できるようにプログラムすることにします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「pixels[i]をXY座標に変換する方法」：&lt;/span&gt;&lt;br /&gt;画面幅をw=320、高さをh=240とします。横一列には320個のピクセルが並んでおり、さらに320個のピクセルが240行並んでいます。つまり一つの画面内には、合計で76800個のピクセルがあります。&lt;br /&gt;&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[i]&lt;/a&gt;のiには、画面左上の0番目のピクセルから画面右下の76799番目のピクセルまでの連続した数値が入ります。例えば、画面上の(120,40)というXY座標は、画面幅をwとした場合、120+40*w=12920なので12920番目のピクセルであり、pixels[12920]になります。逆に、この12920番目のピクセルを画面上のX座標とY座標に変換するには、x=i%w、y=i/w（つまり、x=12920%320、y=12920/320）となります。「&lt;a href="http://www.processing.org/reference/modulo.html"&gt;%&lt;/a&gt;」は割り算の余りを求める式で、「&lt;a href="http://www.processing.org/reference/divide.html"&gt;/&lt;/a&gt;」は割り算ですが整数（&lt;a href="http://www.processing.org/reference/int.html"&gt;int&lt;/a&gt;）で割っているので小数点以下は切り捨てられます（四捨五入なし）。&lt;br /&gt;マウスの座標値(&lt;a href="http://www.processing.org/reference/mouseX.html"&gt;mouseX&lt;/a&gt;,&lt;a href="http://www.processing.org/reference/mouseY.html"&gt;mouseY&lt;/a&gt;)であれば、pixels[mouseX+mouseY*w]になります。&lt;br /&gt;&lt;br /&gt;上記の方法で選ばれたピクセル（物体の色のピクセル）は複数個あるので、それらのピクセルを座標値に置き換えるには幾つかの方法があります。&lt;br /&gt;ひとつは：&lt;br /&gt;画面内において最も右端にあるピクセルのX座標と左端にあるピクセルのX座標、ならびに上端にあるピクセルのY座標と下端にあるピクセルのY座標を調べ、右端と左端の中点をX座標、上端と下端の中点をY座標とみなす方法です。弱点としては、近似色がノイズとして画面上にある場合、そのピクセルも拾ってしまうことです。ノイズを除去するプログラムや予め画面全体にぼかしをかけることである程度回避できます。&lt;br /&gt;もうひとつは：&lt;br /&gt;選択したピクセル（物体の色のピクセル）が多く分布している箇所を調べ、ピクセルの分布数と位置から平均値を割り出す方法です。この場合、多少のノイズがあっても大きなずれは発生しなくなります。&lt;br /&gt;その他の方法も考えられますが、今回は上記二つの方法で実験してみたいと思います。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「操作手順」：&lt;/span&gt;&lt;br /&gt;プログラムが開始したら、画面上で対象となる物体をクリックして物体の色を記憶させます。画面左上に、10ピクセル角の矩形でその色が表示されます。直径20ピクセルの赤い円が、物体の移動に合わせて動きます（物体を追跡します）。&lt;br /&gt;左右の矢印キーで色の許容値（変数：tolerance）を調節できるようにします（「←」:-1、「→」:+1）。&lt;br /&gt;変化する数値をPFontを用いて表示するので、Tools&gt;Create Font...をクリックし「Monaco-10.vlw」を取り込んでおいて下さい（「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_14.html"&gt;Processing　文字と画像&lt;/a&gt;」を参照）。&lt;br /&gt;また、「c」キーを押せば、カメラセッティング画面に切り替わります（手動露出や手動コントラストなどに切り替えた方が認識しやすくなります）。&lt;br /&gt;画面上に許容値を含めた物体の色がある場合は、「detected」という文字が表示されます。もし、近似色がない場合は「none」が表示され、赤い円は前回の位置に留まります。再度近似色が画面内に現れれば、赤い円はその位置に移動します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「左右端、上下端の中点を座標値にするプログラム」：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('p1');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="p1" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ビデオライブラリのインポート&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture video;//インスタンス生成&lt;br /&gt;PFont font;//フォントを用意&lt;br /&gt;&lt;br /&gt;int w=320;//画面幅&lt;br /&gt;int h=240;//画面高&lt;br /&gt;int tolerance=15;//色許容値用の変数（後で調整可）&lt;br /&gt;color targetColor=color(255,0,0);//物体の色用の変数（後で変更可）&lt;br /&gt;&lt;br /&gt;int x;//図形座標用変数&lt;br /&gt;int y;&lt;br /&gt;int xmin=w,xmax=0;//左端X座標、右端X座標&lt;br /&gt;int ymin=h,ymax=0;//上端Y座標、下端Y座標&lt;br /&gt;&lt;br /&gt;boolean detection=false;//物体検知のフラグ&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(w, h);//画面サイズ設定&lt;br /&gt;  smooth();//滑らかな描画に設定&lt;br /&gt;  video = new Capture(this, w, h);//キャプチャ映像の設定&lt;br /&gt;  font=loadFont("Monaco-10.vlw");//フォントをロード&lt;br /&gt;  textFont(font);//フォントの設定&lt;br /&gt;  noStroke();//外形線なし&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  if(video.available()){//キャプチャ映像がある場合&lt;br /&gt;    video.read();//映像読み込み&lt;br /&gt;    //video.filter(BLUR,2);必要に応じてぼかしフィルタをつかう（ノイズ除去用）  &lt;br /&gt;    set(0,0,video);//映像表示&lt;br /&gt;    &lt;br /&gt;    detection=false;//物体検知のフラグをfalse（検知なし）にしておく&lt;br /&gt;&lt;br /&gt;    for(int i=0;i&amp;lt;w*h;i++){//画面全体のピクセル数だけ繰り返し処理&lt;br /&gt;      //物体の色と各ピクセルの色の差を求める（RGB３色分）&lt;br /&gt;      float difRed=abs(red(targetColor)-red(video.pixels[i]));&lt;br /&gt;      float difGreen=abs(green(targetColor)-green(video.pixels[i]));&lt;br /&gt;      float difBlue=abs(blue(targetColor)-blue(video.pixels[i]));&lt;br /&gt;&lt;br /&gt;      //RGB各色が許容値以内の場合（近似色である場合）&lt;br /&gt;      if(difRed&amp;lt;tolerance &amp;&amp; difGreen&amp;lt;tolerance &amp;&amp; difBlue&amp;lt;tolerance){&lt;br /&gt;        //フラグを物体検知有りにする&lt;br /&gt;        detection=true;&lt;br /&gt;&lt;br /&gt;        //左端、右端のX座標、上端、下端のY座標を導く&lt;br /&gt;        //今回の値と今までの値を比較し、最小値、最大値を調べる&lt;br /&gt;        xmin=min(i%w,xmin);//左端（X最小値）&lt;br /&gt;        xmax=max(i%w,xmax);//右端（X最大値）&lt;br /&gt;        ymin=min(i/w,ymin);//上端（Y最小値）&lt;br /&gt;        ymax=max(i/w,ymax);//下端（Y最大値）&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    if(detection==true){//物体検知有りの場合&lt;br /&gt;      x=(xmin+xmax)/2;//X座標を左端と右端の座標の中点とする&lt;br /&gt;      y=(ymin+ymax)/2;//Y座標を上端と下端の座標の中点とする&lt;br /&gt;&lt;br /&gt;      //左端、右端、上端、下端の座標値を初期化しておく&lt;br /&gt;      xmin=w;&lt;br /&gt;      xmax=0;&lt;br /&gt;      ymin=h;&lt;br /&gt;      ymax=0;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  fill(255,0,0);//塗り色：赤&lt;br /&gt;  ellipse(x,y,20,20);//円描画（求めたXY座標を代入）&lt;br /&gt;&lt;br /&gt;  //以下は設定内容の表示&lt;br /&gt;  fill(targetColor);//指定した物体の色&lt;br /&gt;  rect(0,0,10,10);//矩形表示&lt;br /&gt;  &lt;br /&gt;  String s;//物体検知有無表示の文字列変数&lt;br /&gt;  if(detection==true){//物体検知有りの場合&lt;br /&gt;    s="detected";//表示：「検知」&lt;br /&gt;  }else{&lt;br /&gt;    s="none";//表示：「なし」&lt;br /&gt;  }&lt;br /&gt;  text(tolerance+": "+s,20,10);//文字列表示（許容値：物体検知有無）&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){//クリックしたら&lt;br /&gt;  //マウス座標上のピクセルの色（物体の色）を記憶しておく&lt;br /&gt;  targetColor=video.pixels[mouseX+mouseY*w];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  if(key=='c'){//「c」キーを押した場合&lt;br /&gt;    video.settings();//カメラセッティング&lt;br /&gt;  }&lt;br /&gt;  if(key==CODED){&lt;br /&gt;    if(keyCode==LEFT){//左キーを押した場合&lt;br /&gt;      tolerance-=1;   //許容値を-1する&lt;br /&gt;    }&lt;br /&gt;    if(keyCode==RIGHT){//右キーを押した場合&lt;br /&gt;      tolerance+=1;    //許容値を+1する&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;＊プログラムを開始する前にTools&gt;Create Font...をクリックし「Monaco-10.vlw」を取り込んでおいて下さい（スケッチフォルダの中のdataフォルダ内にフォントが保存されます）。&lt;br /&gt;複数あるピクセルのうち左端、右端、上端、下端のピクセルを抜き出すために、最小値と最大値を求めるための&lt;a href="http://www.processing.org/reference/min_.html"&gt;min()&lt;/a&gt;、&lt;a href="http://www.processing.org/reference/max_.html"&gt;max()&lt;/a&gt;を用いました。各ピクセルの座標値を比較し、X座標においては最小座標値を左端座標値とし、最大座標値を右端座標値として扱います。Y座標に対しても同様に導き出します。そして、それらの中点を最終的なXY座標値とします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「分布するピクセルから割り出す方法」：&lt;/span&gt;&lt;br /&gt;次は、物体の近似色のピクセルの分布から平均値を求めて座標値を割り出す方法についてです。&lt;br /&gt;先ほどの方法と同様にfor()で全てのピクセルの色を識別し、その中から物体の近似色のピクセルを選びます。その際に近似色のピクセルの個数と、そのピクセルのXY座標値をそれぞれ加算しておきます。最終的に加算されたそれぞれの値を近似色のピクセル数で割って平均値を求めます。例えば、X座標値100に10個、101に12個、102に8個あるときは、(100*10+101*12+102*8)/(10+12+8)=100.9333となります。Y座標についても同様に求めておきます。&lt;br /&gt;&lt;br /&gt;以下のプログラムでは、カメラからの映像を左右反転の鏡像として表示することにします（カメラに向かって、右に物体を動かせば、画面上でも右に動くようにします）。&lt;br /&gt;「v」キーを押すことで、カメラからの映像を表示／非表示切り替え可能にします。&lt;br /&gt;円の動きを滑らかにするために、移動量にフィルタをかけることにしました。&lt;br /&gt;物体検知用のフラグがtrueの場合、許容値toleranceは自動的に下がり、falseの場合は自動的に上がるようにしました（変化の範囲は2~25に設定してあります）。設定した最大許容値:25以内の近似色が画面内にある場合は反応してしまいます（フラグがtrueになる）。不自然な反応をとる場合、最大許容値を下げるか、前回のプログラムのように手動で調整する内容に変更してみてください。&lt;br /&gt;赤文字部分が、前回と異なる部分です。&lt;br /&gt;前回同様、プログラムを開始する前に、使用するフォントを取り込んでおいて下さい（「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_14.html"&gt;Processing　文字と画像&lt;/a&gt;」を参照）。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「分布するピクセルから割り出すプログラム」：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('p2');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="p2" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture video;&lt;br /&gt;PFont font;&lt;br /&gt;&lt;br /&gt;int w=320;&lt;br /&gt;int h=240;&lt;br /&gt;int tolerance=20;&lt;br /&gt;color targetColor=color(255,0,0);&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;float x;//X座標変数（小数値）&lt;br /&gt;float y;//Y座標変数（小数値）&lt;br /&gt;int sumX,sumY;//座標平均値を求めるための加算用変数&lt;br /&gt;int pixelNum;//近似色ピクセルの個数用変数&lt;br /&gt;float filterX,filterY;//滑らかな動きのためのフィルタ用変数&lt;br /&gt;boolean videoImage=true;//カメラ映像の表示／非表示切り替えフラグ&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;boolean detection=false;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(w, h);&lt;br /&gt;  smooth();&lt;br /&gt;&lt;br /&gt;  video = new Capture(this, w, h);&lt;br /&gt;  font=loadFont("Monaco-10.vlw");&lt;br /&gt;  textFont(font);&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  if(video.available()){&lt;br /&gt;    video.read();&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;    scale(-1.0,1.0);//鏡像反転&lt;br /&gt;    if(videoImage){//カメラ映像表示の場合&lt;br /&gt;      image(video, -w, 0);//カメラ映像を表示する&lt;br /&gt;    }else{               //カメラ映像非表示の場合&lt;br /&gt;      background(0);     //背景（黒）にする&lt;br /&gt;    }&lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;    detection=false;&lt;br /&gt;    &lt;br /&gt;    for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;      float difRed=abs(red(targetColor)-red(video.pixels[i]));&lt;br /&gt;      float difGreen=abs(green(targetColor)-green(video.pixels[i]));&lt;br /&gt;      float difBlue=abs(blue(targetColor)-blue(video.pixels[i]));&lt;br /&gt;&lt;br /&gt;      if(difRed&amp;lt;tolerance &amp;&amp; difGreen&amp;lt;tolerance &amp;&amp; difBlue&amp;lt;tolerance){&lt;br /&gt;        detection=true;&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;        sumX+=(i%w);//X座標値を加算する&lt;br /&gt;        sumY+=(i/w);//Y座標値を加算する&lt;br /&gt;        pixelNum++;//近似色ピクセルの個数を加算する&lt;br /&gt;&lt;/font&gt;        &lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;font color="#FF0000"&gt;    &lt;br /&gt;    if(detection){//物体検知有りの場合&lt;br /&gt;      x=sumX/pixelNum;//X座標平均値を求める&lt;br /&gt;      y=sumY/pixelNum;//Y座標平均値を求める&lt;br /&gt;      &lt;br /&gt;      //初期化しておく&lt;br /&gt;      sumX=0;&lt;br /&gt;      sumY=0;&lt;br /&gt;      pixelNum=0;&lt;br /&gt;      &lt;br /&gt;      tolerance--;//許容値を-1ずつ下げる&lt;br /&gt;      if(tolerance&amp;lt;2){//許容値が2より小さくなったら&lt;br /&gt;        tolerance=2;     //許容値を2に戻す&lt;br /&gt;      }&lt;br /&gt;    }else{//物体検知無しの場合&lt;br /&gt;      tolerance++;//許容値を+1ずつ上げる&lt;br /&gt;      if(tolerance&gt;25){//許容値が25より大きくなったら&lt;br /&gt;        tolerance=25;  //許容値を25に戻す&lt;br /&gt;      }&lt;br /&gt;    }&lt;/font&gt; &lt;br /&gt;  }&lt;font color="#FF0000"&gt;&lt;br /&gt;  scale(-1.0,1.0);//鏡像反転を戻しておく&lt;br /&gt;  filterX+=(x-filterX)*0.3;//X座標変化量のフィルタ、「0.3」は係数&lt;br /&gt;  filterY+=(y-filterY)*0.3;//Y座標変化量のフィルタ、「0.3」は係数&lt;br /&gt;&lt;br /&gt;  fill(255,0,0);//塗り色（赤）&lt;br /&gt;  ellipse(w-filterX,filterY,20,20);//フィルタ値を用いて円描画&lt;br /&gt;  //ellipse(w-x,y,20,20);//フィルタ値を使わない場合&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;  fill(targetColor);&lt;br /&gt;  rect(0,0,10,10);&lt;br /&gt;  text(tolerance,20,10);&lt;br /&gt;  String s;&lt;br /&gt;  if(detection){&lt;br /&gt;    s="detected";&lt;br /&gt;  }else{&lt;br /&gt;    s="none";&lt;br /&gt;  }&lt;br /&gt;  text(s,40,10);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  targetColor=video.pixels[w-mouseX+mouseY*w];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  if(key=='c'){&lt;br /&gt;    video.settings();&lt;br /&gt;  }&lt;br /&gt;&lt;font color="#FF0000"&gt;    &lt;br /&gt;  if(key=='v'){//「v」キーを押して表示／非表示を切り替える&lt;br /&gt;    if(videoImage){&lt;br /&gt;      videoImage=false;&lt;br /&gt;    }else{&lt;br /&gt;      videoImage=true;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /*許容値調整は自動なので以下は使わない&lt;br /&gt;  if(key==CODED){&lt;br /&gt;    if(keyCode==LEFT){&lt;br /&gt;      tolerance-=1;&lt;br /&gt;    }&lt;br /&gt;    if(keyCode==RIGHT){&lt;br /&gt;      tolerance+=1;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  */&lt;/font&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;＊プログラムを開始する前にTools&gt;Create Font...をクリックし「Monaco-10.vlw」を取り込んでおいて下さい（「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/processing_14.html"&gt;Processing　文字と画像&lt;/a&gt;」を参照）。&lt;br /&gt;「filterX+=(x-filterX)*0.3;」の「0.3」は円の動きをゆっくり滑らかに（鈍く）するための係数です。1.0に近づくほどフィルタの効果はなくなり、0に近づくほど鈍く動くので適度に調整して下さい。&lt;br /&gt;左右反転（鏡像）しているために、円のX座標値はそのままの値ではなく「w-filterX」になっています。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ビット演算による色変換」：&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.processing.org/reference/color_datatype.html"&gt;color(R,G,B,A)&lt;/a&gt;は、A:アルファ値（透明度）、R:赤、G:緑、B:青の４種類の8ビット（合計32ビット）の値が含まれています。32ビットの内訳（２進数の場合）は&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。32あるそれぞれの桁には0か1が入ります。&lt;br /&gt;透明度が100%（不透明）の緑であれば、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;11111111000000001111111100000000&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。16進数であれば「0xFF00FF00」や「#00FF00」になります。10進数なら「255,0,255,0」です。&lt;br /&gt;上記プログラムでは、ピクセルの赤の値を調べるために&lt;a href="http://www.processing.org/reference/pixels.html"&gt;pixels[i]&lt;/a&gt;を&lt;a href="http://www.processing.org/reference/red_.html"&gt;red()&lt;/a&gt;で括って&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;red(pixels[i])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;にしましたが、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(pixels[i] &gt;&gt; 16) &amp; 0xFF&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;というビット演算を使っても求められます。32ビットを16桁右にシフト「&lt;a href="http://www.processing.org/reference/rightshift.html"&gt;&gt;&gt;&lt;/a&gt;」し、下位8桁（0xFF）だけを「&lt;a href="http://www.processing.org/reference/bitwiseAND.html"&gt;&amp;&lt;/a&gt;」を使って取り出す（ビットマスク）という方法になります。&lt;br /&gt;結果的にはこの方法の方が処理速度が上がるようです。&lt;br /&gt;緑と青については、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(pixels[i] &gt;&gt; 8) &amp; 0xFF //緑:8ビット右にシフトし下位8桁だけを取り出す&lt;br /&gt;pixels[i] &amp; 0xFF //青:下位8桁だけを取り出す&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。&lt;br /&gt;もし、処理速度が不安定な場合は、上記のようなビット演算を用いるか、画面サイズを小さくするか、もともとのフレームレートを下げるかなどの工夫や調整を行ってみてください。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ドライバなしですぐにコンピュータに接続可能（UVC対応）なWebカメラとして以下のようなものがあります。&lt;br /&gt;Macintosh/Windows兼用です。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B000SSLRVA&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B000SSLRW4&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0019K4W8G&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0016LGI9E&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」--Webカメラの使い方／映像にフィルタをかけて表示。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラ映像をマトリクスLEDに映す。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html"&gt;Processing　Webカメラを光センサとして使う&lt;/a&gt;」--点光源で画面内に線を描く。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingweb.html"&gt;Processing　Webカメラ／定点記録画像&lt;/a&gt;」--Webカメラ映像を0.5秒おきに画像保存（JPEG）する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/import-processing.html"&gt;Processing　Webカメラ/モーショントラッキング&lt;/a&gt;」--Webカメラを使って動体検知する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5815681454824940337?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5815681454824940337/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5815681454824940337' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5815681454824940337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5815681454824940337'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html' title='Processing　Webカメラ/カラートラッキング'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SSwWEkJ9D_I/AAAAAAAAAdc/9ndy5URR5_c/s72-c/colortrack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-2445267395169710837</id><published>2008-11-22T06:30:00.011+09:00</published><updated>2009-03-28T08:01:48.305+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='マテリアル'/><title type='text'>工作機械について</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SScuXLQEF0I/AAAAAAAAAdU/KgYZ5Da7gkQ/s1600-h/senban.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 142px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SScuXLQEF0I/AAAAAAAAAdU/KgYZ5Da7gkQ/s400/senban.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5271232864552490818" /&gt;&lt;/a&gt;&lt;br /&gt;「旋盤」では、取り付けた材料（金属や樹脂など）を回転させ、バイト（刃）で切削し、回転系の部品（車輪、プーリーなど）を制作することができます。旋盤加工できる部品の寸法は、旋盤の「心間（回転体材料の長さ）」と「心高（回転体材料の半径）」によって決まります。より大きな部品を制作する場合は、この二つの寸法が大きな機種を選ぶ必要があります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SScuQorOe7I/AAAAAAAAAdM/cxe6oRe3KXk/s1600-h/milling.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 180px; height: 180px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SScuQorOe7I/AAAAAAAAAdM/cxe6oRe3KXk/s400/milling.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5271232752191962034" /&gt;&lt;/a&gt;&lt;br /&gt;「フライス盤」では、スライドテーブル上に取り付けた材料（金属や樹脂など）を移動させることで、直線や円形に溝加工したり、エッジを段状に加工したり、材料表面をフラットに切削したりすることができます。材料を固定するスライドテーブル（XY方向の移動量）や回転テーブルのサイズによって加工サイズが決まります。&lt;br /&gt;&lt;br /&gt;「旋盤」と「フライス盤」を組み合わせれば、ほとんどの機械部品を制作することができると言われています。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;小型工作機械メーカー／販売：&lt;br /&gt;・&lt;a href="http://www.bellmex.com/"&gt;ベルメックスインターナショナル&lt;/a&gt;&lt;br /&gt;・&lt;a href="https://www.kotobuki-mecanix.co.jp/index.htm"&gt;寿貿易／メカニクス&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.toyoas.jp/site3/index.html"&gt;東洋アソシエイツ&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.kiso-proxxon.co.jp/catalog/la_00.html"&gt;プロクソン&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4526057452&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:140px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4526058394&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:140px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0016DG89C&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:140px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hb.afl.rakuten.co.jp/hsc/09c4b174.5f17e392.09c4b175.76af27f9/" target="_blank"&gt;工具屋ドットコム楽天市場店&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hb.afl.rakuten.co.jp/hsc/09c4b232.0ffaf1ab.09c4b233.7bbe026d/" target="_blank"&gt;プロ工具にDIY　モンジュSHOP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hb.afl.rakuten.co.jp/hsc/09c4b238.6929c326.09c4b239.aaf17648/" target="_blank"&gt;ケンチクボーイ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hb.afl.rakuten.co.jp/hsc/09c4b246.38b79193.09c4b247.70bee7be/" target="_blank"&gt;卸問屋　都築屋本舗&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-2445267395169710837?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/2445267395169710837/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=2445267395169710837' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2445267395169710837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/2445267395169710837'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/blog-post_22.html' title='工作機械について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SScuXLQEF0I/AAAAAAAAAdU/KgYZ5Da7gkQ/s72-c/senban.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1330456026797405923</id><published>2008-11-16T19:28:00.006+09:00</published><updated>2009-03-31T23:54:50.018+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>次回（11/22）授業について</title><content type='html'>次回11/22（土）は、１５：００から授業を開始します（お間違えないように）。&lt;br /&gt;&lt;br /&gt;・空間内における制作物の配置、身体との関わり、空間全体のイメージなど（前回のコラージュ）を引き続き制作してきてください。&lt;br /&gt;・使用される部品や材料なども持参して下さい。授業内で、個人ごとに制作の指導をします。&lt;br /&gt;・必要に応じて「旋盤」「フライス盤」「ボール盤」で、金属部品制作（回転部分や固定部分の部品など）の実習も行う予定です。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0016DG89C/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31ia7%2B0iAAL._SL160_.jpg" alt="精密小型旋盤　Compact3" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0016DG89C/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;精密小型旋盤　Compact3&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B0016DG89C/kousakukousak-22/ref=nosim/" title="精密小型旋盤　Compact3" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.31&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;東洋アソシエイツ &lt;br /&gt;売り上げランキング: 95873&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0016DG89C/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1330456026797405923?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1330456026797405923/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1330456026797405923' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1330456026797405923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1330456026797405923'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/1122.html' title='次回（11/22）授業について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1519365664367246889</id><published>2008-11-15T18:52:00.010+09:00</published><updated>2010-03-26T14:46:33.352+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='カラーセンサ'/><title type='text'>Arduino　デジタルカラーセンサ　S9706</title><content type='html'>今回は秋月電子で購入した&lt;a href="http://203.183.174.79/catalog/g/gI-02493/"&gt;デジタルカラーセンサS9706&lt;/a&gt;の実験をします。S9706は、RGB３色の同時測光が可能であり、９×９素子（高感度）と３×３素子（低感度）の感度設定が２段階あり、感度設定用の端子（Range端子）をHIGHまたはLOWで切り替えて設定できます。検出結果は12ビットの値でシリアル出力されます。S9706は表面実装用の小さな部品（1.27mmピッチ）なので、&lt;a href="http://203.183.174.79/catalog/g/gP-01115/"&gt;DIP変換基板&lt;/a&gt;などにハンダ付けして使用したほうが実験しやすくなります。&lt;br /&gt;&lt;br /&gt;S9706には、&lt;br /&gt;&lt;br /&gt;・Range端子（感度設定）&lt;br /&gt;・Gate端子（測光時間の設定）&lt;br /&gt;・CK端子（クロックパルス）&lt;br /&gt;・Dout端子（出力）&lt;br /&gt;・Vdd端子（5V電源）&lt;br /&gt;・Gnd端子（グランド）&lt;br /&gt;&lt;br /&gt;の６端子あります。&lt;br /&gt;それぞれを以下のように接続します。尚、測光時間を調節できるように可変抵抗器も接続することにします。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SR4bk62ix0I/AAAAAAAAAcs/EuzP2AfFzT0/s1600-h/S9706.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 288px; height: 367px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SR4bk62ix0I/AAAAAAAAAcs/EuzP2AfFzT0/s400/S9706.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5268678935157327682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;データシートの動作手順によれば、以下のように説明されています。&lt;br /&gt;（１）Gate端子とCK端子をLowにします。&lt;br /&gt;（２）Range端子で、所望の感度を選択します（今回は、可変抵抗器で調節可能にしておきます）。&lt;br /&gt;（３）Gate端子をLow→Highにして光量の積算を開始します。&lt;br /&gt;（４）所望の積算時間の後にGate端子をHigh→Lowにして光量の積算を終了します。&lt;br /&gt;（５）測定データは、CK端子に36のCKパルスを入れることで、Dout端子から出力されます。&lt;br /&gt;&lt;br /&gt;Dout端子からの12ビットのシリアル出力を読み込むためには、CK端子へ12回のパルスを３回送る必要があります。最初の12パルスによって赤、次の12パルスによって緑、そして最後の12パルスによって青が出力されます。この部分の手続きは、shiftIn()というファンクション（名前は任意）を用意することにします。&lt;a href="http://akizukidenshi.com/pdf/s9706_kpic1060j05.pdf"&gt;付属のデータシート&lt;/a&gt;のタイミングチャートに従ってプログラムしていくことにします。&lt;br /&gt;最終的に得られたRGB三色の値（12ビット:0~4095）をシリアル通信でProcessingへ送信し、Processingの画面上で色表示することにします。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Arduinoのプログラム」：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('p3');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="p3" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;#define RANGE 8 // 8番ピンをRange端子に設定&lt;br /&gt;#define GATE  9 // 9番ピンをGate端子に設定&lt;br /&gt;#define CK   10 //10番ピンをCK端子に設定&lt;br /&gt;#define DOUT 11 //11番ピンをDout端子に設定&lt;br /&gt;&lt;br /&gt;int red,green,blue;//RGB三色の変数を用意&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //Range,Gate,CK端子をデジタル出力に設定&lt;br /&gt;  pinMode(RANGE,OUTPUT);&lt;br /&gt;  pinMode(GATE,OUTPUT);&lt;br /&gt;  pinMode(CK,OUTPUT);&lt;br /&gt;  //Dout端子をデジタル入力に設定&lt;br /&gt;  pinMode(DOUT,INPUT);&lt;br /&gt;  //シリアル通信設定&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //測光時間用の可変抵抗器の読み込み（アナログ入力:０番ピン）&lt;br /&gt;  int val=analogRead(0);&lt;br /&gt;&lt;br /&gt;  //Gate,CK端子をLowに設定&lt;br /&gt;  digitalWrite(GATE,LOW);&lt;br /&gt;  digitalWrite(CK,LOW);&lt;br /&gt;  delayMicroseconds(2000);//2000マイクロ秒待機&lt;br /&gt;&lt;br /&gt;  //感度設定（HIGH:高感度に設定）  &lt;br /&gt;  digitalWrite(RANGE,HIGH);&lt;br /&gt;&lt;br /&gt;  //測光開始（光量の積算を開始） &lt;br /&gt;  digitalWrite(GATE,HIGH);&lt;br /&gt;  //測光時間（valを代入し可変的に設定）&lt;br /&gt;  delay(val+1);&lt;br /&gt;  &lt;br /&gt;  //測光終了（光量の積算を終了） &lt;br /&gt;  digitalWrite(GATE,LOW);&lt;br /&gt;  delayMicroseconds(4);//4マイクロ秒待機&lt;br /&gt;  &lt;br /&gt;  red=shiftIn();//赤の処理&lt;br /&gt;  green=shiftIn();//緑の処理&lt;br /&gt;  blue=shiftIn();//青の処理&lt;br /&gt;&lt;br /&gt;  //Gate端子をHighに戻す  &lt;br /&gt;  digitalWrite(GATE,HIGH);&lt;br /&gt;&lt;br /&gt;  //シリアル通信でProcessingへ三色の値を文字列で送信  &lt;br /&gt;  if(Serial.available()&gt;0){&lt;br /&gt;    Serial.print(red,DEC);&lt;br /&gt;    Serial.print(",");&lt;br /&gt;    Serial.print(green,DEC);&lt;br /&gt;    Serial.print(",");&lt;br /&gt;    Serial.println(blue,DEC);&lt;br /&gt;    Serial.read();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//12ビット分のパルス送信と読み込み処理&lt;br /&gt;int shiftIn(){&lt;br /&gt;  int result=0;//検出結果用の変数を用意（0：初期化）&lt;br /&gt;  for(int i=0;i&lt;12;i++){//12ビット分の繰り返し処理&lt;br /&gt;    digitalWrite(CK,HIGH);//1ビット分のクロックパルス出力（HIGH）&lt;br /&gt;    delayMicroseconds(1);//1マイクロ秒待機&lt;br /&gt;    if(digitalRead(DOUT)==HIGH){//Dout端子からの出力がHighの場合&lt;br /&gt;      result+=(1&amp;lt;&amp;lt;i);//12ビットのi桁目に1を代入（i桁分だけ左にシフト）&lt;br /&gt;    }&lt;br /&gt;    digitalWrite(CK,LOW);//1ビット分のクロックパルス出力（LOW）&lt;br /&gt;    delayMicroseconds(1);//1マイクロ秒待機&lt;br /&gt;  }&lt;br /&gt;  delayMicroseconds(3);//3マイクロ秒待機&lt;br /&gt;  return result;//結果を出力&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;アナログ入力に接続された可変抵抗器で、測光時間を1ミリ秒から1024ミリ秒まで可変的に設定可能になります。測光時間が短ければ全体的に暗い色として認識されるので適宜調節してください（白色LEDを取り付けて反射光を使って読み取らせることもできると思います）。&lt;br /&gt;12ビットの値を読み込む処理をするint shiftIn(){...}では、一色につき12回CK端子へパルス（HIGH:1μsec+LOW:1μsec）を送ります。12回分のパルスをfor文で繰り返し処理させています。for(){...}の中では、digitalWrite(CK,HIGH)で1回HIGHを送ったあと1マイクロ秒待機すると、Dout端子から1ビット分の出力があるので、digitalRead(DOUT)でHIGHかLOWかを読み込みます。そしてdigitalWrite(CK,LOW)によって、CK端子をLOWに戻しておきます。&lt;br /&gt;読み込み値を、&lt;br /&gt;000000000000~111111111111（十進数の0~4095）&lt;br /&gt;までの二進数で処理するため、digitalRead(DOUT)がHIGHの場合は12ビット中のその桁が1になります。S9706では、右の桁から出力されます。つまり、for(){...}では、最初に処理される桁は右側の一桁であり、最後に処理される桁は左側の一桁（12桁目）になります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processingの方では４つの矩形を用意し、RGBの三色それぞれの色面とRGBを合成した色面として表示します。Arduinoとのシリアル通信は文字列で行います（複数の文字列のシリアル通信は「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」を参照してください）。Processing側でクリックしたらシリアル通信を開始することにします。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/S6xJ3Cx7_EI/AAAAAAAAAwg/0R383WGL6mg/s1600/color.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/S6xJ3Cx7_EI/AAAAAAAAAwg/0R383WGL6mg/s400/color.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5452814458826783810" /&gt;&lt;/a&gt;&lt;br /&gt;Processing上の画面：左から赤、緑、青、３色合成&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Processingのプログラム」：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('p4');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="p4" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//シリアルライブラリを取り込む&lt;br /&gt;import processing.serial.*;&lt;br /&gt;//シリアル通信用変数portを用意&lt;br /&gt;Serial port;&lt;br /&gt;&lt;br /&gt;//読み込み値（三色）の変数を用意&lt;br /&gt;int r,g,b;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //画面サイズ設定&lt;br /&gt;  size(400,200);&lt;br /&gt;  //ポート設定&lt;br /&gt;  port = new Serial(this,"/dev/tty.usbserial-A6006kvP",9600);&lt;br /&gt;  //「10」（ラインフィード）までを読み込む設定にする&lt;br /&gt;  port.bufferUntil(10);&lt;br /&gt;  //外形線なし&lt;br /&gt;  noStroke(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //背景色（黒）&lt;br /&gt;  background(0);&lt;br /&gt;  &lt;br /&gt;  fill(r,0,0);//値を塗色の赤に代入&lt;br /&gt;  rect(0,0,100,100);//赤の矩形&lt;br /&gt;  fill(0,g,0);//値を塗色の緑に代入&lt;br /&gt;  rect(100,0,100,100);//緑の矩形&lt;br /&gt;  fill(0,0,b);//値を塗色の青に代入&lt;br /&gt;  rect(200,0,100,100);//青の矩形&lt;br /&gt;  fill(r,g,b);//三つの値を塗色のRGBに代入&lt;br /&gt;  rect(300,0,100,100);//RGB合成した矩形&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//シリアル通信&lt;br /&gt;void serialEvent(Serial p){&lt;br /&gt;  //文字列の変数stringDataを用意し、&lt;br /&gt;  //「10」(ラインフィード)が来るまで読み込む&lt;br /&gt;  String stringData=port.readStringUntil(10);&lt;br /&gt;&lt;br /&gt;  //文字列データが空ではないとき&lt;br /&gt;  if(stringData!=null){&lt;br /&gt;    //文字列データに含まれる改行記号を取り除く&lt;br /&gt;    stringData=trim(stringData);&lt;br /&gt;&lt;br /&gt;    //整数型の配列data[]を用意し、&lt;br /&gt;    //コンマ記号をもとに文字列データを区切って&lt;br /&gt;    //配列data[]に整数化して入れておく&lt;br /&gt;    int data[]=int(split(stringData,','));&lt;br /&gt;&lt;br /&gt;    //配列data[]内のデータが３つなら、&lt;br /&gt;    if(data.length==3){&lt;br /&gt;      //三つの値をそれぞれマッピングして代入&lt;br /&gt;      r=int(map(data[0],0,4095,0,255));&lt;br /&gt;      g=int(map(data[1],0,4095,0,255));&lt;br /&gt;      b=int(map(data[2],0,4095,0,255));&lt;br /&gt;&lt;br /&gt;      //合図用データ送信&lt;br /&gt;      port.write(65);&lt;br /&gt;    }&lt;br /&gt;  }  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスが押されたら通信開始&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //開始用データ送信&lt;br /&gt;  port.write(65);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Arduinoからは0~4095の範囲で値が送られてくるので、&lt;a href="http://www.processing.org/reference/fill_.html"&gt;fill(r,g,b)&lt;/a&gt;の各値に代入するため、&lt;a href="http://www.processing.org/reference/map_.html"&gt;map()&lt;/a&gt;を使って0~255までの値（さらに&lt;a href="http://www.processing.org/reference/int_.html"&gt;int()&lt;/a&gt;で括って整数に変換）に変換しています。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836266/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51PE322HH9L._SL160_.jpg" alt="CCD/CMOSイメージ・センサの基礎と応用―原理、構造、動作方式、諸特性からシステム概要まで (C&amp;E基礎解説シリーズ)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836266/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;CCD/CMOSイメージ・センサの基礎と応用―原理、構造、動作方式、諸特性からシステム概要まで (C&amp;E基礎解説シリーズ)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4789836266/kousakukousak-22/ref=nosim/" title="CCD/CMOSイメージ・センサの基礎と応用―原理、構造、動作方式、諸特性からシステム概要まで (C&amp;E基礎解説シリーズ)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;米本 和也 &lt;br /&gt;CQ出版 &lt;br /&gt;売り上げランキング: 21816&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789836266/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1519365664367246889?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1519365664367246889/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1519365664367246889' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1519365664367246889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1519365664367246889'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/arduinos9706.html' title='Arduino　デジタルカラーセンサ　S9706'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SR4bk62ix0I/AAAAAAAAAcs/EuzP2AfFzT0/s72-c/S9706.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3636560908646425146</id><published>2008-11-15T10:44:00.003+09:00</published><updated>2008-11-15T14:26:52.747+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>「room01~03」について</title><content type='html'>「room01~03」概要：&lt;br /&gt;既存のギャラリー空間に対して、各自の制作物（ツール／デバイス）を挿入することで、空間の機能や質あるいは空間に対する人間の知覚を変容させることを目標とします。&lt;br /&gt;ギャラリーに訪れる人は、制作物（作品）に対する「鑑賞者」になるというよりも、制作物によって変容した空間の性質を体験する「体験者」になります。また、制作物を通して意味を生成したり理解されたりすることを目標とするのではなく、フィジカルに体験される物理的現象（あるいは肉体的な身体を通した感覚）を目標とします。つまり、解釈や理解によって空間の質を変容させるのではなく、実際的にあるいは物理的に空間が変容することに重点をおいてください。&lt;br /&gt;&lt;br /&gt;「room01~03」までのステップ：&lt;br /&gt;（１）ある現象を測定したり記録／伝達するような「ツール／デバイス」の実験的なプロトタイプ制作。&lt;br /&gt;（２）「ツール／デバイス」を体験可能なかたちとする（「体験者」との関わりを配慮した形態）。&lt;br /&gt;（３）「ツール／デバイス」と「体験者」を「空間」内に配置する（「体験者」に応じた設置方法や配置方法の工夫）。&lt;br /&gt;（４）「体験者」の身体の変化と「ツール／デバイス」の変化が「空間」に与える影響力を強化する。&lt;br /&gt;&lt;br /&gt;演習：&lt;br /&gt;（１）デバイスのコラージュ&lt;br /&gt;（２）デバイスと身体のコラージュ&lt;br /&gt;（３）空間内に配置されるデバイスと身体のコラージュ&lt;br /&gt;（４）変容する空間のコラージュ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3636560908646425146?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3636560908646425146/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3636560908646425146' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3636560908646425146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3636560908646425146'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/room0103.html' title='「room01~03」について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5694576674169131320</id><published>2008-11-13T11:36:00.024+09:00</published><updated>2010-05-29T03:40:11.232+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><title type='text'>センサについて２</title><content type='html'>以下は、「秋月電子」、「千石電商」、「共立エレショップ」、「Sparkfun（米国）」の各サイトにおけるセンサの分類です。目的や機能ごとに分かれているので、センサを選ぶ際の参考にして下さい（各店舗の各センサのページへリンクしています）。&lt;br /&gt;&lt;table&gt;&lt;td valign="top"&gt;「&lt;a href="http://akizukidenshi.com/"&gt;&lt;b&gt;秋月電子&lt;/b&gt;&lt;/a&gt;」&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/csensor/"&gt;センサ一般&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/chumid/"&gt;湿度/温度&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/coptsensr/"&gt;光&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/cired/"&gt;赤外線センサ&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/cremocon/"&gt;リモコン受光部&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/cuv/"&gt;紫外線関連&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/csound/"&gt;音&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/cph/"&gt;ペーハー（pH）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/calcohol/"&gt;アルコール/ガス　&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://akizukidenshi.com/catalog/c/cdir/"&gt;方位&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td valign="top" bgcolor="FFFFFF"&gt;「&lt;a href="http://www.sengoku.co.jp/"&gt;&lt;b&gt;千石電商&lt;/b&gt;&lt;/a&gt;」&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%94%BC%93%B1%91%CC%82%B9%82%F1%82%B3&amp;cond8=or&amp;dai=%82%D9-%82%E9&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;ホール素子／ホールセンサ&lt;/a&gt;　&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%94%BC%93%B1%91%CC%82%B9%82%F1%82%B3&amp;cond8=or&amp;dai=%89%B7%93x&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;温度センサー&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8Ap%91%AC%93x&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;角速度（ジャイロ）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%89%C1%91%AC%93x&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;加速度&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8B%97%97%A3&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;距離&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%88%B3%97%CD&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=1"&gt;圧力&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8F%D5%8C%82&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;衝撃&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8B%C8%82%B0&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;曲げ&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8F%C5%93d&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=4"&gt;焦電&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%A4%B5-%A4%DF%A4%B9%A4%BF&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;サーミスタ&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td valign="top" bgcolor="FFFFFF"&gt;「&lt;a href="http://eleshop.kyohritsu.com/"&gt;&lt;b&gt;共立エレショップ&lt;/b&gt;&lt;/a&gt;」&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110711/"&gt;感圧&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110712/"&gt;ひずみ／曲げ&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110713/"&gt;温度&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110714/"&gt;湿度&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110715/"&gt;光&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110716/"&gt;赤外線&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110717/"&gt;紫外線&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110718/"&gt;カラー&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110719/"&gt;超音波&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110720/"&gt;磁気&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110721/"&gt;電流&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110722/"&gt;位置&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110723/"&gt;位置（アクセサリ）　&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://eleshop.jp/shop/c/c110724/"&gt;動き&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td valign="top" bgcolor="FFFFFF"&gt;「&lt;a href="http://www.sparkfun.com/"&gt;&lt;b&gt;Sparkfun（米国）&lt;/b&gt;&lt;/a&gt;」&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=80"&gt;Accelerometer（加速度）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=146"&gt;Biometrics（生物測定）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=117"&gt;Capacitive（静電容量）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=151"&gt;Current（電流）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=143"&gt;Flex/Force（曲げ／力）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=144"&gt;ID（証明／認証）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=85"&gt;IMU/Gyros（慣性力／角速度）&lt;/a&gt;　&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=139"&gt;Infrared（赤外線）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=102"&gt;Light/Imaging（光／画像）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=83"&gt;Magneto（磁力）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=84"&gt;Proximity（距離）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=82"&gt;Temperature（温度）&lt;/a&gt;&lt;br /&gt;・&lt;a href="http://www.sparkfun.com/commerce/categories.php?c=152"&gt;Weather（天候）&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;その他のショップやセンサについては、このブログページ右側の「&lt;a href="#shoplist"&gt;ショップリスト&lt;/a&gt;」にも記載してあるので参考にして下さい。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837572/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51eAVMisoXL._SL160_.jpg" alt="センサ活用ハンドブック―色/明るさから距離/圧力まで14のターゲットを検出 (トランジスタ技術SPECIAL)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837572/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;センサ活用ハンドブック―色/明るさから距離/圧力まで14のターゲットを検出 (トランジスタ技術SPECIAL)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4789837572/kousakukousak-22/ref=nosim/" title="センサ活用ハンドブック―色/明るさから距離/圧力まで14のターゲットを検出 (トランジスタ技術SPECIAL)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.04.01&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;&lt;br /&gt;CQ出版 &lt;br /&gt;売り上げランキング: 109202&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4789837572/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5694576674169131320?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5694576674169131320/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5694576674169131320' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5694576674169131320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5694576674169131320'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/blog-post.html' title='センサについて２'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6043778136869346182</id><published>2008-11-08T13:24:00.003+09:00</published><updated>2009-03-30T04:44:57.323+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino書籍：「Making Things Talk」日本語版</title><content type='html'>『Making Things Talk--Arduinoで作る「会話」するモノたち』（日本語版）が発売されるそうです。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113849/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51i8Q20O9IL._SL160_.jpg" alt="Making Things Talk -Arduinoで作る「会話」するモノたち" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113849/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Making Things Talk -Arduinoで作る「会話」するモノたち&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4873113849/kousakukousak-22/ref=nosim/" title="Making Things Talk -Arduinoで作る「会話」するモノたち" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Tom Igoe &lt;br /&gt;オライリージャパン &lt;br /&gt;売り上げランキング: 16017&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113849/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6043778136869346182?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6043778136869346182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6043778136869346182' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6043778136869346182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6043778136869346182'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/arduinomaking-things-talk.html' title='Arduino書籍：「Making Things Talk」日本語版'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6414010026969282469</id><published>2008-11-08T09:27:00.007+09:00</published><updated>2009-07-27T02:32:32.749+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ファイルチューザー'/><category scheme='http://www.blogger.com/atom/ns#' term='ファイル保存'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　ドラッグした図形の動きを記録/保存/再生する</title><content type='html'>Processing画面上の図形をマウスでドラッグし、その動きを記録する方法、記録した内容をテキストデータとして外部に保存する方法、さらにそのテキストデータを読み取って動きを再生させるサンプルです。&lt;br /&gt;&lt;br /&gt;まずは、ドラッグする図形を円とした場合のプログラムから始めます。今回は&lt;a href="http://processing.org/reference/mouseDragged_.html"&gt;mouseDragged()&lt;/a&gt;は使わず、startDragというフラグを用意し、&lt;a href="http://processing.org/reference/mousePressed_.html"&gt;mousePressed()&lt;/a&gt;でドラッグ開始（startDrag=true）、&lt;a href="http://processing.org/reference/mouseReleased_.html"&gt;mouseReleased()&lt;/a&gt;でドラッグ終了（startDrag=false）とみなす方法を用います。&lt;br /&gt;円の中心座標から少しずれた位置にマウスを合わせてそのままドラッグできるように、円の中心座標とマウス座標の差分を計算しておき、その差分を足した値を最終的に円の座標に反映されるようにします。&lt;br /&gt;また、&lt;a href="http://processing.org/reference/dist_.html"&gt;dist()&lt;/a&gt;を使って円の中心座標からマウス座標までの距離を計算し、その距離が円の半径以内であれば円の上にマウスがあることとみなしてドラッグ可能にします。&lt;a href="http://processing.org/reference/dist_.html"&gt;dist()&lt;/a&gt;は、dist(x1,y1,x2,y2)のように(x1,y1)と(x2,y2)の二点間の距離を計算します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「円をドラッグする」：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('dragsave1');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="dragsave1" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//円のXY座標の変数を用意する&lt;br /&gt;int x,y;&lt;br /&gt;//円の座標とマウス座標の差分（ずれ）の変数&lt;br /&gt;int dx,dy;&lt;br /&gt;//ドラッグ開始終了のフラグを用意&lt;br /&gt;boolean startDrag;&lt;br /&gt;//円の半径&lt;br /&gt;int r=30;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(600,600);//画面サイズ設定&lt;br /&gt;  smooth();//滑らかな描画にする&lt;br /&gt;  stroke(255);//線色を白&lt;br /&gt;  fill(0);//塗り色を黒&lt;br /&gt;  x=width/2;//円を画面中心に配置しておく&lt;br /&gt;  y=height/2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  background(0);//背景色（黒）&lt;br /&gt;  &lt;br /&gt;  //ドラッグ中の場合&lt;br /&gt;  if(startDrag==true){&lt;br /&gt;    //マウス座標に差分を加えた値を円の座標に代入&lt;br /&gt;    x=mouseX+dx;&lt;br /&gt;    y=mouseY+dy;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //円を描画する&lt;br /&gt;  ellipse(x,y,r*2,r*2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //円中心座標とマウス座標の距離が円半径以内の場合&lt;br /&gt;  if(dist(x,y,mouseX,mouseY)&lt;=r){&lt;br /&gt;    //ドラッグ用フラグをtrue（ドラッグ中）にする&lt;br /&gt;    startDrag=true;&lt;br /&gt;    //円の座標とマウス座標の差分を求めておく&lt;br /&gt;    dx=x-mouseX;&lt;br /&gt;    dy=y-mouseY;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  //ドラッグ用フラグをfalse（ドラッグなし）にする&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「円をドラッグ＋記録機能」：&lt;/span&gt;&lt;br /&gt;上記プログラムに、ドラッグした円の動き（連続する座標値）を記録する機能を付け加えます（以下のプログラム）。「r」キーを押すことで記録開始にします。再度「r」キーを押すと記録停止するようにし、記録中は円の塗色を赤に変化させます。プログラム的には、recordStartというフラグを用意し、記録開始／停止を判別できるようにします。xPosとyPosという座標を記録するための配列を用意しておき、記録中はそれらの配列に座標値を付け加えていきます。&lt;br /&gt;赤文字の部分が付け足したプログラムです。&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('dragsave2');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="dragsave2" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//円のXY座標の変数を用意する&lt;br /&gt;int x,y;&lt;br /&gt;//円の座標とマウス座標の差分（ずれ）の変数&lt;br /&gt;int dx,dy;&lt;br /&gt;//ドラッグ開始終了のフラグ&lt;br /&gt;boolean startDrag;&lt;br /&gt;//円の半径&lt;br /&gt;int r=30;&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;//記録中／記録停止のフラグ&lt;br /&gt;boolean startRecord;&lt;br /&gt;//座標記録用の配列を用意し、内容を空にしておく。&lt;br /&gt;int[] xPos={};&lt;br /&gt;int[] yPos={};&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(600,600);//画面サイズ設定&lt;br /&gt;  smooth();//滑らかな描画にする&lt;br /&gt;  stroke(255);//線色を白&lt;br /&gt;  fill(0);//塗り色を黒&lt;br /&gt;  x=width/2;//円を画面中心に配置しておく&lt;br /&gt;  y=height/2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  background(0);//背景色（黒）&lt;br /&gt;&lt;br /&gt;  //ドラッグ中の場合&lt;br /&gt;  if(startDrag==true){&lt;br /&gt;    //マウス座標に差分を加えた値を円の座標に代入&lt;br /&gt;    x=mouseX+dx;&lt;br /&gt;    y=mouseY+dy;&lt;br /&gt;  }&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;  //記録中の場合&lt;br /&gt;  if(startRecord==true){&lt;br /&gt;    xPos=append(xPos,x);//座標値を配列に付け加えていく&lt;br /&gt;    yPos=append(yPos,y);&lt;br /&gt;  }&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;  //円を描画する &lt;br /&gt;  ellipse(x,y,r*2,r*2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //円中心座標とマウス座標の距離が円半径以内の場合&lt;br /&gt;  if(dist(x,y,mouseX,mouseY)&lt;=r){&lt;br /&gt;    //ドラッグ用フラグをtrue（ドラッグ中）にする&lt;br /&gt;    startDrag=true;&lt;br /&gt;    //円の座標とマウス座標の差分を求めておく&lt;br /&gt;    dx=x-mouseX;&lt;br /&gt;    dy=y-mouseY;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  //ドラッグ用フラグをfalse（ドラッグなし）にする&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  if(key=='r'){//「r」キーを押した場合&lt;br /&gt;    if(startRecord==true){//記録中の場合&lt;br /&gt;      startRecord=false;//記録なしに戻す&lt;br /&gt;      fill(0,0,0);//円の塗色を黒に戻す&lt;br /&gt;    }else{//記録なしの場合&lt;br /&gt;      startRecord=true;//記録中にする&lt;br /&gt;      fill(255,0,0);//円の塗色を赤にする&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;xPos={}というように空の配列をはじめに用意しておき、&lt;a href="http://processing.org/reference/append_.html"&gt;append()&lt;/a&gt;を使って変化する座標値を配列xPosに付け加えていきます。よって、配列xPosに含まれる要素は、記録されるごとに増えていきます。&lt;a href="http://processing.org/reference/Array.html"&gt;xPos.length&lt;/a&gt;を用いれば、記録された配列内の座標の個数を調べることができます。&lt;br /&gt;記録停止しているときに「r」キーが押されればstartRecord=trueにし、逆に記録停止しているときに押されれば、startRecord=falseに切り替えられるように、フラグstartRecordを使い分けます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「円をドラッグ＋記録機能＋保存機能」：&lt;/span&gt;&lt;br /&gt;さらに以下では、記録された内容をテキストファイルとして外部保存する機能と記録した座標値を消去する機能を付け足します（赤い文字部分）。「r」キーで記録、「s」キーでファイル保存、「c」キーで記録内容を消去することにします。&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('dragsave3');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="dragsave3" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//円のXY座標の変数を用意する&lt;br /&gt;int x,y;&lt;br /&gt;//円の座標とマウス座標の差分（ずれ）の変数&lt;br /&gt;int dx,dy;&lt;br /&gt;//ドラッグ開始終了のフラグ&lt;br /&gt;boolean startDrag;&lt;br /&gt;//円の半径&lt;br /&gt;int r=30;&lt;br /&gt;&lt;br /&gt;//記録中／記録停止のフラグ&lt;br /&gt;boolean startRecord;&lt;br /&gt;//座標記録用の配列を用意し、内容を空にしておく&lt;br /&gt;int[] xPos={};&lt;br /&gt;int[] yPos={};&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;//消去用に空の配列を用意しておく&lt;br /&gt;int[] clearArray={};&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(600,600);//画面サイズ設定&lt;br /&gt;  smooth();//滑らかな描画にする&lt;br /&gt;  stroke(255);//線色を白&lt;br /&gt;  fill(0);//塗り色を黒&lt;br /&gt;  x=width/2;//円を画面中心に配置しておく&lt;br /&gt;  y=height/2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  background(0);//背景色（黒）&lt;br /&gt;&lt;br /&gt;  //ドラッグ中の場合&lt;br /&gt;  if(startDrag==true){&lt;br /&gt;    //マウス座標に差分を加えた値を円の座標に代入&lt;br /&gt;    x=mouseX+dx;&lt;br /&gt;    y=mouseY+dy;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //記録中の場合&lt;br /&gt;  if(startRecord==true){&lt;br /&gt;    xPos=append(xPos,x);//座標値を配列に付け加えていく&lt;br /&gt;    yPos=append(yPos,y);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //円を描画する &lt;br /&gt;  ellipse(x,y,r*2,r*2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //円中心座標とマウス座標の距離が円半径以内の場合&lt;br /&gt;  if(dist(x,y,mouseX,mouseY)&lt;=r){&lt;br /&gt;    //ドラッグ用フラグをtrue（ドラッグ中）にする&lt;br /&gt;    startDrag=true;&lt;br /&gt;    //円の座標とマウス座標の差分を求めておく&lt;br /&gt;    dx=x-mouseX;&lt;br /&gt;    dy=y-mouseY;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  //ドラッグ用フラグをfalse（ドラッグなし）にする&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //記録用の処理&lt;br /&gt;  if(key=='r'){//「r」キーを押した場合&lt;br /&gt;    if(startRecord==true){//記録中の場合&lt;br /&gt;      startRecord=false;//記録なしに戻す&lt;br /&gt;      fill(0,0,0);//円の塗色を黒に戻す&lt;br /&gt;    }else{//記録なしの場合&lt;br /&gt;      startRecord=true;//記録中にする&lt;br /&gt;      fill(255,0,0);//円の塗色を赤にする&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;  //保存用の処理  &lt;br /&gt;  if(key=='s'){//「s」キーを押した場合&lt;br /&gt;    //ファイル選択画面で保存先を決める&lt;br /&gt;    String savePath = selectOutput();&lt;br /&gt;    //保存先のパスが空ではないとき&lt;br /&gt;    if (savePath != null) {&lt;br /&gt;      //保存用のインスタンスを用意する&lt;br /&gt;      PrintWriter output;&lt;br /&gt;      //保存先にファイルを生成&lt;br /&gt;      output=createWriter(savePath);&lt;br /&gt;      //配列に含まれる値を出力する&lt;br /&gt;      for(int i=0;i&amp;lt;xPos.length;i++){&lt;br /&gt;        output.println(xPos[i]+","+yPos[i]);//X座標+コンマ+Y座標+改行&lt;br /&gt;      }&lt;br /&gt;      output.flush();//データ保存&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //記録内容を消去する処理&lt;br /&gt;  if(key=='c'){//「c」キーを押した場合&lt;br /&gt;    xPos=clearArray;//X座標の配列に空の配列を代入し、内容を消去&lt;br /&gt;    yPos=clearArray;//Y座標の配列に空の配列を代入し、内容を消去&lt;br /&gt;  }&lt;/font&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;上記プログラムでは、&lt;a href="http://processing.org/reference/PrintWriter.html"&gt;printWriter&lt;/a&gt;を使って外部ファイルとして座標値データを保存しています。「s」キーを押すと&lt;a href="http://processing.org/reference/selectOutput_.html"&gt;selectOutput()&lt;/a&gt;によってダイアローグ画面が現れるので、保存名と保存先を指定します。「positions.txt」のように、「.txt」の拡張子をつけて任意の場所（デスクトップなど）に保存します。再度上書き保存する場合は、ダイアローグ画面上で、同じファイルを選択し保存ボタンを押します（上書き保存の確認メッセージが現れます）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「円をドラッグ＋記録機能＋保存機能＋再生機能」：&lt;/span&gt;&lt;br /&gt;次に、記録された内容や保存された内容のデータを読み取り、そのデータに基づいて動きを再生するプログラムをします。再生中は円の塗色が緑に変化し、再生終了すれば黒に戻ります。&lt;br /&gt;まず、「r」キーを押して記録開始し、マウスで円をドラッグします（ドラッグ記録中）。&lt;br /&gt;次に再度「r」キーを押して記録を停止します。&lt;br /&gt;記録された内容を再生するために、「p」キーを押します。動きが再生されている間は円が緑色になります。&lt;br /&gt;「s」キーを押すことで、記録内容を外部ファイルとしてデスクトップなどの任意の場所にファイル名（拡張子「.txt」）をつけて保存します。&lt;br /&gt;「s」キーで保存されたファイルを読み込むには、「l」（小文字のエル）キーを押してファイル選択画面の中でファイル選択します。読み込んだファイルのデータは配列xPosとyPosに記憶されます。「p」キーを押せば、読み込んだ記録を再生します。&lt;br /&gt;「c」キーによって、配列内のデータを空にしないかぎり、「r」キーによる記録した座標値は追加されていきます。&lt;br /&gt;&lt;br /&gt;「各キーの機能割当」：&lt;br /&gt;r：記録開始（record）／記録停止&lt;br /&gt;c：記録消去（clear）&lt;br /&gt;s：保存（save）&lt;br /&gt;l：ファイル読み込み（load）&lt;br /&gt;p：再生（play）&lt;br /&gt;&lt;br /&gt;赤文字部分がさらに追加した再生機能の内容です。&lt;br /&gt;&lt;br /&gt;　&lt;a href="#" onClick="showHide('dragsave4');return false;"&gt;[プログラムを表示]&lt;/a&gt;&lt;br /&gt;&lt;div id="dragsave4" style="display: none"&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//円のXY座標の変数を用意する&lt;br /&gt;int x,y;&lt;br /&gt;//円の座標とマウス座標の差分（ずれ）の変数&lt;br /&gt;int dx,dy;&lt;br /&gt;//ドラッグ開始終了のフラグ&lt;br /&gt;boolean startDrag;&lt;br /&gt;//円の半径&lt;br /&gt;int r=30;&lt;br /&gt;&lt;br /&gt;//記録中／記録停止のフラグ&lt;br /&gt;boolean startRecord;&lt;br /&gt;//座標記録用の配列を用意し、内容を空にしておく。&lt;br /&gt;int[] xPos={};&lt;br /&gt;int[] yPos={};&lt;br /&gt;&lt;br /&gt;//消去用に空の配列を用意しておく&lt;br /&gt;int[] clearArray={};&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;boolean startPlay;//再生用フラグ&lt;br /&gt;int count;//再生用カウンタ変数&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  size(600,600);//画面サイズ設定&lt;br /&gt;  smooth();//滑らかな描画にする&lt;br /&gt;  stroke(255);//線色を白&lt;br /&gt;  fill(0);//塗り色を黒&lt;br /&gt;  x=width/2;//円を画面中心に配置しておく&lt;br /&gt;  y=height/2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  background(0);//背景色（黒）&lt;br /&gt;&lt;br /&gt;  //ドラッグ中の場合&lt;br /&gt;  if(startDrag==true){&lt;br /&gt;    //マウス座標に差分を加えた値を円の座標に代入&lt;br /&gt;    x=mouseX+dx;&lt;br /&gt;    y=mouseY+dy;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //記録中の場合&lt;br /&gt;  if(startRecord==true){&lt;br /&gt;    xPos=append(xPos,x);//座標値を配列に付け加えていく&lt;br /&gt;    yPos=append(yPos,y);&lt;br /&gt;  }&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;  //再生中の場合&lt;br /&gt;  if(startPlay==true){&lt;br /&gt;    //カウンタ変数に合わせてXY座標の配列の値を円の座標に代入していく&lt;br /&gt;    x=xPos[count];&lt;br /&gt;    y=yPos[count];&lt;br /&gt;    fill(0,255,0);//塗色を緑にする&lt;br /&gt;    count++;//カウンタ変数を増加させる&lt;br /&gt;    if(count&gt;xPos.length-1){//カウント数が配列データの個数以上になったら&lt;br /&gt;      startPlay=false;//再生停止にする&lt;br /&gt;      count=0;//カウンタ変数をゼロに戻す&lt;br /&gt;      println("Finish Playing");//再生終了の出力&lt;br /&gt;      fill(0);//塗色を黒に戻す&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;  //円を描画する &lt;br /&gt;  ellipse(x,y,r*2,r*2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //円中心座標とマウス座標の距離が円半径以内の場合&lt;br /&gt;  if(dist(x,y,mouseX,mouseY)&lt;=r){&lt;br /&gt;    //ドラッグ用フラグをtrue（ドラッグ中）にする&lt;br /&gt;    startDrag=true;&lt;br /&gt;    //円の座標とマウス座標の差分を求めておく&lt;br /&gt;    dx=x-mouseX;&lt;br /&gt;    dy=y-mouseY;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  //ドラッグ用フラグをfalse（ドラッグなし）にする&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //記録用の処理&lt;br /&gt;  if(key=='r'){//「r」キーを押した場合&lt;br /&gt;    if(startRecord==true){//記録中の場合&lt;br /&gt;      startRecord=false;//記録なしに戻す&lt;br /&gt;      fill(0,0,0);//円の塗色を黒に戻す&lt;br /&gt;    }else{//記録なしの場合&lt;br /&gt;      startRecord=true;//記録中にする&lt;br /&gt;      fill(255,0,0);//円の塗色を赤にする&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //保存用の処理  &lt;br /&gt;  if(key=='s'){//「s」キーを押した場合&lt;br /&gt;    //ファイル選択画面で保存先を決める&lt;br /&gt;    String savePath = selectOutput();&lt;br /&gt;    //保存先のパスが空ではないとき&lt;br /&gt;    if (savePath != null) {&lt;br /&gt;      //保存用のインスタンスを用意する&lt;br /&gt;      PrintWriter output;&lt;br /&gt;      //保存先にファイルを生成&lt;br /&gt;      output=createWriter(savePath);&lt;br /&gt;      //配列に含まれる値を出力する&lt;br /&gt;      for(int i=0;i&amp;lt;xPos.length;i++){&lt;br /&gt;        output.println(xPos[i]+","+yPos[i]);//X座標+コンマ+Y座標+改行&lt;br /&gt;      }&lt;br /&gt;      output.flush();//データ保存&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //記録内容を消去する処理&lt;br /&gt;  if(key=='c'){//「c」キーを押した場合&lt;br /&gt;    xPos=clearArray;//X座標の配列に空の配列を代入し、内容を消去&lt;br /&gt;    yPos=clearArray;//Y座標の配列に空の配列を代入し、内容を消去&lt;br /&gt;  }&lt;br /&gt;&lt;font color="#FF0000"&gt;&lt;br /&gt;  //再生用の処理&lt;br /&gt;  if(key=='p'){&lt;br /&gt;    //記録されているデータがある場合&lt;br /&gt;    if(xPos.length&gt;0){&lt;br /&gt;      startPlay=true;//再生中にする&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //ファイルデータ読み込みの処理&lt;br /&gt;  if(key=='l'){//「l」キーを押した場合&lt;br /&gt;    //読み込みファイルパスの指定&lt;br /&gt;    String loadPath = selectInput();&lt;br /&gt;    //パスが空ではないとき&lt;br /&gt;    if (loadPath != null){&lt;br /&gt;      //座標用配列に空の配列を代入し、内容を消去しておく&lt;br /&gt;      xPos=clearArray;&lt;br /&gt;      yPos=clearArray;&lt;br /&gt;      //文字列の配列を用意し、データを行ごとに配列に代入する（読み込む）&lt;br /&gt;      String[] lines=loadStrings(loadPath);&lt;br /&gt;      //各行ごとに、文字列データをXとYの座標の数値に変換する&lt;br /&gt;      for (int i=0; i&amp;lt;lines.length; i++) {//行数の分だけ繰り返し処理する&lt;br /&gt;        //コンマ記号を境目に文字列データを分割し、数値用の配列に代入&lt;br /&gt;        int[] data=int(split(lines[i],','));&lt;br /&gt;        //数値用配列のはじめの値をX座標用配列に追加していく&lt;br /&gt;        xPos=append(xPos,data[0]);&lt;br /&gt;        //数値用配列のつぎの値をY座標配列に追加していく&lt;br /&gt;        yPos=append(yPos,data[1]);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;/font&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;「p」キーを押すことで、再生用フラグstartPlayがtrueになり、ループ内で再生用の処理が行われます。変数countを用意しループするごとにcountを+1ずつ増加させ、配列内の座標データをひとつずつ円の座標に代入していきます。配列内のデータ数を&lt;a href="http://processing.org/reference/Array.html"&gt;xPos.length&lt;/a&gt;で調べ、最後のデータまで読み込んだら再生用フラグstartPlayをfalseにし再生停止させます。&lt;br /&gt;「l」キーを押し、&lt;a href="http://processing.org/reference/selectInput_.html"&gt;selectInput()&lt;/a&gt;によってファイル選択画面が現れ、保存したファイルを選択します。選択したファイル内のデータを&lt;a href="http://processing.org/reference/loadStrings_.html"&gt;loadStrings()&lt;/a&gt;によって、「X座標値＋コンマ＋Y座標値」という一行ずつの文字列を&lt;a href="http://processing.org/reference/split_.html"&gt;split()&lt;/a&gt;でコンマ記号を境目として二つのデータに分けて、同時にそれら文字列を&lt;a href="http://processing.org/reference/int_.html"&gt;int()&lt;/a&gt;で整数化し、&lt;a href="http://processing.org/reference/append_.html"&gt;append()&lt;/a&gt;によって座標用の配列xPosとyPosに追加していきます（代入する前にxPosとyPosを空の配列にしておきます）。&lt;br /&gt;&lt;br /&gt;誤作動が起こらないように、再生中はキー入力を禁止したり、読み込まれるファイルが相応しくない場合の例外処理などが実際には必要になりますが、今回のプログラムでは省略しています。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001BAO8DS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41vmQ%2BeL4nL._SL160_.jpg" alt="FILCO ポータブルタッチパッド スマートトラックライト ATP-400UB" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001BAO8DS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;FILCO ポータブルタッチパッド スマートトラックライト ATP-400UB&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001BAO8DS/kousakukousak-22/ref=nosim/" title="FILCO ポータブルタッチパッド スマートトラックライト ATP-400UB" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;ダイヤテック (2008-06-26)&lt;br /&gt;売り上げランキング: 19889&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001BAO8DS/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6414010026969282469?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6414010026969282469/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6414010026969282469' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6414010026969282469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6414010026969282469'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/processing.html' title='Processing　ドラッグした図形の動きを記録/保存/再生する'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3597239175567065624</id><published>2008-11-02T02:15:00.007+09:00</published><updated>2009-03-29T01:20:32.995+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='サウンド'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　サウンド/Sonia　JSynプラグイン</title><content type='html'>Processingのサウンドライブラリの「&lt;a href="http://sonia.pitaru.com"&gt;Sonia&lt;/a&gt;」を、MacOSX（Intel）で使用する場合、新たにJSyn&lt;a href="http://www.softsynth.com/jsyn/plugins"&gt;プラグインをインストール&lt;/a&gt;する必要があります。現ライブラリフォルダにはMacOSX（PowerPC版）のJSyncプラグインしか含まれていないようです。&lt;br /&gt;&lt;a href="http://www.softsynth.com/jsyn/plugins"&gt;ここをクリック&lt;/a&gt;すると、インストール画面に移動します。移動先のページ上の「Click Here to Install JSyn Plugin」のボタンを押して新しいバージョンのJSyncプラグインをインストールしてください。&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing_30.html"&gt;Processing　サウンド４／スクラッチ&lt;/a&gt;」--Soniaライブラリを使って曲をスクラッチ演奏する&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing_28.html"&gt;Processing　サウンド３／テンポ&lt;/a&gt;」--Soniaライブラリで音源再生のテンポ変換をする&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing.html"&gt;Processing　サウンド２／逆再生&lt;/a&gt;」--Soniaライブラリで逆再生の音源をつくる&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/07/processing-sonia.html"&gt;Processing　サウンド１／Sonia&lt;/a&gt;」--Soniaライブラリで音源の再生／停止／ポーズする&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=ITZrhoJYN4w&amp;offerid=94348.10000192&amp;type=4&amp;subid=0"&gt;&lt;IMG alt=" iTunes Music Store（Japan）" border="0" src="http://images.apple.com/itunesaffiliates/JP/logos/Dwnld_iTunes_Horz_gry.png"&gt;&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=ITZrhoJYN4w&amp;bids=94348.10000192&amp;type=4&amp;subid=0"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3597239175567065624?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3597239175567065624/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3597239175567065624' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3597239175567065624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3597239175567065624'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/processingsoniajsyn.html' title='Processing　サウンド/Sonia　JSynプラグイン'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1373479362731064585</id><published>2008-11-01T14:00:00.023+09:00</published><updated>2010-03-31T14:35:13.278+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='ネットワーク'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTPサーバ'/><category scheme='http://www.blogger.com/atom/ns#' term='イーサネット'/><title type='text'>Arduino　Ethernet Shield</title><content type='html'>今回は、&lt;a href="http://arduino.cc/en/Main/ArduinoEthernetShield"&gt;Arduino Ethernet Shield&lt;/a&gt;（&lt;a href="http://www.switch-science.com/products/detail.php?product_id=69"&gt;スイッチサイエンス&lt;/a&gt;／&lt;a href="http://strawberry-linux.com/catalog/items?code=35002"&gt;ストロベリーリナックス&lt;/a&gt;にて販売）を使って、Arduinoをサーバとして機能させ、Webブラウザ（IE、Safari、FireFoxなど）から閲覧可能なページの表示実験を行いたいと思います。&lt;br /&gt;そのために、Arduino開発環境の最新版「Arduino 0012」に含まれている「&lt;a href="http://www.arduino.cc/en/Reference/Ethernet"&gt;Ethernetライブラリ&lt;/a&gt;」を使います。&lt;br /&gt;＊Arduino MegaとEthernet Shieldを重ねて使う場合の説明は&lt;a href="http://ken-nou-kou.blogspot.com/2010/03/arduino-mega-ethernet-shield.html"&gt;こちら&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SQeoW-PJB2I/AAAAAAAAAbA/0Go85aRfLDY/s1600-h/ethernet.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 360px; height: 257px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SQeoW-PJB2I/AAAAAAAAAbA/0Go85aRfLDY/s400/ethernet.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5262359802222806882" /&gt;&lt;/a&gt;&lt;br /&gt;（Arduino Ethernet Shield）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arduino.cc/en/Main/ArduinoEthernetShield"&gt;Arduinoのサイト&lt;/a&gt;によれば、デジタルI/Oピンの11、12、13番ピンはSPI通信に使われているようなので、それらのピンにはセンサなどを接続しないことにします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今回は、Arduino 0012に含まれている「Web Server」というサンプル（File&gt;Sketchbook&gt;Examples&gt;Library-Ethernet&gt;Web Server）を参考にブラウザで閲覧可能なWebベージを表示させます。元々のサンプルでは、アナログ入力値をWebページに表示させていますが、ブラウザのタイトルバーの表示文字、リンクさせた画像の表示など多少変更した内容にしてみます。&lt;br /&gt;基本的な入力情報として、&lt;br /&gt;&lt;br /&gt;・MACアドレス&lt;br /&gt;・サーバのIPアドレス&lt;br /&gt;・ポート番号&lt;br /&gt;&lt;br /&gt;が必要となります。尚、ローカルネットワーク内から閲覧できる設定にします。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arduinoのプログラム（サーバ）：&lt;/span&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE; overflow:auto"&gt;&lt;pre&gt;&lt;br /&gt;//イーサネットライブラリを取り入れる&lt;br /&gt;#include &amp;lt;Ethernet.h&amp;gt;&lt;br /&gt;&lt;br /&gt;//MAC ID（各シールドに記載）&lt;br /&gt;byte mac[] = { 0x00, 0x50, 0xC2, 0x97, 0x20, 0x11 };&lt;br /&gt;//サーバ用IPアドレスの設定&lt;br /&gt;byte ip[] = { 192, 168, 3, 100 };&lt;br /&gt;//ポート設定（80：HTTPプロトコル）&lt;br /&gt;Server server(80);&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //イーサネット通信開始&lt;br /&gt;  Ethernet.begin(mac, ip);&lt;br /&gt;  //サーバ開始&lt;br /&gt;  server.begin();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //クライアントからのデータ受信&lt;br /&gt;  Client client = server.available();&lt;br /&gt;  //クライアントからの受信がある場合&lt;br /&gt;  if (client) {&lt;br /&gt;    //ブラウザからのHTTPリクエストの空白行の有無のフラグ&lt;br /&gt;    boolean current_line_is_blank = true;&lt;br /&gt;&lt;br /&gt;    //クライアントとの接続中の処理&lt;br /&gt;    while (client.connected()) {&lt;br /&gt;      //クライアントから受信データがあるとき&lt;br /&gt;      if (client.available()) {&lt;br /&gt;        //HTTPリクエスト（受信データ）を一つずつ読み込む&lt;br /&gt;        char c = client.read();&lt;br /&gt;        //HTTPリクエストにラインフィード（改行）があり、&lt;br /&gt;        //現在空白行である場合&lt;br /&gt;        if (c == '\n' &amp;&amp; current_line_is_blank) {&lt;br /&gt;          //HTTPレスポンス（返信）&lt;br /&gt;          server.println("HTTP/1.1 200 OK");//リクエスト成功&lt;br /&gt;          server.println("Content-Type: text/html");//HTML文書形式&lt;br /&gt;          server.println();//空白行を入れる&lt;br /&gt;&lt;br /&gt;          //タイトルバー表示&lt;br /&gt;          server.println("&amp;lt;title&amp;gt;KOUSAKU WEB SITE&amp;lt;/title&amp;gt;");        &lt;br /&gt;          server.print("ANALOG INPUT: ");//文字表示&lt;br /&gt;          server.print(analogRead(0));//アナログ入力値&lt;br /&gt;          server.println("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;          //リンク画像表示&lt;br /&gt;          server.println("&amp;lt;img src=\"http://2.bp.blogspot.com/_7uyXRm_coS4/SQeoW-PJB2I/AAAAAAAAAbA/0Go85aRfLDY/s400/ethernet.png\"&amp;gt;");&lt;br /&gt;          server.println("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;          //このブログへのリンク&lt;br /&gt;          server.println("&amp;lt;a href=\"http://kousaku-kousaku.blogspot.com\"&amp;gt;GO TO: KOUSAKU BLOG PAGE&amp;lt;a&amp;gt;");&lt;br /&gt;          break;&lt;br /&gt;        }&lt;br /&gt;        if (c == '\n') {//読み込んだ文字がラインフィードの場合&lt;br /&gt;          //現在の行を空白行とみなす&lt;br /&gt;          current_line_is_blank = true;&lt;br /&gt;        } else if (c != '\r') {//読み込んだ文字がキャリッジリターン以外の場合&lt;br /&gt;          //現在の行を空白行としない&lt;br /&gt;          current_line_is_blank = false;&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    delay(1);&lt;br /&gt;    client.stop();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Arduino基板のアナログ入力０番端子に可変抵抗器をひとつ接続し、その読み取り値もページに表示されます。Arduinoのプログラム上では、MACアドレス、IPアドレス、ポート番号をそれぞれ設定しておき（説明以下）、クライアントのブラウザからの「HTTPリクエスト」（説明以下）を受け、「HTTPリクエスト」内の空白行を確認したら、「HTTPレスポンス」（説明以下）を返します。そのとき同時にHTML形式のページ表示内容データも送信されます。送信されたら、client.stop()で、クライアントとの接続を一旦停止します。再度、クライアントから「HTTPリクエスト」があれば、同様に処理されます。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「MACアドレス」：&lt;/span&gt;&lt;br /&gt;MACアドレスは、Ethernet Shield固有のアドレスであり（ハードウェアごとに異なる）、スイッチサイエンスから購入したものであれば、Ethernet Shield裏面に貼られたシールに記載されている「00-50-C2-97-20-11」のような１６進数の６つの数値です。これらの数値を１６進数表記であたまに「0x」を付け加え記入しておきます。&lt;br /&gt;もし、MACアドレスが不明の場合は、MacOSXなら「アプリケーション&gt;ユーティリティ」内にある「ターミナル」を起動し、「ping -c 3 192.168.3.100」（IPアドレスは設定したものを入力してください）というように入力しリターンキーを押してください。その後、「arp -a」を入力しリターンキーを押すと、入力したIPアドレスの右横にMACアドレスが表示されます。&lt;br /&gt;Windowsの場合、アクセサリ内の「コマンドプロンプト」を起動して、「ping 192.168.3.100」（「ping」の後に半角スペースを入れ、設定したEthernet ShieldのIPアドレスを入力）を入力しリターンキーを押すと、返答として「reply from...」などと数行表示されます。その後、すぐに「arp -a」を入力しリターンキーを押せば、Ethernet ShieldのIPアドレスの右横にMACアドレス（Physical Address）が表示されるはずです。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「IPアドレス」：&lt;/span&gt;&lt;br /&gt;IPアドレスを設定するには、Ethernet Shieldに接続するイーサネットケーブルをコンピュータに接続し、まずイーサネット経由でのコンピュータのIPアドレスを調べてみます。IPアドレスが「192.168.3.xxx」であれば、最後の桁に任意の数値（他のIPアドレスと重ならないような数値）を入力すれば、大丈夫なはずです（今回の場合は「100」にしました）。同時に、ルータ（gateway）のIPアドレスも調べておくといいでしょう。この場合「192.168.3.1」（最後の桁が「1」）になっているはずです。&lt;br /&gt;「ターミナル（MacOSX）」や「コマンドプロンプト（Windows）」で、MACアドレスを調べると（前述）、ルータのIPアドレスやMACアドレスも表示されるはずです。&lt;br /&gt;尚、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processinghttpweb.html"&gt;Processing　HTTPサーバ/Webページ表示&lt;/a&gt;」の冒頭でも、IPアドレスの調べ方について記載しているので参照して下さい。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ポート」：&lt;/span&gt;&lt;br /&gt;ポートは、通常のインターネットで使用している「80」に設定されています（プロトコル：HTTP用）。例えば任意のポート「12345」に設定する場合、ブラウザ上でIPアドレスを入力する際に「http://196.168.3.100:12345」というように「:12345」をIPアドレスの後ろに付け加えます。&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;「HTTPリクエスト」：&lt;/span&gt;&lt;br /&gt;通常、ブラウザからURLを入力しページを表示させる場合、「GET / HTTP/1.1」（HTTPリクエスト）というサーバへの要求内容が送信されます。「GET /index.html HTTP/1.1」にすれば、サーバ上の「index.html」を指定して表示要求することもできます。&lt;br /&gt;実際のブラウザ「Fire Fox 3.0.3」からサーバへ送信されるHTTPリクエストは、以下のような内容になっていました。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;GET / HTTP/1.1　（リクエスト行）&lt;br /&gt;Host: 192.168.3.100:12345　（メッセージヘッダ：以下の空白行手前まで）&lt;br /&gt;User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ja-JP-mac; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3&lt;br /&gt;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&lt;br /&gt;Accept-Language: ja,en-us;q=0.7,en;q=0.3&lt;br /&gt;Accept-Encoding: gzip,deflate&lt;br /&gt;Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7&lt;br /&gt;Keep-Alive: 300&lt;br /&gt;Connection: keep-alive&lt;br /&gt;Cache-Control: max-age=0&lt;br /&gt;（空白行）&lt;br /&gt;（メッセージボディ：今回は特に何も送るデータは含まれていない）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;「リクエスト行」では、サーバへの要求内容が書かれています。&lt;br /&gt;「メッセージヘッダ」では、サポートされるデータ形式や言語などの様々な情報が記載されています。&lt;br /&gt;「空白行」を挿入することで、要求内容の終わり部分を知らせます。&lt;br /&gt;「メッセージボディ」は、サーバに入力情報などを送る際に使われます。&lt;br /&gt;各行末には「\r\n」（CR+LFの改行コード）がついていました。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;「HTTPレスポンス」：&lt;/span&gt;&lt;br /&gt;サーバはブラウザからのHTTPリクエストを受け取って、「HTTP/1.1 200 OK」という受信確認した返事を返してきます。「200」は&lt;a href="http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89"&gt;HTTPステータスコード&lt;/a&gt;と呼ばれ、「Not Found」（ページが見当たらない）の場合は「404」を返します。&lt;br /&gt;「content-type:text/html」は、内容がHTML文書であるという形式について返答しています。&lt;br /&gt;その後で、println()で空白行を送信します（CR+LF／キャリッジリターン+ラインフィードを送信）。&lt;br /&gt;次に、HTMLなどのコンテンツを送ります。&lt;br /&gt;つまり、以下のような内容になります。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;HTTP/1.1 200 OK　　　　（ステータス行）&lt;br /&gt;content-type:text/html （メッセージヘッダー）&lt;br /&gt;　　　　　　　　　　　 （空白行:CR+LF）&lt;br /&gt;&amp;lt;html&amp;gt;　　　　　 　　　（メッセージボディ）&lt;br /&gt;&amp;lt;head&amp;gt;...&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;...&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;コンテンツはHTML形式で、println()の括弧内に記述します。基本的に&amp;lt;&amp;gt;（タグ）で囲い、ブラウザのタイトルバーを表示させるために「&amp;lt;title&amp;gt;KOUSAKU WEB SITE&amp;lt;/title&amp;gt;」としています。ひとつ問題になることは、println()の括弧内に「"..."」ダブルクオーテーションマークで文字列をくくらなければならないのですが、画像リンクやURLリンク先を記入する場合に「"」を文字列として扱いたい時、そのまま入力するとエラーになってしまうので、「"」を「\"」に置き換えて入力します（&lt;a href="http://wisdom.sakura.ne.jp/programming/c/Cdata1.html"&gt;エスケープシーケンス&lt;/a&gt;）。そのため、「println("&amp;lt;img src="リンク先URL"&amp;gt;")」（二重に「"」で括られてしまう）を「println("&amp;lt;img src=\"リンク先URL\"&amp;gt;")」という表記にします。&amp;lt;br/&amp;gt;は、ブラウザ表示される際の改行です。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ブラウザ上での閲覧」：&lt;/span&gt;&lt;br /&gt;ポートを「80」に設定している場合、「http://192.168.3.100」（設定したIPアドレス）を入力しリターンキーを押せば、Arduino Ethernet Shieldからデータが送られ、ブラウザにコンテンツが表示されるはずです。&lt;br /&gt;ポートを「12345」などの任意の番号にしている場合、「http://192.168.3.100:12345」というように、アドレスの最後に「:12345」（コロンとポート番号）をつけてアクセスして下さい。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ローカルネットワーク外からのアクセス」：&lt;/span&gt;&lt;br /&gt;外部からインターネットによってアクセスする場合は、グローバルIPアドレス、ルータ、ポートマッピングなどの設定が必要になります（「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processing-arduino.html#wan"&gt;Processing-Arduino　ネットワーク制御&lt;/a&gt;」の後半に、ポートマッピングなどの設定方法が書いてあるので参照してください）。&lt;br /&gt;尚、LAN内の別のコンピュータからグローバルIPアドレスを使ってアクセスはできないので、実際にLAN外部からアクセスして見てください。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002BFEVWK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41kdiQwLScL._SL160_.jpg" alt="Arduinoイーサネット・シールド" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002BFEVWK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Arduinoイーサネット・シールド&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B002BFEVWK/kousakukousak-22/ref=nosim/" title="Arduinoイーサネット・シールド" target="_blank"&gt;amazlet&lt;/a&gt; at 10.03.31&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;スイッチサイエンス &lt;br /&gt;売り上げランキング: 15483&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002BFEVWK/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31RwPHhxtOL._SL160_.jpg" alt="PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" title="PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;プラネックス (2008-01-11)&lt;br /&gt;売り上げランキング: 43&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://px.a8.net/svt/ejp?a8mat=1HS3QE+BQ4COI+K2I+ZQNG1" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" width="224" height="33" alt="" src="http://www22.a8.net/svt/bgt?aid=090330854709&amp;wid=001&amp;eno=01&amp;mid=s00000002601006003000&amp;mc=1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;img border="0" width="1" height="1" src="http://www19.a8.net/0.gif?a8mat=1HS3QE+BQ4COI+K2I+ZQNG1" alt=""&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1373479362731064585?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1373479362731064585/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1373479362731064585' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1373479362731064585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1373479362731064585'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/arduinoethernet-shield.html' title='Arduino　Ethernet Shield'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SQeoW-PJB2I/AAAAAAAAAbA/0Go85aRfLDY/s72-c/ethernet.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8572111240041242105</id><published>2008-11-01T07:10:00.017+09:00</published><updated>2010-06-20T15:10:32.080+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ネットワーク'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTPサーバ'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　HTTPサーバ/Webページ表示</title><content type='html'>今回は、ProcessingのNetworkライブラリを利用して、ウェブブラウザで閲覧可能なウェブサイトのサーバとして機能させます。&lt;br /&gt;サーバとして、IPアドレスならびにポート番号をあらかじめ確認／設定しておきます。&lt;br /&gt;&lt;br /&gt;LAN内のローカルIPアドレスの場合：&lt;br /&gt;コンピュータのIPアドレスを調べるには、MacOSXであれば、「システム環境設定&gt;ネットワーク」を開き、AirMacを使用している場合は「AirMac」を選択、ケーブル接続している場合は「内蔵Ethernet」を選択し、「TCP/IP」タグを選択すると２段目あたりに「IPアドレス：10.0.1.2」などと表示されています。Windowsの場合は、コマンドプロンプトを開いて、「ipconfig」と打ってリターンすれば、幾つかの情報が現れ「IP Address....10.0.1.2」などと表示されるはずです。&lt;br /&gt;&lt;br /&gt;グローバルIPアドレスを調べる場合：&lt;br /&gt;以下のようなサイトで調べることができます。&lt;br /&gt;&lt;a href="http://dog.tele.jp/lookup.php"&gt;http://dog.tele.jp/lookup.php&lt;/a&gt;&lt;br /&gt;「あなたのパソコンのグローバルIPアドレスは」と書かれている場所に表示されます。&lt;br /&gt;&lt;br /&gt;尚、ローカルネットワークの外からアクセス可能にするためには、ルータ上でのポートマッピング（ポート転送）などの設定が必要になります。設定については、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processing-arduino.html"&gt;Processing-Arduino　ネットワーク制御&lt;/a&gt;」の後半に説明があるので参照してください。&lt;br /&gt;&lt;br /&gt;参照：&lt;a href="https://ybb.softbank.jp/support/connect/adsl/router/4g_3gplus_port.html"&gt;YahooBBのモデムのポート転送設定方法&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processingのプログラム：&lt;br /&gt;&lt;div style="background:#EEEEDD; overflow:auto"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリのインポート&lt;br /&gt;import processing.net.*;&lt;br /&gt;//サーバのインスタンス&lt;br /&gt;Server server;&lt;br /&gt;//カウンタ用変数&lt;br /&gt;int val = 0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  size(200, 200);&lt;br /&gt;  //サーバの設定（ポート：12345）&lt;br /&gt;  server = new Server(this, 12345);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //クライアントからの受信確認&lt;br /&gt;  Client client = server.available();&lt;br /&gt;&lt;br /&gt;  //クライアントがいる場合&lt;br /&gt;  if (client!=null) {&lt;br /&gt;    //クライアントIPアドレス出力&lt;br /&gt;    println("Client IP Address : "+client.ip());&lt;br /&gt;    //クライアントからのデータがあるとき&lt;br /&gt;    if(client.available()&gt;0){&lt;br /&gt;      //データ読み込み（HTTPリクエスト読み込み）&lt;br /&gt;      String clientData=client.readString();&lt;br /&gt;&lt;br /&gt;      //データを改行コードをもとに区切り、&lt;br /&gt;      //改行コードを取り除いてから配列に代入していく&lt;br /&gt;      String[] httpRequest=trim(split(clientData,'\n'));&lt;br /&gt;      &lt;br /&gt;      //受信データの最初の内容が「GET / HTTP/1.1」の場合&lt;br /&gt;      if(httpRequest[0].equals("GET / HTTP/1.1")){&lt;br /&gt;        //以下の内容をクライアントへ返信する（HTTPレスポンス）&lt;br /&gt;        client.write("HTTP/1.1 200 OK\n");//接続成立&lt;br /&gt;        client.write("Content-Type: text/html\n");//HTML文書形式&lt;br /&gt;        client.write("\n");//空白行&lt;br /&gt;        &lt;br /&gt;        //以下HTML文書表示内容&lt;br /&gt;        client.write("&amp;lt;title&amp;gt;KOUSAKU SERVER&amp;lt;/title&amp;gt;");//タイトルバー表示&lt;br /&gt;&lt;br /&gt;        client.write("THIS IS KOUSAKU WEB SITE");//表示テキスト&lt;br /&gt;        client.write("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;        &lt;br /&gt;        client.write("YOUR IP ADDRESS: "+client.ip());//IPアドレス表示&lt;br /&gt;        client.write("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;        &lt;br /&gt;        //リンク画像表示（インターネット上のリンク先）&lt;br /&gt;        client.write("&amp;lt;img src=\"http://3.bp.blogspot.com/_7uyXRm_coS4/SPRtCNVY1gI/AAAAAAAAATk/UR4Tl5ytviA/s400/network.png\"&amp;gt;");&lt;br /&gt;        client.write("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;&lt;br /&gt;        //リンクページへ移動する&lt;br /&gt;        client.write("&amp;lt;a href=\"http://kousaku-kousaku.blogspot.com\"&amp;gt;GO TO: KOUSAKU BLOG PAGE&amp;lt;a&amp;gt;");&lt;br /&gt;        client.write("&amp;lt;br/&amp;gt;");//改行&lt;br /&gt;  &lt;br /&gt;        //カウンタ機能&lt;br /&gt;        val++;&lt;br /&gt;        client.write("COUNTER: "+val);//カウンタ表示       &lt;br /&gt;        client.write("\n\n");//空白行&lt;br /&gt;      }&lt;br /&gt;      client.stop();//クライアントとの接続を停止&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;上記のサーバ用のプログラムを起動し、クライアント用コンピュータ上でブラウザ（IE、Safari、FireFoxなど）で指定したIPアドレスとポート番号を入力してアクセスしてください。&lt;br /&gt;例えば、「192.168.3.3」がサーバのIPアドレスであれば、「http://192.168.3.3:12345」をブラウザ上で入力して下さい。&lt;br /&gt;&lt;br /&gt;HTTPリクエスト、HTTPレスポンスについては、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/arduinoethernet-shield.html"&gt;Arduino Ethernet Shield&lt;/a&gt;」を参照してください。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31TBYmbSOhL._SL160_.jpg" alt="FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" title="FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;フォン・ジャパン &lt;br /&gt;売り上げランキング: 245&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://px.a8.net/svt/ejp?a8mat=1HS3QE+AV5T82+MZI+C03K2" target="_blank"&gt;独自ドメインが使えて基本使用料0円レンタルサーバー&lt;/a&gt;&lt;br /&gt;&lt;img border="0" width="1" height="1" src="http://www12.a8.net/0.gif?a8mat=1HS3QE+AV5T82+MZI+C03K2" alt=""&gt;&lt;br /&gt;&lt;a href="http://px.a8.net/svt/ejp?a8mat=1HS3QE+BRB7W2+1S9W+61RI9" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" width="234" height="60" alt="" src="http://www25.a8.net/svt/bgt?aid=090330854711&amp;wid=001&amp;eno=01&amp;mid=s00000008330001016000&amp;mc=1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;img border="0" width="1" height="1" src="http://www14.a8.net/0.gif?a8mat=1HS3QE+BRB7W2+1S9W+61RI9" alt=""&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8572111240041242105?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8572111240041242105/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8572111240041242105' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8572111240041242105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8572111240041242105'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/11/processinghttpweb.html' title='Processing　HTTPサーバ/Webページ表示'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-4601664301345648381</id><published>2008-10-30T07:47:00.004+09:00</published><updated>2008-10-30T08:03:51.969+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>次回授業（11/01）について</title><content type='html'>次回の授業（11/01）では、今後制作する作品についてのチュートリアル／ディスカッションを行いたいと思います。&lt;br /&gt;各自の作品についてのアイデア、スケッチ、ダイヤグラム、写真、参考文献など、作品の方向性を示すものを持参してください。&lt;br /&gt;&lt;br /&gt;尚、来週11/08は休みです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-4601664301345648381?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/4601664301345648381/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=4601664301345648381' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4601664301345648381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4601664301345648381'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/1101.html' title='次回授業（11/01）について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5747404232874217150</id><published>2008-10-25T13:00:00.033+09:00</published><updated>2010-12-06T09:52:39.837+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='サーボ'/><category scheme='http://www.blogger.com/atom/ns#' term='ネットワーク'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing-Arduino　ネットワーク制御</title><content type='html'>今回は、Processingの&lt;a href="http://processing.org/reference/libraries/net/index.html"&gt;Networkライブラリ&lt;/a&gt;を使って、ネットワーク越しに複数のクライアントコンピュータから、サーバコンピュータに接続されたArduinoのサーボとLEDを操作することにします。ネットワーク上では、情報を提供する側となるサーバコンピュータに複数のクライアントコンピュータが接続されているような状態になります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SPRtCNVY1gI/AAAAAAAAATk/UR4Tl5ytviA/s1600-h/network.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SPRtCNVY1gI/AAAAAAAAATk/UR4Tl5ytviA/s400/network.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256946549754746370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;まず、上図のようにローカルネットワーク内での通信を行ってみます（後半にローカルネットワーク外からの通信サンプルを記載しておきました）。&lt;br /&gt;&lt;br /&gt;ひとつのクライアントからサーバへ信号が送られると、サーボの角度やLEDの点灯状態が変化しますが、サーバはクライアントからの信号を受け取るだけではなく、現在のサーボの角度やLEDの状態（オン／オフ）についての情報も各クライアントへ送り返します。そうすることで、各クライアントは現在のサーボやLEDの状態を把握しながら制御することができます。&lt;br /&gt;サーバコンピュータとクライアントコンピュータはインターネット越しに通信され、サーバコンピュータとArduinoはシリアル通信されます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SPSqqQiHYAI/AAAAAAAAATs/GlDpHUiG4w8/s1600-h/server.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SPSqqQiHYAI/AAAAAAAAATs/GlDpHUiG4w8/s400/server.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5257014308017496066" /&gt;&lt;/a&gt;&lt;br /&gt;（Processingの画面：画面上半分がサーボ用スライダ、下半分がLED用ボタン）&lt;br /&gt;&lt;br /&gt;Processingの画面には、上半分がサーボ用のスライダ、下半分にLED用のボタンを配置することにします。スライダは0~255の値を送信し、ボタンは押すとオン（緑）の状態になり、もう一度押すと白（オフ）に戻ります。あるクライアントがボタンを押せば、サーバとその他のクライアントのボタンの色も同時に変わります。サーバからのコントロールも可能です。&lt;br /&gt;&lt;br /&gt;Arduinoでは、サーボの値とLEDの値をサーバコンピュータからシリアル通信を通してデータ受信します。以下のプログラムでは、サーボは３番ピンと接続しPWMで制御することにします（サーボ制御の方法については、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino.html"&gt;Arduino　サーボ制御&lt;/a&gt;」を参照して下さい）。LEDは１３番ピンに接続しデジタル出力でオン／オフ制御することにします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arduinoのプログラム：&lt;/span&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;//サーボ用変数を用意&lt;br /&gt;int servoVal;&lt;br /&gt;//LED用変数を用意&lt;br /&gt;int ledVal;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;  //13番ピンをデジタル出力に設定&lt;br /&gt;  pinMode(13,OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //データが二個きたら（１個より多ければ）&lt;br /&gt;  if(Serial.available()&gt;1){&lt;br /&gt;    //サーボの回転値として読み込む（0~255）&lt;br /&gt;    servoVal=Serial.read();&lt;br /&gt;    //LEDの点灯状態（0:OFF,1:ON）&lt;br /&gt;    ledVal=Serial.read();&lt;br /&gt;    //合図用データ送信&lt;br /&gt;    Serial.print('A');&lt;br /&gt;  }&lt;br /&gt;  //3番ピン（PWM）：アナログ出力（サーボ）&lt;br /&gt;  analogWrite(3,servoVal);&lt;br /&gt;  //13番ピン：デジタル出力（LED）&lt;br /&gt;  digitalWrite(13,ledVal);&lt;br /&gt;&lt;br /&gt;  //0.02秒周期にする&lt;br /&gt;  delay(20);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「サーバのプログラム」：&lt;/span&gt;&lt;br /&gt;サーバ側のプログラムでは、ネットワークとシリアル通信の二つのライブラリが必要となります。スライダは横方向（X座標）に動かし256段階あるので、画面サイズの横幅も256ピクセルにしてあります。ドラッグのためのプログラムは、&lt;a href="http://processing.org/reference/mouseDragged_.html"&gt;mouseDragged()&lt;/a&gt;を使わず、startDrag（名前は任意）というフラグを用意し、&lt;a href="http://processing.org/reference/mousePressed_.html"&gt;mousePressed()&lt;/a&gt;でマウスを押したときにフラグがtrueになり、ドラッグが開始されたことになり、&lt;a href="http://processing.org/reference/mouseReleased_.html"&gt;mouseReleased()&lt;/a&gt;でマウスが放されたときにドラッグ終了になり、同時にフラグもfalseになるようにしておきます。つまりフラグstartDragによって、ドラッグしているかどうかを判別することになります。ドラッグしていなくてもマウスボタンを押し続けている限りドラッグ中と見なされるので、その間データを送信し続けます。&lt;br /&gt;あまり高速での通信ができないためフレームレートを10にしています。環境に応じてフレームレートを調整してみて下さい（サーバとクライアントのプログラム両方）。&lt;br /&gt;サーバとクライアントの間では、文字列で送受信しています。文字列に含まれるデータは：&lt;br /&gt;&lt;br /&gt;サーボの値 + コンマ + LEDの値 + 改行コード&lt;br /&gt;&lt;br /&gt;であり、たとえば&lt;br /&gt;&lt;br /&gt;"155,1\n"&lt;br /&gt;&lt;br /&gt;のような連続した文字列になります。サーボの値は0~255の数値、LEDの値は0か1になり、その間をコンマで区切り（デリミタ）、最後の部分に「\n」改行コードを付け加えて送信します。文字「\n」は、&lt;a href="http://arduino.cc/en/Reference/ASCIIchart"&gt;アスキーコード表&lt;/a&gt;で十進数の「10」に相当します。受信の際には、&lt;a href="http://processing.org/reference/libraries/net/Client_readStringUntil_.html"&gt;readStringUntil(10)&lt;/a&gt;を使うことで、改行コード「\n」つまり「10」までをひとまとまりのデータとして読み込み、その文字列データを&lt;a href="http://processing.org/reference/trim_.html"&gt;trim()&lt;/a&gt;で改行コードを取り除き、&lt;a href="http://processing.org/reference/split_.html"&gt;split()&lt;/a&gt;でコンマをもとに配列に分解し、&lt;a href="http://processing.org/reference/int_.html"&gt;int()&lt;/a&gt;で文字列の数値を整数化し、それぞれの値に代入します（文字列を分解して数値化する方法は「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」でも説明してあります）。&lt;br /&gt;サーバのプログラムが開始したら、「s」キーを押してArduinoとのシリアル通信を開始します。&lt;br /&gt;&lt;br /&gt;Processing サーバのプログラム：&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ネットワークライブラリの取り込み&lt;br /&gt;import processing.net.*;&lt;br /&gt;//シリアル通信ライブラリの取り込み&lt;br /&gt;import processing.serial.*;&lt;br /&gt;&lt;br /&gt;//サーバのインスタンス&lt;br /&gt;Server server;&lt;br /&gt;//クライアントのインスタンス&lt;br /&gt;Client client;&lt;br /&gt;//シリアル通信のインスタンス&lt;br /&gt;Serial port;&lt;br /&gt;&lt;br /&gt;//サーボの変数&lt;br /&gt;int servoVal;&lt;br /&gt;//LEDの変数&lt;br /&gt;int ledVal;&lt;br /&gt;//ドラッグ中かどうかのフラグ&lt;br /&gt;boolean startDrag=false;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //画面サイズ&lt;br /&gt;  size(256,200);&lt;br /&gt;  //フレームレートを遅めに設定&lt;br /&gt;  frameRate(10);&lt;br /&gt;  //サーバの設定（ポート：12345）&lt;br /&gt;  server = new Server(this, 12345);&lt;br /&gt;  //シリアルポート設定&lt;br /&gt;  port=new Serial(this,"/dev/tty.usbserial-A4001Kjl",9600);&lt;br /&gt;  //矩形描画を中央配置に設定&lt;br /&gt;  rectMode(CENTER);&lt;br /&gt;  //外形線なし&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //クライアントからのデータ受信&lt;br /&gt;  client = server.available();&lt;br /&gt;  //クライアント受信内容が空ではないとき&lt;br /&gt;  if (client != null) {&lt;br /&gt;    //文字列データの読み込み（改行コードまで）&lt;br /&gt;    String input=client.readStringUntil(10);&lt;br /&gt;    //文字列データの改行コードを取り除く&lt;br /&gt;    input=trim(input);&lt;br /&gt;    //文字列データを整数の配列に変換&lt;br /&gt;    int[] data = int(split(input, ','));&lt;br /&gt;    //配列の最初の値をサーボ変数に代入&lt;br /&gt;    servoVal=data[0];&lt;br /&gt;    //配列の次の値をLED変数に代入&lt;br /&gt;    ledVal=data[1];    &lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  //ドラッグ中&lt;br /&gt;  if(startDrag){&lt;br /&gt;    //サーボ変数にマウスX座標値を代入（最小値:0、最大値:255）&lt;br /&gt;    servoVal=constrain(mouseX,0,255);&lt;br /&gt;    //クライアント側へ送信（サーボの値、コンマ、LEDの値、改行コード）&lt;br /&gt;    server.write(servoVal+","+ledVal+"\n");&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  background(0);//背景（黒）&lt;br /&gt;&lt;br /&gt;  fill(80);//スライダ溝の塗色（グレー:80）&lt;br /&gt;  rect(width/2,50,width,50);//スライダ溝の矩形描画&lt;br /&gt;  fill(255);//スライダの塗色（白）&lt;br /&gt;  rect(servoVal,50,10,50);//スライダの矩形描画&lt;br /&gt;&lt;br /&gt;  //LEDボタンの色切替（0:オフ,1:オン）&lt;br /&gt;  if(ledVal==1){  //オンの場合&lt;br /&gt;    fill(0,255,0);//緑にする&lt;br /&gt;  }else{          //オフの場合&lt;br /&gt;    fill(255);    //白にする&lt;br /&gt;  }&lt;br /&gt;  //LED用のボタン描画&lt;br /&gt;  rect(width/2,150,50,50);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//シリアル通信処理&lt;br /&gt;void serialEvent(Serial p){&lt;br /&gt;  //合図用データが１個来た場合（０個より多い場合）&lt;br /&gt;  if(port.available()&gt;0){&lt;br /&gt;    //合図用データを読込んバッファを空にする&lt;br /&gt;    port.read();&lt;br /&gt;    //サーボの値とLEDの値をシリアル通信で出力&lt;br /&gt;    port.write(servoVal);&lt;br /&gt;    port.write(ledVal);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//キーを押した場合&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //「s」キーの場合&lt;br /&gt;  if(key=='s'){&lt;br /&gt;    //シリアル通信開始用データ送信&lt;br /&gt;    port.write(servoVal);&lt;br /&gt;    port.write(ledVal);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスボタンを押した場合&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //LED用のボタン矩形内にマウスがある場合&lt;br /&gt;  if(mouseX&gt;width/2-25 &amp;&amp; mouseX&amp;lt;width/2+25 &amp;&amp; mouseY&amp;gt;125 &amp;&amp; mouseY&lt;175){&lt;br /&gt;    //LED点灯切替処理&lt;br /&gt;    if(ledVal==0){//オフの場合&lt;br /&gt;      ledVal=1;   //オンにする&lt;br /&gt;    }else{        //オンの場合&lt;br /&gt;      ledVal=0;   //オフにする&lt;br /&gt;    }&lt;br /&gt;    //クライアント側へ送信（サーボの値、コンマ、LEDの値、改行コード）&lt;br /&gt;    server.write(servoVal+","+ledVal+"\n");&lt;br /&gt;  }&lt;br /&gt;  //スライダ部分の場合&lt;br /&gt;  if(mouseY&gt;25 &amp;&amp; mouseY&lt;75){&lt;br /&gt;    //ドラッグのフラグをtrueにする&lt;br /&gt;    startDrag=true;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスを放した場合&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  //ドラッグのフラグをfalseにする&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Processing クライアント側のプログラム」：&lt;/span&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ネットワークライブラリを取り込む&lt;br /&gt;import processing.net.*;&lt;br /&gt;//クライアントのインスタンス&lt;br /&gt;Client client;&lt;br /&gt;&lt;br /&gt;//サーボ用変数を用意&lt;br /&gt;int servoVal=127;&lt;br /&gt;//LED用変数を用意&lt;br /&gt;int ledVal=0;&lt;br /&gt;//ドラッグ中かどうかのフラグ&lt;br /&gt;boolean startDrag;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  size(256, 200);&lt;br /&gt;  frameRate(10);&lt;br /&gt;  //サーバのIPアドレス、ポートの設定&lt;br /&gt;  //（「10.0.1.2」の部分は適宜変更）&lt;br /&gt;  client = new Client(this, "10.0.1.2", 12345);&lt;br /&gt;  rectMode(CENTER);&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //サーバからのデータ受信&lt;br /&gt;  if (client.available() &gt; 0) {&lt;br /&gt;    String input = client.readStringUntil(10);&lt;br /&gt;    input = trim(input);&lt;br /&gt;    int[] data = int(split(input, ','));&lt;br /&gt;    print(data);&lt;br /&gt;    servoVal=data[0];&lt;br /&gt;    ledVal=data[1];&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //ドラッグ中の処理&lt;br /&gt;  if(startDrag){&lt;br /&gt;    servoVal=constrain(mouseX,0,255);&lt;br /&gt;    client.write(servoVal + "," +ledVal + "\n");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //描画処理&lt;br /&gt;  background(0);&lt;br /&gt;  fill(20);&lt;br /&gt;  rect(width/2,50,width,50);&lt;br /&gt;  fill(255);&lt;br /&gt;  rect(servoVal,50,10,50);&lt;br /&gt;  if(ledVal==1){&lt;br /&gt;    fill(0,255,0);&lt;br /&gt;  }else{&lt;br /&gt;    fill(255);&lt;br /&gt;  }&lt;br /&gt;  rect(width/2,150,50,50);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  if(mouseX&gt;width/2-25 &amp;&amp; mouseX&amp;lt;width/2+25 &amp;&amp; mouseY&amp;gt;125 &amp;&amp; mouseY&lt;175){&lt;br /&gt;    if(ledVal==0){&lt;br /&gt;      ledVal=1;&lt;br /&gt;    }else{&lt;br /&gt;      ledVal=0;&lt;br /&gt;    }&lt;br /&gt;    //サーバへ送信（サーボの値、コンマ、LEDの値、改行コード）&lt;br /&gt;    client.write(servoVal + "," +ledVal + "\n");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if(mouseY&gt;25 &amp;&amp; mouseY&lt;75){&lt;br /&gt;    startDrag=true;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){&lt;br /&gt;  startDrag=false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;クライアント側のプログラムでは、setup(){...}内でサーバのIPアドレスを指定する必要があります。上のプログラムでは「10.0.1.2」になっていますが、適宜変更してください。通常ローカルネットワークであれば「127.0.1.2」や「192.168.1.2」、あるいはルーターやAirMacなどを使っていれば、「10.0.1.2」などになっているかもしれません。サーバに設定したコンピュータのIPアドレスを調べるには、MacOSXであれば、「システム環境設定&gt;ネットワーク」を開き、AirMacを使用している場合は「AirMac」を選択、ケーブル接続している場合は「内蔵Ethernet」を選択し、「TCP/IP」タグを選択すると２段目あたりに「IPアドレス：10.0.1.2」などと表示されています。Windowsの場合は、コマンドプロンプトを開いて、「ipconfig」と打ってリターンすれば、幾つかの情報が現れ「IP Address....10.0.1.2」などと表示されるはずです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="wan"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「外部からの接続方法」：&lt;/span&gt;&lt;br /&gt;ルータを通してインターネットに接続している場合、ローカルネットワーク外から通信するには、ルータのポートマッピングやサーバコンピュータのファイヤーウォールの解除設定する必要がでてきます。&lt;br /&gt;通常、インターネットプロバイダからグローバルIPアドレスがひとつ与えられています。各自のパソコンからグローバルIPアドレスを調べるには以下のようなサイトで調べることができます。&lt;br /&gt;&lt;a href="http://dog.tele.jp/lookup.php"&gt;http://dog.tele.jp/lookup.php&lt;/a&gt;&lt;br /&gt;「あなたのパソコンのグローバルIPアドレスは」と書かれている場所に表示されるはずです。&lt;br /&gt;あるいは、&lt;br /&gt;&lt;a href="http://www.ugtop.com/spill.shtml"&gt;http://www.ugtop.com/spill.shtml&lt;/a&gt;&lt;br /&gt;のサイトの「現在接続している場所（現ＩＰ）」の欄に同じアドレスが表示されるはずです。&lt;br /&gt;このグローバルIPアドレスをメモしておきます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「接続例」：&lt;/span&gt;&lt;br /&gt;以下は、ローカルネットワーク内のひとつのコンピュータをサーバに設定し、ローカルネットワーク外から通信をするための接続例です。例えば、仕事場や学校のコンピュータから、自宅にあるサーバに設定したコンピュータにアクセスする方法です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SQRDZ6Z1oNI/AAAAAAAAAZ8/R5KtPwZxTkw/s1600-h/network1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 165px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SQRDZ6Z1oNI/AAAAAAAAAZ8/R5KtPwZxTkw/s400/network1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5261404377129001170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上画像では、ADSLモデム-ルータを使用してインターネットに接続しており、さらにそのADSLモデム-ルータにAirMacをケーブルで接続しています。そして複数あるコンピュータは、AirMacの無線通信でインターネットに接続しています。&lt;br /&gt;このネットワークのグローバルIPアドレスは、&lt;a href="http://dog.tele.jp/lookup.php"&gt;先ほど調べた方法&lt;/a&gt;により「219.196.xxx.xxx」になっています（実際のアドレスに置き換えてください）。「モデム-ルータ」によって、グローバルIPアドレスがプライベートIPアドレスに変換され、複数のプライベートIPアドレスに分けられます（「192.168.xxx.xxx」のようなアドレス）。さらに、AirMacにおいてもルータ機能があるため、さらに細かなプライベートIPアドレスに分けられます（「10.0.1.xxx」のようなアドレス）。&lt;br /&gt;ここでは、二つのルータによって二段階にIPアドレスが割り振られていますが、AirMacを「ブリッジモード」に切り替えることで、以下のようにAirMacのルータ機能を使わないネットワークに変更することができます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SQRDlPGxqnI/AAAAAAAAAaE/DI3tmZHvcHY/s1600-h/network2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SQRDlPGxqnI/AAAAAAAAAaE/DI3tmZHvcHY/s400/network2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5261404571664755314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ブリッジモード」：&lt;/span&gt;&lt;br /&gt;「ブリッジモード」は、コンピュータから「AirMacユーティリティ」を開いて変更することができます（ただし、変更できる権限が必要です）。「ブリッジモード」にすることで、AirMacはIPアドレス（「10.0.1.xxx」のようなアドレス）を割り振らなくなるので、元々の「モデム-ルータ」が割り振るアドレスを使うことにします（「192.168.xxx.xxx」のようなアドレス）。ただし、このままだと「モデム-ルータ」が自動的にプライベートIPアドレスをそれぞれのコンピュータに割り振ってしまうので、使用しないコンピュータなどがあるときは、プライベートIPアドレスが入れ替わってしまうことがあります。&lt;br /&gt;そのため、サーバにしたいコンピュータには固定したIPアドレスを与えます。以下のように「コンピュータC」に固定のIPアドレス「192.168.3.10」を与えて、サーバとして機能させることにします。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SQRJ3_M9ARI/AAAAAAAAAaM/MvvKfGsFbSY/s1600-h/network3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SQRJ3_M9ARI/AAAAAAAAAaM/MvvKfGsFbSY/s400/network3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5261411490882978066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「固定IPアドレスにする」：&lt;/span&gt;&lt;br /&gt;各コンピュータ上のIPアドレス設定では、「DHCPサーバを参照」や「DHCPサーバを使用」というように、ルータから自動的にIPアドレスが割り振られる設定になっていることが多いと思います。MacOSXの場合、「システム環境設定&gt;ネットワーク」へ行き、AirMac（あるいはEthernet：現在インターネットに接続している方法を選択）を選択し、「TCP/IP」の項目内で設定できます。サーバ用に使うコンピュータにおいては、このIPアドレス設定の部分を、「手入力」に変更し、指定したIPアドレスを使うように設定し直します。&lt;br /&gt;Windows XPの場合は、「コントロールパネル&gt;ネットワーク接続」で、使用しているネットワーク接続（「ワイヤレスネットワーク接続」など）のプロパティを右クリックで開き、「インターネットプロトコル（TCP/IP）」を選択しプロパティボタンを押し、「IPアドレスを自動的に取得する」に設定されている部分を「次のIPアドレスを使う」に切り替えて、以下の設定を入力していきます。&lt;br /&gt;&lt;br /&gt;上図の場合は、ルータのIPアドレスが「192.168.3.1」になり、AirMacが「192.168.3.2」、以下に続く各コンピュータは「192.168.3.3」、「192.168.3.4」というように最後の数値がひとつずつ増えていきます。IPアドレスが重ならないように、固定するIPアドレスを「192.168.3.10」に設定しておきます（1~254まで可）。サブネットマスクは自動的に「255.255.255.0」になるはずです。ルータのIPアドレス（ゲートウェイ）は、「DHCPサーバを参照」の時と同じなので「192.168.3.1」を記入します。「DNS」あるいは「DNSサーバ」の項目については、先ほど調べたグローバルIPアドレスである「219.196.xxx.xxx」を記入します（グローバルIPアドレスは、実際に調べたアドレスを入れてください）。サーバ用のコンピュータの設定は以上です。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ポートマッピング設定」：&lt;/span&gt;&lt;br /&gt;もうひとつしなければならないことは、ポートマッピング（ポート転送／ポートフォワーディング）の設定です。回線に接続しているルータ自体の設定を変更する必要があります。通常コンピュータ上のブラウザからルータのアドレスにアクセスし操作するようになっています（各ルータのマニュアルを参照してください）。大抵の場合は、「詳細設定」のような項目に入っていると思います。&lt;br /&gt;プロトコル、ポート、転送先のIPアドレス（先ほど固定したサーバ用のIPアドレス）を入力する必要があります。プロトコルは「TCP/UDP」を選択し、WAN側とLAN側のポートは同じものを入れておきますが、今回の場合Processingのコードでポートを「12345」に設定しておいたので、それを入力することにします（「12345」〜「12346」までというように範囲指定する入力にしておきます）。転送先IPアドレスは、固定した「192.168.3.10」を入力しておきます。ポートマッピングの設定は以上です。尚、ポートは、0~65535までの番号が入れられますが、0~1023までは使用目的が決められているので、あまりつかわない方がいいと思います。&lt;br /&gt;&lt;br /&gt;ポートマッピングによって、ポート「12345」（あるいは「12346」）を通してローカルネットワーク外からグローバルIPアドレス「219.196.xxx.xxx」に送られた信号は、サーバ用コンピュータのプライベートIPアドレス「192.168.3.10」に転送されることになります。&lt;br /&gt;&lt;br /&gt;Processingのクライアント用のプログラム内の、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;client = new Client(this, "219.196.xxx.xxx", 12345);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;IPアドレス部分をグローバルIPアドレス「219.196.xxx.xxx」（実際に調べたアドレスを入れてください）に書き換えればローカルネットワーク外から通信できるようになります。&lt;br /&gt;&lt;br /&gt;参照：&lt;a href="https://ybb.softbank.jp/support/connect/adsl/router/4g_3gplus_port.html"&gt;YahooBBのモデムのポート転送設定方法&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「外部から通信できない場合」：&lt;/span&gt;&lt;br /&gt;ファイヤーウォールによって、外部からの通信をブロックしている場合があるので、ファイヤーウォール設定を解除して通信してみてください。ただし、セキュリティ上危険になるので注意してください。&lt;br /&gt;&lt;br /&gt;尚、同じローカルネットワーク内にある別のコンピュータからは通信できないので（例えば上図の「コンピュータA」とサーバの「コンピュータC」との通信はできない）、異なるグローバルIPアドレス（外部）から通信してください。「コンピュータA」と「コンピュータC」を通信させる場合は、前半で説明したローカルネットワーク内での通信方法を利用してください。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31TBYmbSOhL._SL160_.jpg" alt="FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" title="FON La Fonera+ (ラ・フォネラ・プラス) FON機能搭載 無線LANルータ FON2201E" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;フォン・ジャパン &lt;br /&gt;売り上げランキング: 245&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0012ZCPEQ/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31RwPHhxtOL._SL160_.jpg" alt="PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" title="PLANEX 手のひらサイズ 無線LANポケットルータ (ルータ/AP/コンバータ) GW-MF54G2" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;プラネックス (2008-01-11)&lt;br /&gt;売り上げランキング: 43&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000ZKFP1O/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5747404232874217150?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5747404232874217150/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5747404232874217150' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5747404232874217150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5747404232874217150'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processing-arduino.html' title='Processing-Arduino　ネットワーク制御'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7uyXRm_coS4/SPRtCNVY1gI/AAAAAAAAATk/UR4Tl5ytviA/s72-c/network.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-641603660289468719</id><published>2008-10-23T12:47:00.009+09:00</published><updated>2008-12-01T21:15:19.801+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino書籍：「Getting Started with Arduino」</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/STPVNmAyuTI/AAAAAAAAAeU/I-R2wgd18d4/s1600-h/getting.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 259px; height: 400px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/STPVNmAyuTI/AAAAAAAAAeU/I-R2wgd18d4/s400/getting.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5274794018099870002" /&gt;&lt;/a&gt;&lt;br /&gt;「&lt;a href="http://www.amazon.co.jp/gp/product/0596155514?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0596155514"&gt;Getting Started with Arduino&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0596155514" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;」&lt;br /&gt;&lt;br /&gt;Arduinoの本「&lt;a href="http://www.amazon.co.jp/gp/product/0596155514?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0596155514" target="_blank"&gt;Getting Started with Arduino&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0596155514" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;」が、日本のアマゾンからも購入（予約購入）できるようになりました。&lt;br /&gt;&lt;br /&gt;その他、Arduino関連の本であれば、主に以下のようなものがあります。&lt;br /&gt;・「&lt;a href="http://www.amazon.co.jp/gp/product/0596510519?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=0596510519" target="_blank"&gt;Making Things Talk&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=0596510519" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;」&lt;br /&gt;・「&lt;a href="http://www.amazon.co.jp/gp/product/159200346X?ie=UTF8&amp;tag=kousakukousak-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=159200346X" target="_blank"&gt;Physical Computing: Sensing and Controlling the Physical World with Computers&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=kousakukousak-22&amp;l=as2&amp;o=9&amp;a=159200346X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;」&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-641603660289468719?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/641603660289468719/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=641603660289468719' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/641603660289468719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/641603660289468719'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/arduinogetting-started-with-arduino.html' title='Arduino書籍：「Getting Started with Arduino」'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/STPVNmAyuTI/AAAAAAAAAeU/I-R2wgd18d4/s72-c/getting.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5734094196338520869</id><published>2008-10-23T09:14:00.023+09:00</published><updated>2009-03-30T02:11:10.438+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='曲げセンサ'/><category scheme='http://www.blogger.com/atom/ns#' term='ワイヤレス通信'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='BlueTooth'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Arduino-Processing　BlueTooth通信+曲げセンサ</title><content type='html'>以前、ワイヤレス通信として&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduinoxbee-shieldprocessingxbee.html"&gt;Xbeeモジュールを用いました&lt;/a&gt;が、もう一つワイヤレス通信として「BlueTooth」を用いる方法があります。今回は、&lt;a href="http://www.sparkfun.com"&gt;Sparkfun&lt;/a&gt;のBlueToothモジュール「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582"&gt;BlueSmiRF Gold&lt;/a&gt;」を使います（国内では&lt;a href="http://strawberry-linux.com/catalog/items?code=18032"&gt;ストロベリーリナックス&lt;/a&gt;で販売）。Xbeeは3.3V電源を使用しますが、「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582"&gt;BlueSmiRF Gold&lt;/a&gt;」は3.3V〜6.0Vまでの電源を使うことができるので、そのままArduinoにも接続しやすい仕様となっています（ただし、日本において、「BlueSmiRF Gold」は技術基準適合証明を受けていないため、実験や開発用のみで使用しなければならないようです）。Xbeeの場合は最低でも二つのモジュールを用意しなければ通信実験できないのですが、多くのノートパソコンにはBlueToothが搭載されているので、一つのBlueToothモジュールがあれば、とりあえずコンピュータから送受信することができます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SPw-gTFFDwI/AAAAAAAAAXM/NwW1xcy7ykQ/s1600-h/00582-01-L.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SPw-gTFFDwI/AAAAAAAAAXM/NwW1xcy7ykQ/s400/00582-01-L.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5259147189460209410" /&gt;&lt;/a&gt;&lt;br /&gt;（上画像：「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582"&gt;BlueSmiRF Gold&lt;/a&gt;」/from &lt;a href="http://www.sparkfun.com"&gt;Sparkfun&lt;/a&gt;）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今回は、Arduino基板に&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8B%C8%82%B0&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;曲げセンサ&lt;/a&gt;と「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582"&gt;BlueSmiRF Gold&lt;/a&gt;」を接続し、コンピュータのBlueTooth機能を利用して、Processingとワイヤレスでシリアル通信してみます。曲げセンサについては、２本を背中合わせに貼り合わせて、まっすぐな状態から両方向に曲げて出力値が変化するように加工します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「コンピュータとのBluetooth接続設定」&lt;/span&gt;：&lt;br /&gt;まず、「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582"&gt;BlueSmiRF Gold&lt;/a&gt;」とコンピュータのBluetoothの接続設定を行います。&lt;br /&gt;「BlueSmiRF Gold」には以下のように６本の端子があります。&lt;br /&gt;&lt;br /&gt;CTS:送信要求端子（非接続またはRTS端子へ）&lt;br /&gt;PWR:電源端子（Arduino 5V端子へ）&lt;br /&gt;GND:グランド端子（Arduino GND端子へ）&lt;br /&gt;TX :送信端子（Arduino RX:0番端子へ）&lt;br /&gt;RX :受信端子（Arduino TX:1番端子へ）&lt;br /&gt;RTS:受信準備完了端子（非接続またはCTS端子へ）&lt;br /&gt;&lt;br /&gt;「BlueSmiRF Gold」のPWR端子とGND端子をArduinoの5V端子とGND端子に接続し、USBを通して電源供給します（あるいは、外部電源でもかまいません）。そうすれば、「BlueSmiRF Gold」の赤色のLEDが点滅し始めます。他の端子については、今のところ接続する必要はありません。&lt;br /&gt;&lt;br /&gt;MacOSXの場合、&lt;br /&gt;・メニューバー右端のBluetoothアイコンをクリック。&lt;br /&gt;・「Bluetooth：入」を選択し機能をオンにする。&lt;br /&gt;・さらに「Bluetoothデバイスを設定...」を選択する。&lt;br /&gt;・「Bluetooth設定アシスタント」の画面が現れる。&lt;br /&gt;・「続ける」を押していき、「任意のデバイス」を選択。&lt;br /&gt;・デバイスが検索されたら「パスキーオプション」を押す。&lt;br /&gt;・「このデバイスではパスキーを使用しない」を選択し「OK」を押す。&lt;br /&gt;・「続ける」を押していき、最後に「終了」を押して完了。&lt;br /&gt;&lt;br /&gt;Windowsの「Bluetooth設定」の場合、&lt;br /&gt;アプリケーションを立ち上げて「新しい接続」を押します。「新しい接続の追加ウィザード」の画面で、「エクスプレスモード」を選び「次へ」を押し、「FireFry-D39A｣というようなデバイス名で「BlueSmiRF Gold」を認識します。「次へ」を押すとポートが「COM40｣あたりに設定されます。設定されれば以下のような画面になります。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SP5JNIYAdpI/AAAAAAAAAYU/XOFA94NoVUY/s1600-h/btset1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SP5JNIYAdpI/AAAAAAAAAYU/XOFA94NoVUY/s400/btset1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259721904750622354" /&gt;&lt;/a&gt;&lt;br /&gt;「FireFry-D39A｣を選択しダブルクリックすれば「接続」しますが、ここでは「接続」せず「ハイパーターミナル」上で「接続」することにします。&lt;br /&gt;&lt;br /&gt;Bluetoothが内蔵されていないコンピュータの場合は、以下のようなBluetooth USBアダプタをコンピュータに接続する必要があります。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F92CQU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/31QYciQWxGL._SL160_.jpg" alt="PLANEX Bluetooth Ver2.1+EDR対応 Microサイズ USBアダプタ (Class1/100m) BT-MicroEDR1X" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F92CQU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;PLANEX Bluetooth Ver2.1+EDR対応 Microサイズ USBアダプタ (Class1/100m) BT-MicroEDR1X&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/B001F92CQU/kousakukousak-22/ref=nosim/" title="PLANEX Bluetooth Ver2.1+EDR対応 Microサイズ USBアダプタ (Class1/100m) BT-MicroEDR1X" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;プラネックス (2008-09-19)&lt;br /&gt;売り上げランキング: 37&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F92CQU/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Zterm/ハイパーターミナルの設定」&lt;/span&gt;：&lt;br /&gt;「BlueSmiRF Gold」の赤色のLED点滅が緑色のLED点灯に変われば通信接続されたことになります。&lt;br /&gt;ただし「BlueSmiRF Gold」のデフォルトの通信速度（ボーレート）が115200bpsであるため、9600bpsに設定し直すことにします。そのためには、「BlueSmiRF Gold」の内部設定をATコマンドによって変更します。ATコマンドを使うには、MacOSXなら「&lt;a href="http://homepage.mac.com/dalverson/zterm/"&gt;ZTerm&lt;/a&gt;」、Windowsなら「ハイパーターミナル」などのターミナルアプリケーションを使って送信すると便利です。&lt;br /&gt;「BlueSmiRF Gold」を電源に接続し、コンピュータのBluetooth接続設定をした後、「ZTerm」（MacOSX）あるいは「ハイパーターミナル」（Windows）を起動します。&lt;br /&gt;&lt;br /&gt;MacOSXの場合:&lt;br /&gt;ZTermのDial&gt;Directry...を選択すると以下の画面が現れます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SP2cbgAL_LI/AAAAAAAAAXs/ByUcHG_-Sjs/s1600-h/ztm0.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SP2cbgAL_LI/AAAAAAAAAXs/ByUcHG_-Sjs/s400/ztm0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259531936099728562" /&gt;&lt;/a&gt;&lt;br /&gt;「Dial Directory」画面上の「New」ボタンを押すと以下のような別画面が現れます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SP6H3RL3RnI/AAAAAAAAAYc/cRaJagI7GPA/s1600-h/localEcho.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SP6H3RL3RnI/AAAAAAAAAYc/cRaJagI7GPA/s400/localEcho.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259790798391035506" /&gt;&lt;/a&gt;&lt;br /&gt;「Service Name:」の欄に任意名を記入します。「Local Echo」にチェックを入れます。その他は上のような設定でも大丈夫です。「OK」ボタンを押します（「Dial Directory」画面上の中央上の「Connection」ボタンでこの画面に戻ることができます）。&lt;br /&gt;「Settings&gt;Terminal...」あるいは「Dial Directory」画面上の「Terminal」ボタンを押すと以下の画面が現れます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2dlBC-X1I/AAAAAAAAAX0/KTfhlhg0bK8/s1600-h/ztm2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2dlBC-X1I/AAAAAAAAAX0/KTfhlhg0bK8/s400/ztm2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259533199100239698" /&gt;&lt;/a&gt;&lt;br /&gt;上のような内容で設定し「OK」ボタンを押す。&lt;br /&gt;次に、「Settings&gt;Modem Preferences...」を選択すると以下の画面が現れます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2egpeoeaI/AAAAAAAAAX8/90bVYrFROCM/s1600-h/ztm3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2egpeoeaI/AAAAAAAAAX8/90bVYrFROCM/s400/ztm3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259534223565945250" /&gt;&lt;/a&gt;&lt;br /&gt;ここで、画面上段の「Serial Port:」がBluetoothのシリアルポート（「/dev/tty.FireFly-D39A-SPP-1」など）になっているか確認してください（なっていなければ選択する）。「OK」ボタンを押し、「Dial Directory」画面に戻ります。「Dial」ボタンを押して通信接続します。接続中は、「BlueSmiRF Gold」の緑色のLEDが点灯します。接続されない場合は、「BlueSmiRF Gold」の電源を入れなおすか、「Zterm」を再起動してみてください。&lt;br /&gt;&lt;br /&gt;Windowsの場合：&lt;br /&gt;ハイパーターミナルを立ち上げます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SQB_lZgf3GI/AAAAAAAAAY8/BbTeWNR5C6I/s1600-h/connection.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 386px; height: 271px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SQB_lZgf3GI/AAAAAAAAAY8/BbTeWNR5C6I/s400/connection.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5260344645247818850" /&gt;&lt;/a&gt;&lt;br /&gt;この画面上で、「名前：」に接続名（任意名）を記入し、「OK」を押します（次回接続するときは、「キャンセル」を押し、メニューバーの「ファイル&gt;開く」から保存した設定ファイルを選択してください）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SQCC4o2ez5I/AAAAAAAAAZM/11kc8WKg9QI/s1600-h/com_40.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 344px; height: 274px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SQCC4o2ez5I/AAAAAAAAAZM/11kc8WKg9QI/s400/com_40.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5260348274318954386" /&gt;&lt;/a&gt;&lt;br /&gt;「接続方法：」の欄で、先ほどの「Bluetooth設定」で割り当てられたポート「COM40」を選択し「OK」を押します。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SQCDz554x9I/AAAAAAAAAZU/44ErPQCd8_g/s1600-h/baud9600.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 399px; height: 372px;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SQCDz554x9I/AAAAAAAAAZU/44ErPQCd8_g/s400/baud9600.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5260349292508923858" /&gt;&lt;/a&gt;&lt;br /&gt;「ビット/秒：」を「9600」、「フロー制御」を「なし」、「適用」と「OK」を押します。&lt;br /&gt;この設定ウィンドウが閉じると自動的に接続が開始されますが、メニューバーの「通信&gt;切断」で通信を中断し、「ファイル&gt;プロパティ」をクリックし、以下の画面を出します。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SQCFT6dxBrI/AAAAAAAAAZc/fPCARENfImY/s1600-h/property.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 399px; height: 386px;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SQCFT6dxBrI/AAAAAAAAAZc/fPCARENfImY/s400/property.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5260350941926852274" /&gt;&lt;/a&gt;&lt;br /&gt;「ASCII設定」ボタンを押すと、さらに以下の画面が現れます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SQCF1jWHwQI/AAAAAAAAAZk/YAMREVISQig/s1600-h/asciiSetting.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 326px; height: 280px;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SQCF1jWHwQI/AAAAAAAAAZk/YAMREVISQig/s400/asciiSetting.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5260351519836324098" /&gt;&lt;/a&gt;&lt;br /&gt;上画像のようにチェックをいれます。「OK」を押して戻ります。&lt;br /&gt;メニューバー「通信&gt;電話」をクリックし、通信を開始します。&lt;br /&gt;通信が開始されれば、「BlueSmiRF Gold」の緑のLEDが点灯します。&lt;br /&gt;後は、ATコマンドを入力していきます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「ATコマンド入力／通信速度の設定変更」&lt;/span&gt;&lt;br /&gt;コンピュータ側のBluetoothと接続され、「BlueSmiRF Gold」の緑色のLEDが点灯すれば、以下のようにATコマンドを入力していきます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$$$&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ドルを三回（最後にリターンキーは押さない）を入力すると「CMD」という返事が表示され、ATコマンドモードに切り替わり、緑のLEDが点灯しつつ赤いLEDが点滅し始めます。&lt;br /&gt;注意しなければいけないことは、「BlueSmiRF Gold」にはタイマー機能（デフォルト：60秒）があり、電源を入れてから60秒以内に「$$$」を入力する必要があります。時間切れになると、赤いLEDの点滅速度が遅くなります。「CMD」が表示されなかったり、赤いLEDが高速に点滅しないときは、一旦通信を切断し、「BlueSmiRF Gold」の電源を切って再接続した後、６０秒以内に再度「$$$」を入力してみてください。あるいは、以下のように、このタイマー機能の時間を設定し直すことも可能です。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ST,100&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を入力し「リターンキー」を押せば、タイマーを100秒に設定することができます（「ST,」の後に数値を入れることで制限時間を設定できます）。ただし、「ST,」の後に「0」を入力すると「遠隔設定不可」、「255」を入力すると「時間制限なし」になります。&lt;br /&gt;&lt;br /&gt;通信速度（ボーレート）を9600に変更するには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SU,96&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を入力し「リターンキー」を押します（「SU,」の後にボーレートの最初の２桁を入力、9600の場合「96」、4800の場合「48」を入力）。「AOK」が表示されれば、変更されたことになります。変更内容を確認するには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;D&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を入力し「リターンキー」を押します。そうすると各設定が以下のように表示されます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;***Settings***&lt;br /&gt;BTA=00066600D39A&lt;br /&gt;BTName=FireFly-D39A&lt;br /&gt;Baudrt=9600&lt;br /&gt;Parity=None&lt;br /&gt;Mode  =Slav&lt;br /&gt;Authen=0&lt;br /&gt;Encryp=0&lt;br /&gt;PinCod=1234&lt;br /&gt;Bonded=0&lt;br /&gt;Rem=NONE SET&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;「Baudrt=9600」になっているので、通信速度（ボーレート）は9600に変更されています。ATコマンドモードを終了するには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;---&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;というように、ハイフンを３回入力し、「リターンキー」を押してください。そうすると「END」という返事がきます。&lt;br /&gt;その他のコマンドについては、&lt;br /&gt;&lt;a href="http://www.sparkfun.com/datasheets/RF/RN_BlueportII-ref-guide.pdf"&gt;http://www.sparkfun.com/datasheets/RF/RN_BlueportII-ref-guide.pdf&lt;/a&gt;&lt;br /&gt;に書いてあります。「BlueSmiRF Gold」の基本設定は以上です。&lt;br /&gt;尚、「&lt;a href="http://homepage.mac.com/dalverson/zterm/"&gt;ZTerm&lt;/a&gt;」やATコマンド入力については、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduinoxbee-shieldprocessingxbee.html"&gt;Arduino+Xbee Shield/Processing+XBee Explorer USB&lt;/a&gt;」においても説明があります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2jTlzgVOI/AAAAAAAAAYE/BpSnhmBuKV4/s1600-h/ztm4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SP2jTlzgVOI/AAAAAAAAAYE/BpSnhmBuKV4/s400/ztm4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259539496799589602" /&gt;&lt;/a&gt;&lt;br /&gt;（「ZTerm」のATコマンド入力画面）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「曲げセンサの接続方法」&lt;/span&gt;：&lt;br /&gt;次は、&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8B%C8%82%B0&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;曲げセンサ&lt;/a&gt;についてです。通常、&lt;a href="http://www.sengoku.co.jp/modules/sgk_cart/search.php?toku=%82%B9%82%F1%82%B3%91f%8Eq%8B%C8%82%B0&amp;cond8=or&amp;dai=&amp;chu=&amp;syo=&amp;k3=0&amp;pflg=n&amp;list=2"&gt;曲げセンサ&lt;/a&gt;はまっすぐな状態の時に抵抗値が低く、曲げると抵抗値が高くなる特性があります。反対方向に曲げてもそれ以上抵抗値は変化しないので、曲げる方向は一方向に限られてしまいます。２本の曲げセンサを背中合わせに貼り合わせて１本として使えば、まっすぐな状態からどちらの方向に曲げても抵抗値が変化するようになります。曲げセンサの通電性のある面を外側にし、両面テープなどで貼り合わせ、それぞれの端子の部分は互いにショートしないようにビニルテープや熱収縮チューブなどで絶縁しておきます。&lt;br /&gt;ひとつの曲げセンサにプルアップ抵抗（10KΩ）を取付け、もうひとつの曲げセンサにはプルダウン抵抗（10KΩ）を取付けます（プルアップ／プルダウン抵抗については「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/blog-post.html"&gt;センサについて&lt;/a&gt;」を参照）。そうすることで、一方へ曲げると読み取られる電圧は下がり、逆方向へ曲げると電圧が上がるようになります。それぞれ読み取った値をプログラム上で合成しProcessingへ送信します。Arduinoのアナログ入力&lt;a href="http://arduino.cc/en/Reference/AnalogRead"&gt;analogRead()&lt;/a&gt;で読み込むと、一方の値が約200~500に変化し、もう一方が約500~800に変化するので、合成すると約700~1300前後で値が変化することになります。まっすぐな状態のときは、約1000前後になります。&lt;br /&gt;ちなみに、「&lt;a href="http://www.imagesco.com/sensors/flex-sensor.html"&gt;Bi-directional Flexible Bend Sensor&lt;/a&gt;」という両方向性の曲げセンサがあります。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;「スタンドアロン／外部電源の接続方法」&lt;/span&gt;：&lt;br /&gt;今回はワイヤレス通信なのでコンピュータにUSB接続せずに、外部電源として&lt;a href="http://akizukidenshi.com/catalog/g/gB-00634/"&gt;乾電池006P（9V）&lt;/a&gt;を用いスタンドアロンで操作できるようにします。&lt;br /&gt;抵抗を取り付けた曲げセンサを、以下のようにArduinoのアナログ端子の０番ピンと１番ピンに接続します。&lt;br /&gt;Arduinoへプログラムをアップロードする際には、Bluetoothモジュールを外して行って下さい。同時に、Arduino基板上の「USB-EXT」のジャンパピンも「USB」側に差込んでアップロードしてください。&lt;br /&gt;アップロード後は、Arduino基板とBluetoothモジュールを以下のように接続し、「USB-EXT」のジャンパピンを「EXT」側に差し込んでください。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SPyZ6f9BT3I/AAAAAAAAAXU/ReDzs5RdR0A/s1600-h/bt.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SPyZ6f9BT3I/AAAAAAAAAXU/ReDzs5RdR0A/s400/bt.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5259247695150796658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Arduinoのプログラム」&lt;/span&gt;：&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //変数を用意し、二つの読取り値を合成して代入&lt;br /&gt;  int val=analogRead(0)+analogRead(1);&lt;br /&gt;&lt;br /&gt;  //合図用データが届いたら&lt;br /&gt;  if(Serial.available()&gt;0){&lt;br /&gt;    //合成した値を文字列（改行コード付き）で送信&lt;br /&gt;    Serial.println(val,DEC);&lt;br /&gt;&lt;br /&gt;    //バッファを空にしておく&lt;br /&gt;    Serial.read();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Arduinoからは、値を文字列として送信します。文字列にすることで、大きな値をそのままProcessingへ送信することができます（文字列でシリアル通信する方法については「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」を参照して下さい）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Processingのプログラム」&lt;/span&gt;：&lt;br /&gt;Processingの方は、読み取った値に応じて矩形が左右に動く単純なプログラムにします。Arduinoからは改行コードを含んだ文字列データが届くので&lt;a href="http://www.processing.org/reference/libraries/serial/Serial_bufferUntil_.html"&gt;bufferUntil()&lt;/a&gt;を用い、改行コードまでをひとまとまりのデータとして&lt;a href="http://www.processing.org/reference/libraries/serial/Serial_readStringUntil_.html"&gt;readStringUntil()&lt;/a&gt;で読み込み、不要な改行コードを&lt;a href="http://www.processing.org/reference/trim_.html"&gt;trim()&lt;/a&gt;で取り除き、&lt;a href="http://www.processing.org/reference/int_.html"&gt;int()&lt;/a&gt;で整数値化し、最終的に&lt;a href="http://www.processing.org/reference/map_.html"&gt;map()&lt;/a&gt;でオフセットや最小値／最大値を設定してX座標に代入します。少しゆとりをみて、合成された読み取り値の最小値を500、最大値を1500、図形のX座標値となる最小値を0、最大値を画面幅の600に設定することにします。&lt;a href="http://www.processing.org/reference/map_.html"&gt;map()&lt;/a&gt;で得られる値は&lt;a href="http://www.processing.org/reference/float.html"&gt;float&lt;/a&gt;（小数）になるので、X座標用の変数xも&lt;a href="http://www.processing.org/reference/float.html"&gt;float&lt;/a&gt;型にしておきます。&lt;br /&gt;プログラムを実行し、マウスクリックでシリアル通信を開始することにします。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//シリアル通信ライブラリを取り込む&lt;br /&gt;import processing.serial.*;&lt;br /&gt;//ポートのインスタンス&lt;br /&gt;Serial port;&lt;br /&gt;//X座標用の変数（小数）&lt;br /&gt;float x;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //横長の画面に設定&lt;br /&gt;  size(600,200);&lt;br /&gt;  //シリアルポート設定（Bluetoothのポート）&lt;br /&gt;  port=new Serial(this,"/dev/tty.FireFly-D39A-SPP-1",9600);&lt;br /&gt;&lt;br /&gt;  //「10」(ラインフィード：改行コード)が来る度に&lt;br /&gt;  //serialEvent()を呼び出す&lt;br /&gt;  port.bufferUntil(10);  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //背景&lt;br /&gt;  background(100);&lt;br /&gt;  //矩形描画&lt;br /&gt;  rect(x,100,20,20);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void serialEvent(Serial p){&lt;br /&gt;  //文字列の変数stringDataを用意し、&lt;br /&gt;  //「10」(ラインフィード：改行コード)が来るまで読み込む&lt;br /&gt;  String stringData=port.readStringUntil(10);&lt;br /&gt;&lt;br /&gt;  //文字列データが空ではないとき&lt;br /&gt;  if(stringData!=null){&lt;br /&gt;    //文字列データに含まれる改行記号を取り除き整数にする&lt;br /&gt;    int val=int(trim(stringData));&lt;br /&gt;    //値のオフセット、最小値、最大値を設定しxに代入&lt;br /&gt;    x=map(val,500,1500,0,600);&lt;br /&gt;    //合図用データ送信&lt;br /&gt;    port.write('A');&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスをクリックしたらシリアル通信開始&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //通信開始用データ送信&lt;br /&gt;  port.write('A');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5734094196338520869?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5734094196338520869/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5734094196338520869' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5734094196338520869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5734094196338520869'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/arduino-processingbluetooth.html' title='Arduino-Processing　BlueTooth通信+曲げセンサ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7uyXRm_coS4/SPw-gTFFDwI/AAAAAAAAAXM/NwW1xcy7ykQ/s72-c/00582-01-L.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-411871505587309917</id><published>2008-10-20T01:11:00.005+09:00</published><updated>2008-11-08T11:57:51.419+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　ライブラリのインストール先（v149以降）</title><content type='html'>現在Processingの最新バージョンは152になっており、いくつかの内容変更があります。特にProcessing 149以降では、ダウンロードしたライブラリをインストールする際（例えば、サウンドライブラリである「minim」など）、スケッチフォルダ内に「libraries」というフォルダを作成し、そのなかにダウンロードしたライブラリを入れるようになりました。&lt;br /&gt;例えば、「minim」の場合なら、ダウンロードした「minim」というフォルダを、MacOSの場合、/Users/username/Documents/Processing/librariesの中に入れるということになります（「username」部分は各ユーザの名前のディレクトリです）。Macintosh HD&gt;ユーザ&gt;各ユーザ名&gt;書類&gt;Processing&gt;libraries&gt;minimという感じです。&lt;br /&gt;&lt;br /&gt;追記：&lt;br /&gt;バージョン155以降では、「libraries」フォルダがない場合には自動的に作成されるようになったようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-411871505587309917?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/411871505587309917/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=411871505587309917' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/411871505587309917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/411871505587309917'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processing.html' title='Processing　ライブラリのインストール先（v149以降）'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1715843518283363781</id><published>2008-10-18T14:00:00.009+09:00</published><updated>2010-06-03T05:23:54.579+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='シリアル通信'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Arduino-Processing　シリアル通信６</title><content type='html'>これまでのシリアル通信では、ProcessingとArduinoの一対一の通信を行ってきましたが、今回はProcessingで二つのシリアルポートを使い、二つのArduinoとシリアル通信を行う実験をしてみます。それぞれのArduino基盤には&lt;a href="http://akizukidenshi.com/catalog/items2.php?q=%22P-01662%22&amp;s=score&amp;p=1&amp;r=1&amp;page=40"&gt;可変抵抗器&lt;/a&gt;をとりつけて入力値をProcessingへ別々に送信することにします。Processingの画面では、二つの入力信号を個別に読み取ってそれぞれの状態を描画することにします。&lt;br /&gt;&lt;br /&gt;具体的なサンプルとして、「&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%B3_(%E3%82%B2%E3%83%BC%E3%83%A0)"&gt;Pong&lt;/a&gt;」（下画像）のように二つのコントローラによって対戦するプログラムにします。それぞれのArduino基盤がコントローラとしてコンピュータに接続され、画面上でそれぞれのラケットを動かすことになります（得点のプログラムは含まれていません）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SPK4nkrokfI/AAAAAAAAATM/B0NypceG6aY/s1600-h/pong.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SPK4nkrokfI/AAAAAAAAATM/B0NypceG6aY/s400/pong.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256466705095889394" /&gt;&lt;/a&gt;&lt;br /&gt;（上画像：Processingの画面「Pong」）&lt;br /&gt;&lt;br /&gt;Arduino基盤と&lt;a href="http://akizukidenshi.com/catalog/items2.php?q=%22P-01662%22&amp;s=score&amp;p=1&amp;r=1&amp;page=40"&gt;可変抵抗器&lt;/a&gt;の接続は以下のようになります（二つ必要です）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SPK30nRrnII/AAAAAAAAATE/7UVKgY_chnE/s1600-h/volume.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SPK30nRrnII/AAAAAAAAATE/7UVKgY_chnE/s400/volume.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256465829619014786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Arduinoのプログラム：&lt;br /&gt;&lt;div style="background:#EEFFEE;padding:10px"&gt;&lt;pre&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //可変抵抗器の読み取り&lt;br /&gt;  int val=analogRead(0);&lt;br /&gt;  //シリアル通信処理&lt;br /&gt;  if(Serial.available()&gt;0){//合図用データが一つ来たら&lt;br /&gt;    //合図用データを読み込んでバッファを空にする&lt;br /&gt;    Serial.read();&lt;br /&gt;    //読取値を４で割り、バイトで送信&lt;br /&gt;    Serial.print(val/4,BYTE);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Arduino側のプログラムでは、可変抵抗器からの読取り値を４で割ってスケールダウンした値（0~255）をシリアル通信でProcessing側へ送信しています（同期通信させるために合図用データを用いるシリアル通信の方法については「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_27.html"&gt;Arduino-Processing　シリアル通信２&lt;/a&gt;」を参照して下さい）。二つのArduino基盤とも同じ内容になります。&lt;br /&gt;&lt;br /&gt;Processingのプログラム：&lt;br /&gt;&lt;div style="background:#EEEEDD;padding:10px"&gt;&lt;pre&gt;&lt;br /&gt;//シリアル通信ライブラリを取り込む&lt;br /&gt;import processing.serial.*;&lt;br /&gt;//二つのポートのインスタンス&lt;br /&gt;Serial portA;&lt;br /&gt;Serial portB;&lt;br /&gt;//二つの読取値の変数&lt;br /&gt;int valA=100,valB=100;&lt;br /&gt;//ボ−ル座標用変数&lt;br /&gt;int x=100,y=100;&lt;br /&gt;//ボールの動きの向きの変数（1:正の向き、-1:負の向き）&lt;br /&gt;int dirX=1,dirY=1;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //画面サイズ設定&lt;br /&gt;  size(300,256);&lt;br /&gt;  //二つのシリアルポート設定&lt;br /&gt;  portA = new Serial(this, "/dev/tty.usbserial-A50019vD", 9600);&lt;br /&gt;  portB = new Serial(this, "/dev/tty.usbserial-A40014iU", 9600);&lt;br /&gt;  //図形外形線なし&lt;br /&gt;  noStroke();&lt;br /&gt;  //塗り色（白）&lt;br /&gt;  fill(255);&lt;br /&gt;  //矩形描画位置を中央に設定&lt;br /&gt;  rectMode(CENTER);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //背景（黒）&lt;br /&gt;  background(0);&lt;br /&gt;  //左ラケット描画（valAをY座標に代入）&lt;br /&gt;  rect(20,valA,10,30);&lt;br /&gt;  //右ラケット描画（valBをY座標に代入）&lt;br /&gt;  rect(280,valB,10,30);&lt;br /&gt;  //ボール描画&lt;br /&gt;  rect(x,y,10,10);&lt;br /&gt;&lt;br /&gt;  //ボールX座標の動き&lt;br /&gt;  x+=dirX;//X軸方向に+1または-1ずつ進める&lt;br /&gt;&lt;br /&gt;  //ラケットAに当たった時のはね返り&lt;br /&gt;  if(x==30 &amp;&amp; y&gt;valA-15 &amp;&amp; y&amp;lt;valA+15){&lt;br /&gt;    dirX*=-1;//向きを反転する&lt;br /&gt;  }&lt;br /&gt;  //ラケットBに当たった時のはね返り&lt;br /&gt;  if(x==270 &amp;&amp; y&gt;valB-15 &amp;&amp; y&amp;lt;valB+15){&lt;br /&gt;    dirX*=-1;//向きを反転する&lt;br /&gt;  }&lt;br /&gt;  //画面左端からはみ出た場合&lt;br /&gt;  if(x&amp;lt;0){&lt;br /&gt;    x=270;//右側に戻る&lt;br /&gt;  }&lt;br /&gt;  //画面右端からはみ出た場合&lt;br /&gt;  if(x&gt;width){&lt;br /&gt;    x=30;//画面左側に戻る&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //ボールY座標の動き&lt;br /&gt;  y+=dirY;//Y軸方向に+1または-1ずつ進める&lt;br /&gt;&lt;br /&gt;  //画面上下位置でのはね返り&lt;br /&gt;  if(y&amp;lt;5 || y&gt;251){&lt;br /&gt;    dirY*=-1;//向きを反転する&lt;br /&gt;  }  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//キーを押した場合&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //「s」キーでシリアル通信開始&lt;br /&gt;  if(key=='s'){&lt;br /&gt;    //二つのポートへ開始用データ送信&lt;br /&gt;    portA.write(65);&lt;br /&gt;    portB.write(65);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//シリアル通信処理&lt;br /&gt;void serialEvent(Serial p){&lt;br /&gt;  //portAの場合&lt;br /&gt;  if(p==portA){&lt;br /&gt;    if(p.available()&gt;0){&lt;br /&gt;      //値を読み込みvalAに代入&lt;br /&gt;      valA=p.read();&lt;br /&gt;      //合図用データ送信&lt;br /&gt;      portA.write(65);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  //portBの場合&lt;br /&gt;  if(p==portB){&lt;br /&gt;    if(p.available()&gt;0){&lt;br /&gt;      //値を読み込みvalBに代入&lt;br /&gt;      valB=p.read();&lt;br /&gt;      //合図用データ送信&lt;br /&gt;      portB.write(65);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Processing側のプログラムでは、二つのシリアルポートを用意し、それぞれportA、portB（名前は任意）にしておきます。serialEvent(Serial p){...}の括弧内のpは、ポート名に対応しています（今回の場合は、pはportAまたはportBに対応します）。&lt;a href="http://processing.org/reference/libraries/serial/serialEvent_.html"&gt;serialEvent()&lt;/a&gt;は、Processingがデータを受信した際に作動するので、&lt;a href="http://processing.org/reference/if.html"&gt;if()&lt;/a&gt;文を使ってどちらのポートなのかを条件分けして判別し、ポートに応じてそれぞれの読込み値を変数に代入します。同期通信させるために、Arduinoから送信されたデータをp.&lt;a href="http://processing.org/reference/libraries/serial/Serial_available_.html"&gt;available()&lt;/a&gt;で確認しデータを読み込んだ後に、合図用データ（0~255の数値あるいは'A'や'a'などの一つの文字／１バイト分のデータ）を送信しています。&lt;br /&gt;Processingのプログラムを開始したら、「s」キーを押すことでシリアル通信を開始することにしました（プログラム開始から数秒経った後に「s」キーを押さないと、シリアル通信が開始されないことがあります）。&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing.html"&gt;Arduino-Processing　シリアル通信１&lt;/a&gt;」（一つの値を送る／非同期通信）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_27.html"&gt;Arduino-Processing　シリアル通信２&lt;/a&gt;」（複数の値をバイトで送る／同期通信）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/05/arduino-processing_28.html"&gt;Arduino-Processing　シリアル通信３&lt;/a&gt;」（大きな値を複数送る）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/processing-arduino.html"&gt;Processing-Arduino　シリアル通信４&lt;/a&gt;」（ProcessingからArduinoを制御する）&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino-processing.html"&gt;Arduino-Processing　シリアル通信５&lt;/a&gt;」（複数の値を文字列で送信する）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1715843518283363781?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1715843518283363781/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1715843518283363781' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1715843518283363781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1715843518283363781'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/arduino-processing.html' title='Arduino-Processing　シリアル通信６'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7uyXRm_coS4/SPK4nkrokfI/AAAAAAAAATM/B0NypceG6aY/s72-c/pong.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3449433037933907743</id><published>2008-10-17T03:23:00.018+09:00</published><updated>2010-06-20T14:20:19.731+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ワイヤレス通信'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='Xbee'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Arduino+Xbee Shield/Processing+XBee Explorer USB</title><content type='html'>Arduinoにはワイヤレス通信するためのXbee Shieldがあります。今回はArduinoの&lt;a href="http://arduino.cc/en/Guide/ArduinoXbeeShield"&gt;Xbee Shieldのサイト&lt;/a&gt;を参考に簡単な通信実験から始めたいと思います。Xbee Shiledを装着したArduino基板が２組必要になります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SPcEykf2iVI/AAAAAAAAAT0/ELnISjhmdkE/s1600-h/xbeeShield.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SPcEykf2iVI/AAAAAAAAAT0/ELnISjhmdkE/s400/xbeeShield.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5257676356815587666" /&gt;&lt;/a&gt;&lt;br /&gt;（Xbee Shiledを装着したArduino基板）&lt;br /&gt;&lt;br /&gt;注意しなければいけないことは、Arduino基板にXbee Shiledを装着したままプログラムをアップロードする際、Xbee Shiled上にある二つのジャンパピン（二つの間には「XBEE/USB」と表示されています）を「USB」側に差し替えなければいけないことです（３本のピンのうち、USB側のピンと中央のピンの２本のピンに差し込まれている状態になります）。&lt;br /&gt;尚、アップロード後は「XBEE」側のピンと中央のピンの２本のピンに差し込まれている状態に戻してください。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「二つのArduino間での通信」&lt;/span&gt;：&lt;br /&gt;以下では、&lt;a href="http://arduino.cc/en/Guide/ArduinoXbeeShield"&gt;Xbee Shieldのサイト&lt;/a&gt;に従って、LEDの点滅実験を行います。一方のXbee Shiledを装着したArduino基板から、一秒おきに'H'か'L'の文字を送信し、受信したもう一方のXbee Shiledを装着したArduino基板の13番ピンに接続されたLEDが点滅する内容です。基本的には、通常のシリアル通信のプログラムと同じような内容になります。&lt;br /&gt;&lt;br /&gt;送信側Arduinoのプログラム：&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  Serial.print('H');//「H」を送信（点灯）&lt;br /&gt;  delay(1000);      //１秒待つ&lt;br /&gt;  Serial.print('L');//「L」を送信（消灯）&lt;br /&gt;  delay(1000);      //１秒待つ&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;送信側は一方的に'H'と'L'を１秒間隔で送信するだけです。受信側は、送信側からのデータが届いたら読み込みをし、データが「H」であれば13番ピンをHIGHで出力し、そうでなければLOWで出力するプログラムになります。&lt;br /&gt;&lt;br /&gt;受信側Arduinoのプログラム：&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;int val;//受信データ用の変数を用意&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;  //13ピンをデジタル出力に設定&lt;br /&gt;  pinMode(13,OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  if(Serial.available()&gt;0){ //データが来たら&lt;br /&gt;    val=Serial.read();    //データを読み込み、valへ代入&lt;br /&gt;  }&lt;br /&gt;  if(val=='H'){           //valが「H」の場合&lt;br /&gt;    digitalWrite(13,HIGH);//点灯&lt;br /&gt;  }else{                  //valが「L」の場合&lt;br /&gt;    digitalWrite(13,LOW); //消灯&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;乾電池などの外部電源でArduinoを作動させれば、それぞれスタンドアロンで通信し合います。Decimilaなどの旧型のArduino基板の場合、外部電源を使うにはArduino基板についている「USB/EXT」のジャンパピンを「EXT」側に差し替える必要があります（プログラムをアップロードする際には、パソコンとUSB接続し、ジャンパピンも「USB」側に差し替えて下さい）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「コンピュータに接続したXbeeと通信」&lt;/span&gt;:&lt;br /&gt;コンピュータにXbeeを接続し、Arduinoとワイヤレス通信するには以下のようになります。&lt;br /&gt;&lt;a href="http://www.sparkfun.com"&gt;Sparkfun&lt;/a&gt;で販売されている「&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8687"&gt;XBee Explorer USB&lt;/a&gt;」を使うと簡単にコンピュータとUSB接続でき、Processingからワイヤレスにシリアル通信が可能になります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SPcIYy_myWI/AAAAAAAAAT8/XR0ic8mUjw0/s1600-h/xbeeexp.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SPcIYy_myWI/AAAAAAAAAT8/XR0ic8mUjw0/s400/xbeeexp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5257680312076781922" /&gt;&lt;/a&gt;&lt;br /&gt;（左：「XBee Explorer USB」、右：Xbeeを装着した状態）&lt;br /&gt;&lt;br /&gt;以下では、先ほどの受信用のXbee Shieldを装着したArduino基板に対して、Xbeeモジュールを装着した「XBee Explorer USB」を通して、Processingからワイヤレスでシリアル通信してみます。&lt;br /&gt;まず、「XBee Explorer USB」のシリアルポートを調べてみます。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.serial.*;&lt;br /&gt;println(Serial.list());&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;「XBee Explorer USB」をコンピュータに接続し、上記の二行のプログラムをランさせれば、「XBee Explorer USB」のシリアルポートが出力されるはずです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Processingのプログラム」&lt;/span&gt;：&lt;br /&gt;受信側となるArduinoのプログラムは先ほどと同じものを使い、送信側となるProcessingだけのプログラムを以下に書きます。マウスボタンを押したら点灯、放したら消灯する内容とします。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//シリアル通信ライブラリを取り入れる&lt;br /&gt;import processing.serial.*;&lt;br /&gt;//ポートのインスタンス&lt;br /&gt;Serial port;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //「XBee Explorer USB」のシリアルポート設定&lt;br /&gt;  port=new Serial(this,"/dev/tty.usbserial-A8003VXd",9600);&lt;br /&gt;}&lt;br /&gt;void draw(){&lt;br /&gt;  //特になし  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){//マウスボタンを押したら&lt;br /&gt;  port.write('H');  //「H」を送信（点灯）&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mouseReleased(){//マウスボタンを放したら&lt;br /&gt;  port.write('L');   //「L」を送信（消灯）&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;プログラムの内容はこれまでのシリアル通信と同じなので、ポートの設定、接続やジャンパピンの差し替えなどを間違わなければ特に問題はないと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Xbeeモジュールの設定／ATコマンド」&lt;/span&gt;：&lt;br /&gt;XbeeにATコマンドを送ることで、Xbeeモジュール自体の設定を確認したり変更することができます。ATコマンドをXbeeモジュールに送信するには、MacOSXなら「&lt;a href="http://homepage.mac.com/dalverson/zterm/"&gt;ZTerm&lt;/a&gt;」など、Windowsなら「ハイパーターミナル」や「&lt;a href="http://hp.vector.co.jp/authors/VA002416/"&gt;Tera Term&lt;/a&gt;」などのターミナルアプリケーションで入力すると便利です（「ZTerm」と「ハイパーターミナル」の設定や使い方については、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/arduino-processingbluetooth.html"&gt;Arduino-Processing　BlueTooth通信+曲げセンサ&lt;/a&gt;」にも、説明があります）。&lt;br /&gt;&lt;br /&gt;コンフィグレーションモードに入るには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;+++&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;プラスを３回入力し待機します（リターンキーは押さない）。そうすれば、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;OK&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という返事が返ってきます（ATコマンドモードでは、「+++」を押したあと１秒後に「OK」が返答され、さらに１０秒以内に次のコマンドを送信しなければコマンドモードが自動的に終了してしまうので、返答がない場合は再度「+++」を押す必要があります）。さらに続けて、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATID（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と押せば、デフォルトの状態であれば、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;3332&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という数値が返ってきます。「3332」という数値は、そのモジュールのネットワークIDであり、このネットワークIDを変更すれば同じネットワークIDを共有しているXbeeモジュール間だけでの通信が可能になります（ひとつのモジュールだけでなく、相手になるモジュールも変える必要があります）。&lt;br /&gt;設定されている通信速度を確認するには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATBD（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と押せば、デフォルトであれば、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という数値が返ってきます。通信速度はそれぞれ&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0:1200 bps&lt;br /&gt;1:2400 bps&lt;br /&gt;2:4800 bps&lt;br /&gt;3:9600 bps&lt;br /&gt;4:19200 bps&lt;br /&gt;5:38400 bps&lt;br /&gt;6:57600 bps&lt;br /&gt;7:115200 bps&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;なので、デフォルトの「3」は9600 bpsということになります。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATBD4（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と打てば（「ATBD」の後に「4」を付け加える）、通信速度は「4」（19200）に変更されます（「OK」という返答がきます）。再度、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATBD（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と打てば、変更した内容を確認できます（この場合「4」という数値が返ってきます）。ただし、この場合電源が切れると設定内容は消えてしまいます。電源を切っても設定内容が戻らないようにするには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATWR（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を変更後すぐに送信します（「OK」という返答がきます）。あるいは、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATBD4,WR（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という感じで、コマンドを複数合成して送信することもできます（「OK OK」という二つ分の返答がきます）。デフォルトの状態に戻すには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATRE（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になるのですが、「WR」を付け加えていないので再度電源を入れたときには前回の状態に戻ってしまいます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATRE,WR（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすれば、電源を入れ直してもデフォルト状態は保持されます。&lt;br /&gt;尚、コマンドモードから出るには、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATCN（リターンキーを押して送信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。&lt;br /&gt;デフォルトでは、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ID:3332（ネットワークID）&lt;br /&gt;CH:0x0C（チャンネル）&lt;br /&gt;MY:0（そのモジュールのアドレス）&lt;br /&gt;SH: （シリアルナンバー上位32ビット／モジュールごとに異なる）&lt;br /&gt;SL: （シリアルナンバー下位32ビット／モジュールごとに異なる）&lt;br /&gt;DH:0（送信先アドレス上位32ビット）&lt;br /&gt;DL:0（送信先アドレス下位32ビット）&lt;br /&gt;BD:3（通信速度：9600　bps）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;に設定されており、ネットワーク、チャンネル、モジュールのアドレス、送信先アドレスがそれぞれ同じであるため、どのモジュール間でも通信可能です。逆に、ネットワークIDを変更してしまえば、他のモジュール群から干渉を受けずに通信し合うことも可能になります。あるいは、二つのモジュール間で送信先を互いに設定してしまえば、そのアドレスのモジュールだけとの通信が可能になります。そのためには、IDとCHは共有しておき、それぞれのモジュールアドレスを個別に設定しておきます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATMY1111,WR（リターンキーを押して送信）&lt;br /&gt;OK OK（Xbeeからの返信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすれば、このモジュールの「MY」は「1111」に設定されたことになります（「WR」を付け加えたので、電源を落としても変更内容は記憶されます）。さらに送信先のアドレスを「2222」に設定するには、「DL」を「2222」に「DH」を「0」にします。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATDL2222,DH0,WR（リターンキーを押して送信）&lt;br /&gt;OK OK OK（Xbeeからの返信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;もう一方のほうも設定する必要があるので、「MY」を「2222」、「DL」を「1111」、「DH」を「0」にします。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ATMY2222,DL1111,DH0,WR（リターンキーを押して送信）&lt;br /&gt;OK OK OK OK（Xbeeからの返信）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とします。こうすることで、「1111」のモジュールと「2222」のモジュールが互いに送信先を特定して通信し合うことができます。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arduino.cc/en/Main/ArduinoXbeeShield"&gt;Arduino Xbee Shieldサイト&lt;/a&gt;の説明によれば、「DH」を「0」、「DL」を「FFFF」に設定すれば、そのモジュールからの通信は、その他のすべてのモジュールによって受信可能になります。&lt;br /&gt;また、送信先アドレス（上位ビットDHと下位ビットDL）が「FFFF」より大きい値（つまり「DH」が「0」以外の数値に設定したとき）、その「DH」と「DL」が相手モジュールの「SH」と「SL」に等しければ、相手モジュールのみに受信させることが可能になります。ただし、この場合も、ネットワークIDとチャンネルは同じでなければなりません。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;「Ztermの設定」&lt;/span&gt;：&lt;br /&gt;以下は、MacOSXで「&lt;a href="http://homepage.mac.com/dalverson/zterm/"&gt;ZTerm&lt;/a&gt;」を使ったときの画面です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SPimxBL20_I/AAAAAAAAAWs/tHUY7KIG7a8/s1600-h/ATscreen.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SPimxBL20_I/AAAAAAAAAWs/tHUY7KIG7a8/s400/ATscreen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5258135926017020914" /&gt;&lt;/a&gt;&lt;br /&gt;ATコマンドを打つ画面。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SPiojrye_jI/AAAAAAAAAW8/gKYFnkRv8mE/s1600-h/dialDirectory.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SPiojrye_jI/AAAAAAAAAW8/gKYFnkRv8mE/s400/dialDirectory.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5258137895958412850" /&gt;&lt;/a&gt;&lt;br /&gt;メニューバー&gt;Dial&gt;Directory...をクリックすれば、上画面が現れます。「New」を押せば、新たな接続先を追加する画面（下画像）がでてきます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SPinEKjf9bI/AAAAAAAAAW0/_K8TLekgovk/s1600-h/connection.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SPinEKjf9bI/AAAAAAAAAW0/_K8TLekgovk/s400/connection.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5258136254949619122" /&gt;&lt;/a&gt;&lt;br /&gt;「Service Name:」の欄に適当な名前を入れます。「Local Echo」にはチェックをいれておきます。チェックを外すと、自分の打った文字は画面に現れないので、チェックを入れておいた方がいいでしょう。Xbeeがデフォルト状態であれば、その他の項目は上画面のようになります。メニューバー&gt;Setting&gt;Connection...をクリックすることで、再度この画面が現れます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SPipdnKHGBI/AAAAAAAAAXE/l-ylQqONVFM/s1600-h/terminal.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SPipdnKHGBI/AAAAAAAAAXE/l-ylQqONVFM/s400/terminal.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5258138891147745298" /&gt;&lt;/a&gt;&lt;br /&gt;メニューバー&gt;Setting&gt;Terminal...をクリックすれば、上画面が現れます。ここでは「Auto Line Feed」にチェックをいれておきます。チェックを外すと、ATコマンドが改行されなくなるので、チェックをいれておいたほうがいいでしょう。恐らく、MacOSXの改行コードは、「CR（キャリッジリターン：行頭に戻る）」だけなので、「LF（ラインフィード：次の行に移る）」も付け加えないと改行されなくなるからでしょう。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4897976464/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41M95MKDZKL._SL160_.jpg" alt="Zigbee開発ハンドブック (実践入門ネットワーク)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4897976464/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Zigbee開発ハンドブック (実践入門ネットワーク)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4897976464/kousakukousak-22/ref=nosim/" title="Zigbee開発ハンドブック (実践入門ネットワーク)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.04.01&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;鄭 立 &lt;br /&gt;リックテレコム &lt;br /&gt;売り上げランキング: 9866&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4897976464/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0750683937/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51AQOeSDXSL._SL160_.jpg" alt="DESIGNING ZIGBEE NETWORKS AND TRANSCEIVERS: The Complete Guide for Rf/Wireless Engineers" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0750683937/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;DESIGNING ZIGBEE NETWORKS AND TRANSCEIVERS: The Complete Guide for Rf/Wireless Engineers&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/0750683937/kousakukousak-22/ref=nosim/" title="DESIGNING ZIGBEE NETWORKS AND TRANSCEIVERS: The Complete Guide for Rf/Wireless Engineers" target="_blank"&gt;amazlet&lt;/a&gt; at 09.04.01&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Shanin Farahani &lt;br /&gt;Newnes &lt;br /&gt;売り上げランキング: 21994&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0750683937/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3449433037933907743?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3449433037933907743/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3449433037933907743' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3449433037933907743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3449433037933907743'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/arduinoxbee-shieldprocessingxbee.html' title='Arduino+Xbee Shield/Processing+XBee Explorer USB'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SPcEykf2iVI/AAAAAAAAAT0/ELnISjhmdkE/s72-c/xbeeShield.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1012375800922493543</id><published>2008-10-14T01:56:00.005+09:00</published><updated>2009-03-31T23:59:58.541+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>次回授業（10/18）：FURNI02</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SPN-uEqkvOI/AAAAAAAAATc/7N1Zu5eFejw/s1600-h/cushicle3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SPN-uEqkvOI/AAAAAAAAATc/7N1Zu5eFejw/s400/cushicle3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5256684520062893282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;次回（10/18）の授業では、「身体と装置」に関するスライドショーを行います。その後、引き続き連続する姿勢／行為をもとに応用的な実験をします。&lt;br /&gt;・パソコン、Arduino、入出力装置等を各自持参して来て下さい。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486412245/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51GMS2WBH2L._SL160_.jpg" alt="Antique Furniture and Decorative Accessories: A Pictorial Archive With 3500 Illustrations (Dover Pictorial Archive Series)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486412245/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Antique Furniture and Decorative Accessories: A Pictorial Archive With 3500 Illustrations (Dover Pictorial Archive Series)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/0486412245/kousakukousak-22/ref=nosim/" title="Antique Furniture and Decorative Accessories: A Pictorial Archive With 3500 Illustrations (Dover Pictorial Archive Series)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.31&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Thomas Arthur Strange &lt;br /&gt;Dover Pubns &lt;br /&gt;売り上げランキング: 42510&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486412245/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1012375800922493543?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1012375800922493543/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1012375800922493543' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1012375800922493543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1012375800922493543'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/1018furni02.html' title='次回授業（10/18）：FURNI02'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SPN-uEqkvOI/AAAAAAAAATc/7N1Zu5eFejw/s72-c/cushicle3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-184452098936857947</id><published>2008-10-12T17:20:00.008+09:00</published><updated>2008-10-17T03:27:16.441+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ファイルチューザー'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　FileChooser２</title><content type='html'>以前「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser.html"&gt;Processing　FileChooser/ファイル選択画面の表示&lt;/a&gt;」でJava Swingを用いましたが、Processing 146以降から&lt;a href="http://processing.org/reference/selectInput_.html"&gt;selectInput()&lt;/a&gt;によって、ファイル選択画面を通して任意の場所にあるファイルを読み込むことが簡単にできるようになりました。&lt;br /&gt;以下は、「f」キーを押すと&lt;a href="http://processing.org/reference/selectInput_.html"&gt;selectInput()&lt;/a&gt;で、ファイル選択画面を表示し、コンピュータの任意の場所にある画像を表示するサンプルです。表示された画像は、ドラッグすることで位置を変えられるようにしてあります。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//画像用インスタンス用意&lt;br /&gt;PImage img;&lt;br /&gt;&lt;br /&gt;//現在選択中のファイルパスの変数&lt;br /&gt;String currentPath=null;&lt;br /&gt;//画像配置座標の変数&lt;br /&gt;int x,y;&lt;br /&gt;//画像配置座標とクリック座標の差分の変数&lt;br /&gt;int dx,dy;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //画面サイズ設定&lt;br /&gt;  size(600,400);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //背景描画（黒）&lt;br /&gt;  background(0);&lt;br /&gt;  //現在選択中のファイルパスが空ではないとき&lt;br /&gt;  if(currentPath!=null){&lt;br /&gt;    //画像描画&lt;br /&gt;    image(img,x,y);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//クリックしたら&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //画像配置座標とクリック座標の差分を求めておく&lt;br /&gt;  dx=x-mouseX;&lt;br /&gt;  dy=y-mouseY;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ドラッグ中&lt;br /&gt;void mouseDragged(){&lt;br /&gt;  //マウス座標に差分座標を加えた値を画像配置座標とする&lt;br /&gt;  x=mouseX+dx;&lt;br /&gt;  y=mouseY+dy;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//キーを押した場合&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //「f」キーなら&lt;br /&gt;  if(key=='f'){&lt;br /&gt;    //ファイル選択画面を表示し選択したファイルパス取得&lt;br /&gt;    String loadPath = selectInput();&lt;br /&gt;    //ファイルパスが空の場合&lt;br /&gt;    if (loadPath == null) {&lt;br /&gt;      //「ファイルが選ばれてない」メッセージを出力&lt;br /&gt;      println("No file was selected...");&lt;br /&gt;      //ファイルパスを前回のファイルパスにする&lt;br /&gt;      loadPath=currentPath;&lt;br /&gt;    } &lt;br /&gt;    else {//ファイルパスが選択された場合&lt;br /&gt;      //ファイルパスのドット以降の文字列を取得（拡張子名を取得）&lt;br /&gt;      String ext = loadPath.substring(loadPath.indexOf('.') + 1);&lt;br /&gt;      //拡張子が「jpg」または「png」なら&lt;br /&gt;      if(ext.equals("jpg") || ext.equals("png")){&lt;br /&gt;        //選択ファイルパスの画像を取り込み&lt;br /&gt;        img = loadImage(loadPath);&lt;br /&gt;        //現在選択中のファイルパスを更新&lt;br /&gt;        currentPath=loadPath;&lt;br /&gt;        //現在選択中のファイルパスを出力&lt;br /&gt;        println(currentPath);&lt;br /&gt;      }else{//拡張子が「jpg」または「png」ではないとき&lt;br /&gt;        //「画像ファイルではない」と出力&lt;br /&gt;        println("Not image file.");&lt;br /&gt;      }      &lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ファイル選択画面上で選択したファイルのパスを取得したら、&lt;a href="http://processing.org/reference/String_substring_.html"&gt;substring()&lt;/a&gt;によってパスの文字列末尾に含まれる拡張子を調べます。その際、&lt;a href="http://processing.org/reference/String_indexOf_.html"&gt;indexOf()&lt;/a&gt;を使うことで、パスの文字列に含まれる「.」を手掛かりに、パスの文字列末尾の拡張子を抜き出します（&lt;a href="http://processing.org/reference/String_indexOf_.html"&gt;indexOf()&lt;/a&gt;は、括弧内に入れた文字が文字列中の何番目にあるかを教えてくれます）。&lt;br /&gt;今回は、拡張子が「jpg」か「png」であれば、&lt;a href="http://processing.org/reference/loadImage_.html"&gt;loadImage()&lt;/a&gt;で画像を取り込み、次回のためにファイルパスを記憶させておきます。それ以外の拡張子の場合は、"Not image file."だけを出力します。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://processing.org/reference/selectInput_.html"&gt;selectInput()&lt;/a&gt;以外に、フォルダを選択するための&lt;a href="http://processing.org/reference/selectFolder_.html"&gt;selectFolder()&lt;/a&gt;や、保存先を指定する&lt;a href="http://processing.org/reference/selectOutput_.html"&gt;selectOutput()&lt;/a&gt;も加えられています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-184452098936857947?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/184452098936857947/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=184452098936857947' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/184452098936857947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/184452098936857947'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser_12.html' title='Processing　FileChooser２'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5333098098878814914</id><published>2008-10-11T16:04:00.010+09:00</published><updated>2010-02-20T17:08:53.931+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Webカメラ'/><title type='text'>Processing　Webカメラ／定点記録画像</title><content type='html'>身体の動作などを連続写真として記録するために、Webカメラを用いインデックス番号をつけて画像保存する方法です。設定したフレームレートで撮影画像を順番に保存していきます。以下は、フレームレート２の速度（0.5秒/フレーム）で処理するサンプルです。sキーで連続写真の画像を0.5秒おきに保存し、eキーで保存を終了、cキーでカメラセッティング画面に切り替わります。&lt;br /&gt;&lt;a href="http://processing.org/reference/libraries/video/index.html"&gt;videoライブラリ&lt;/a&gt;の基本的な使い方は「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video（Webカメラ）&lt;/a&gt;」を参照して下さい。&lt;br /&gt;&lt;br /&gt;*Windowsの場合、そのままの設定ではこのVideoライブラリを使用することができません。&lt;a href="http://www.shiffman.net/vdig/WinVDIG_101.exe"&gt;WinVDIG 1.0.1&lt;/a&gt;をインストールする必要があります。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリの取り込み&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture myCapture;&lt;br /&gt;&lt;br /&gt;//記録開始用のフラグ&lt;br /&gt;boolean start=false;&lt;br /&gt;//記録画像インデックス用変数&lt;br /&gt;int num=0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //画面サイズ設定&lt;br /&gt;  size(320, 240);&lt;br /&gt;  //キャプチャする映像の設定（2フレーム／秒）&lt;br /&gt;  myCapture = new Capture(this, width, height, 2);&lt;br /&gt;  //ループのフレームレート（2フレーム／秒）&lt;br /&gt;  frameRate(2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //映像を画面に配置&lt;br /&gt;  image(myCapture, 0, 0);&lt;br /&gt;  if(start){&lt;br /&gt;    //記録中の目印表示&lt;br /&gt;    rect(0,0,10,10);&lt;br /&gt;    //記録画像インデックス名（jpgで保存）&lt;br /&gt;    String s="image_"+num+".jpg";&lt;br /&gt;    //画像を保存&lt;br /&gt;    save(s);&lt;br /&gt;    //インデックス番号を更新&lt;br /&gt;    num++;   &lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//映像の読み込み&lt;br /&gt;void captureEvent(Capture myCapture) {&lt;br /&gt;  myCapture.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //sキーで画像記録開始&lt;br /&gt;  if(key=='s'){&lt;br /&gt;    start=true;&lt;br /&gt;  }&lt;br /&gt;  //eキーで記録終了&lt;br /&gt;  if(key=='e'){&lt;br /&gt;    start=false;&lt;br /&gt;  }&lt;br /&gt;  //cキーでカメラセッティング&lt;br /&gt;  if(key=='c'){&lt;br /&gt;    myCapture.settings();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;連続写真の画像は、撮影された数だけスケッチフォルダのなかに保存されます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SPCF6qZJGHI/AAAAAAAAASA/9w3af_BDTR4/s1600-h/saveImg.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SPCF6qZJGHI/AAAAAAAAASA/9w3af_BDTR4/s400/saveImg.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5255848008000018546" /&gt;&lt;/a&gt;&lt;br /&gt;（スケッチフォルダの中にインデックス番号を含んだ保存名で保存される／MacOSXの場合）&lt;br /&gt;&lt;br /&gt;上図の場合、「image_0.jpg」から「image_10.jpg」までの合計１１枚の画像が保存されています。フレームレートは２なので、約５.５秒間撮影（連続保存）したことになります。&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」--Webカメラの使い方／映像にフィルタをかけて表示。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラ映像をマトリクスLEDに映す。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html"&gt;Processing　Webカメラを光センサとして使う&lt;/a&gt;」--点光源で画面内に線を描く。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html"&gt;Processing　Webカメラ/カラートラッキング&lt;/a&gt;」--Webカメラを使い、色を手がかりに物体を追いかける。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/import-processing.html"&gt;Processing　Webカメラ/モーショントラッキング&lt;/a&gt;」--Webカメラを使って動体検知する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-5333098098878814914?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/5333098098878814914/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=5333098098878814914' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5333098098878814914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/5333098098878814914'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processingweb.html' title='Processing　Webカメラ／定点記録画像'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SPCF6qZJGHI/AAAAAAAAASA/9w3af_BDTR4/s72-c/saveImg.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8719336544287477671</id><published>2008-10-11T14:11:00.005+09:00</published><updated>2010-02-17T16:31:20.079+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='タッチセンサ'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><title type='text'>Arduino　タッチセンサ</title><content type='html'>今回は、ArduinoのPlaygroundサイト内の&lt;a href="http://www.arduino.cc/playground/Main/CapSense"&gt;Capacitive Sensing&lt;/a&gt;（静電容量式）を参考に、タッチセンサをつくりたいと思います。基本的には、Arduino基盤に抵抗（1MΩ）を接続するだけです（その他ミノムシクリップや金属板などがあるといいかもしれません）。この方法によって、主に抵抗だけでセンサを容易につくることができます。指先などが入力用端子に近づくと静電容量が変化し、その変化量を読み取ることで判断する仕組みになります。&lt;br /&gt;接続方法は以下の通りです。８番、９番ピンに抵抗を接続し、９番ピン側に入力用のタッチセンサとなる金属片を接続しておきます。金属片に指などで触れると感知するセンサとなります。紙などのシートで金属片を覆った上から触れても感知します。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SO9p9D4OBKI/AAAAAAAAAR4/69izurk7uHc/s1600-h/capsense.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SO9p9D4OBKI/AAAAAAAAAR4/69izurk7uHc/s400/capsense.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5255535787898700962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;まず以下のプログラムで実験してみることにします。指で金属板に触れると、9番ピンの読み取り値がLOWからHIGHへ変化していきます。HIGHになるまでの時間をカウントアップしていき、その変化量をシリアル通信でモニタリングしてみます。&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //モニタリングのためシリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;  //8番ピンをデジタル出力&lt;br /&gt;  pinMode(8,OUTPUT);&lt;br /&gt;  //9番ピンをデジタル入力&lt;br /&gt;  pinMode(9,INPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //静電容量変化量の変数を用意&lt;br /&gt;  int a=0;&lt;br /&gt;  //8番ピンをHIGHで出力&lt;br /&gt;  digitalWrite(8, HIGH);&lt;br /&gt;  //指が触れたとき9番ピンがHIGHになるまでをカウント&lt;br /&gt;  while (digitalRead(9)!=HIGH){&lt;br /&gt;    //カウントする&lt;br /&gt;    a++;&lt;br /&gt;  }&lt;br /&gt;  delay(1);&lt;br /&gt;  //8番ピンをLOWにする&lt;br /&gt;  digitalWrite(8, LOW);&lt;br /&gt;  //モニタリング：値を出力&lt;br /&gt;  Serial.println(a);  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;モニタリング結果として、指で触れてない時は、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;3&lt;br /&gt;3&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;3&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;3&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という感じで2〜4程度の値が確認されました。&lt;br /&gt;指で触れている間は、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0&lt;br /&gt;32&lt;br /&gt;78&lt;br /&gt;24&lt;br /&gt;0&lt;br /&gt;0&lt;br /&gt;15&lt;br /&gt;32&lt;br /&gt;33&lt;br /&gt;9&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という感じで、5以上の値かつ、たまに0を出力していました。&lt;br /&gt;値に多少ばらつきがあるので、プログラムに出力値を滑らかにするフィルタをつけくわえることにします。更に、指先を感知するごとに、13番ピンに接続されたLEDが点灯するプログラムも追加することにします。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;int f=0;//フィルタ用変数&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //モニタリングのためシリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;  //8番ピンをデジタル出力&lt;br /&gt;  pinMode(8,OUTPUT);&lt;br /&gt;  //9番ピンをデジタル出力&lt;br /&gt;  pinMode(9,INPUT);&lt;br /&gt;  //LED点灯用に13番ピンをデジタル出力&lt;br /&gt;  pinMode(13,OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //静電容量変化量の変数を用意&lt;br /&gt;  int a=0;&lt;br /&gt;  //8番ピンをHIGHで出力&lt;br /&gt;  digitalWrite(8, HIGH);&lt;br /&gt;  //指が触れたとき9番ピンがHIGHになるまでをカウント&lt;br /&gt;  while (digitalRead(9)!=HIGH){&lt;br /&gt;    //カウントする&lt;br /&gt;    a++;&lt;br /&gt;  }&lt;br /&gt;  delay(1);&lt;br /&gt;  //8番ピンをLOWにする&lt;br /&gt;  digitalWrite(8, LOW);&lt;br /&gt;&lt;br /&gt;  //値を滑らかにするフィルタ式&lt;br /&gt;  f+=(a-f)/2;&lt;br /&gt;  //モニタリング：フィルタ値を出力&lt;br /&gt;  Serial.println(f);&lt;br /&gt;  &lt;br /&gt;  //LED点灯のプログラム&lt;br /&gt;  if(f&gt;5){//値が5より大きい場合点灯&lt;br /&gt;    digitalWrite(13,HIGH);&lt;br /&gt;  }else{ //それ以外消灯&lt;br /&gt;    digitalWrite(13,LOW);&lt;br /&gt;  }  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;フィルタ式を付け加えると、指を触れていないときの値は3程度であり、触れている時は&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;749&lt;br /&gt;375&lt;br /&gt;188&lt;br /&gt;802&lt;br /&gt;401&lt;br /&gt;201&lt;br /&gt;751&lt;br /&gt;376&lt;br /&gt;188&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;のように、ある程度大きな値が並んで出力されました。よって、LEDのオンとオフのしきい値を5にしておき、5より大きい値であればLEDを点灯させるプログラムにしてみました。1MΩの抵抗のかわりに10MΩの抵抗（より抵抗値が高い）を用いれば感度が高くなり、金属片と指先の距離が離れていても（数センチ）、充分反応するとサイトでは説明しています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8719336544287477671?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8719336544287477671/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8719336544287477671' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8719336544287477671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8719336544287477671'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/arduino.html' title='Arduino　タッチセンサ'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/SO9p9D4OBKI/AAAAAAAAAR4/69izurk7uHc/s72-c/capsense.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1790439307046182676</id><published>2008-10-06T18:59:00.005+09:00</published><updated>2009-03-31T23:56:32.219+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>次回授業（10/11）：FURNI01</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SOnh9zQIx1I/AAAAAAAAAQ0/RF0tXqoWZZI/s1600-h/figure.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SOnh9zQIx1I/AAAAAAAAAQ0/RF0tXqoWZZI/s400/figure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5253978892150556498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;次回から、「姿勢」、「行為」、「行動」と関わる実験をしていきたいと思います。通常、ある目的やアイデアを最初に設定し、その目的を実現するために、表現方法や技術的解決を行います。プログラミングや電子工作の様々な実験を繰り返していると、「何のための技術であるのか？」という疑問は残るはずです。しかしながら、このゼミでは敢えて最初に目的を設定せず（目的の保留）、方法や技術あるいは表現の冗長な組合わせの実験を行い、その冗長な手続きをヒントに連鎖する「姿勢」の組合わせを導き出します。そして、複数の「姿勢」の組合わせによって、新たな「行為」の発見を試みたいと思います。&lt;br /&gt;&lt;br /&gt;パソコン、Webカメラ、Arduino、センサ類、出力部品類を持参してください（学校にあるセンサや出力部品の利用も可）。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486202046/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51hKiHUXWeL._SL160_.jpg" alt="The Human Figure in Motion" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486202046/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;The Human Figure in Motion&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/0486202046/kousakukousak-22/ref=nosim/" title="The Human Figure in Motion" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.31&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;Eadweard Muybridge &lt;br /&gt;Dover Pubns &lt;br /&gt;売り上げランキング: 499&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0486202046/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1790439307046182676?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1790439307046182676/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1790439307046182676' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1790439307046182676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1790439307046182676'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/1011furni01.html' title='次回授業（10/11）：FURNI01'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7uyXRm_coS4/SOnh9zQIx1I/AAAAAAAAAQ0/RF0tXqoWZZI/s72-c/figure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6285206633613372535</id><published>2008-10-04T14:05:00.014+09:00</published><updated>2008-10-05T07:55:50.105+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='QRコード'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　QRコード／2次元コード</title><content type='html'>Processingのライブラリには、「&lt;a href="http://www.shiffman.net/p5/pqrcode/"&gt;QRCode&lt;/a&gt;」というものがあります。QRコードとは、以下のような２次元的なマトリクスを利用したコードです。バーコードよりは情報量が多く、様々な場面に用いられています。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SOJWK1XGa_I/AAAAAAAAAQk/X1sonTKvKQI/s1600-h/qrcode.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SOJWK1XGa_I/AAAAAAAAAQk/X1sonTKvKQI/s400/qrcode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5251854859590069234" /&gt;&lt;/a&gt;&lt;br /&gt;このブログのURL情報が含まれたQRコード（上画像:qrcode.png）&lt;br /&gt;&lt;br /&gt;Processingの「&lt;a href="http://www.shiffman.net/p5/pqrcode/"&gt;QRCode&lt;/a&gt;」ライブラリを用いることで、QRコードに含まれた情報を解読することができます。逆に、任意の情報のQRコードを生成するには以下のようなサイトで行うことができます。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qrcode.kaywa.com"&gt;http://qrcode.kaywa.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://qr.quel.jp/"&gt;http://qr.quel.jp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;「&lt;a href="http://www.shiffman.net/p5/pqrcode/"&gt;QRCode&lt;/a&gt;」ライブラリでは、上記サイトなどで直接生成したQRコード以外にも、Webカメラやデジタルカメラで撮影したQRコード（紙上に印刷したQRコード）を認識／解読することができます。尚、このライブラリを使うには「&lt;a href="http://www.shiffman.net/p5/pqrcode/"&gt;QRCode&lt;/a&gt;」ライブラリサイトからライブラリをダウンロード＋インストールする必要があります。サイトの説明によれば、以下のようなコードでQRコードを解読することができます。予めQRコードの画像を用意して、スケッチフォルダ内dataフォルダに入れておいて下さい。&lt;br /&gt;以下のサンプルは、上にあるQRコード（qrcode.png）を使って解読するコードです。無事QRコードが解読されれば、&lt;a href="http://processing.org/reference/link_.html"&gt;link()&lt;/a&gt;によって、自動的にこのブログのURLへジャンプするようになっています。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリを取り入れる&lt;br /&gt;import pqrcode.*;&lt;br /&gt;&lt;br /&gt;//インスタンス名&lt;br /&gt;Decoder decoder;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //オブジェクトの生成&lt;br /&gt;  decoder = new Decoder(this);&lt;br /&gt;  //イメージのロード&lt;br /&gt;  PImage img = loadImage("qrcode.png");&lt;br /&gt;  //イメージの解読&lt;br /&gt;  decoder.decodeImage(img);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void decoderEvent(Decoder decoder) {&lt;br /&gt;  //解読結果をテキストとして取り出す&lt;br /&gt;  String statusMsg = decoder.getDecodedString();&lt;br /&gt;  //テキストを画面に出力&lt;br /&gt;  println(statusMsg);&lt;br /&gt;  //テキストに書かれているURLへ移動&lt;br /&gt;  link(statusMsg, "_new"); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;「&lt;a href="http://www.shiffman.net/p5/pqrcode/"&gt;QRCode&lt;/a&gt;」ライブラリのサイトには、Webカメラから撮影したQRコードを読み込んで解読するサンプルがあります。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shiffman.net/p5/pqrcode_files/Pqrcode_example.zip"&gt;http://www.shiffman.net/p5/pqrcode_files/Pqrcode_example.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;このサンプルでは、「スペース」キーでカメラからのQRコードを画像として読み込み解読します。解読されたテキストは画面に文字として表示されます。「f」キーで、既に用意されているテスト用の画像を読み込んで解読します（「http://www.shiffman.net」と表示されるはずです）。「s」キーで、カメラセッティングの画面に切り替わります。&lt;br /&gt;カメラでQRコードを撮影するときに、ピントがずれていると認識できないこともあるので、カメラを調整する必要があるかもしれません。&lt;br /&gt;&lt;br /&gt;以下では、デスクトップ上あるいはその他の場所に保存してあるQRコードをファイルチューザーで選び、解読する実験をしてみます。ファイルチューザーについては、前回のブログ「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser.html"&gt;Processing　FileChooser/ファイル選択画面の表示&lt;/a&gt;」を参照して下さい。&lt;br /&gt;マウスを押したら、ファイルチューザーのダイアログ画面が現れ、任意のQRコードを選択し、解読結果をProcessingのコンソールに表示します。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//JavaのSwingを取り込む&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;import pqrcode.*;&lt;br /&gt;&lt;br /&gt;//解読用インスタンスを用意&lt;br /&gt;Decoder decoder;&lt;br /&gt;&lt;br /&gt;//画像インスタンスを用意 &lt;br /&gt;PImage pimage;&lt;br /&gt;&lt;br /&gt;//選択ファイル名を用意し&lt;br /&gt;//ファイル名を空にしておく&lt;br /&gt;String getFile = null;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //とりあえず表示画面を400角に設定 &lt;br /&gt;  size(400,400);&lt;br /&gt;  //解読用オブジェクトの生成&lt;br /&gt;  decoder = new Decoder(this);&lt;br /&gt;  //背景（黒）&lt;br /&gt;  background(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //選択ファイル名が空でないとき&lt;br /&gt;  if(getFile != null){&lt;br /&gt;    //ファイルを取り込む&lt;br /&gt;    fileLoader(); &lt;br /&gt;  } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスを押したら&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //選択ファイル取得処理 &lt;br /&gt;  getFile = getFileName(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイルを取り込むファンクション &lt;br /&gt;void fileLoader(){&lt;br /&gt;  //選択ファイル名のドット以降の文字列を取得&lt;br /&gt;  String ext = getFile.substring(getFile.lastIndexOf('.') + 1);&lt;br /&gt;  //その文字列を小文字にする&lt;br /&gt;  ext.toLowerCase();&lt;br /&gt;  //文字列末尾がjpg,png,gif,tgaのいずれかであれば &lt;br /&gt;  if(ext.equals("jpg") || ext.equals("png") ||  ext.equals("gif") || ext.equals("tga")){&lt;br /&gt;    //選択ファイル名のイメージを取り込む&lt;br /&gt;    pimage = loadImage(getFile);&lt;br /&gt;    //背景（黒）&lt;br /&gt;    background(0);&lt;br /&gt;    //イメージ表示 &lt;br /&gt;    image(pimage, 0, 0, pimage.width, pimage.height);&lt;br /&gt;    //イメージの解読&lt;br /&gt;    decoder.decodeImage(pimage);&lt;br /&gt;  }&lt;br /&gt;  //選択ファイルパスを空に戻す&lt;br /&gt;  getFile = null; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイル選択画面、選択ファイル名取得の処理 &lt;br /&gt;String getFileName(){&lt;br /&gt;  //処理タイミングの設定 &lt;br /&gt;  SwingUtilities.invokeLater(new Runnable() { &lt;br /&gt;    public void run() {&lt;br /&gt; try {&lt;br /&gt;   //ファイル選択画面表示 &lt;br /&gt;   JFileChooser fc = new JFileChooser(); &lt;br /&gt;   int returnVal = fc.showOpenDialog(null);&lt;br /&gt;   //「開く」ボタンが押された場合&lt;br /&gt;   if (returnVal == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;     //選択ファイル取得 &lt;br /&gt;     File file = fc.getSelectedFile();&lt;br /&gt;     //選択ファイルのパス取得 &lt;br /&gt;     getFile = file.getPath(); &lt;br /&gt;   } &lt;br /&gt; }&lt;br /&gt; //上記以外の場合 &lt;br /&gt; catch (Exception e) {&lt;br /&gt;   //エラー出力 &lt;br /&gt;   e.printStackTrace(); &lt;br /&gt; } &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  );&lt;br /&gt;  //選択ファイルパス取得&lt;br /&gt;  return getFile; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void decoderEvent(Decoder decoder) {&lt;br /&gt;  //解読結果をテキストとして取り出す&lt;br /&gt;  String statusMsg = decoder.getDecodedString();&lt;br /&gt;  //テキストを画面に出力&lt;br /&gt;  println(statusMsg);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;以下は、授業内で実験した内容です。&lt;br /&gt;数値の情報（100など）を含んだQRコードを生成し、プログラムによって解読された文字列としての数値を整数型の数値に変換します。その数値をArduinoへシリアル通信で送信し、&lt;a href="http://arduino.cc/en/Reference/AnalogWrite"&gt;analogWrite()&lt;/a&gt;でLEDの輝度やモータの速度あるいはサーボの回転角度などに反映させる内容です。いくつかのQRコードを作成し、ファイルチューザーで選択したQRコードを入れ替わりで送ります。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//シリアル通信ライブラリを取り込む&lt;br /&gt;import processing.serial.*;&lt;br /&gt;//シリアル通信インスタンス&lt;br /&gt;Serial port;&lt;br /&gt;&lt;br /&gt;//JavaのSwingを取り込む&lt;br /&gt;import javax.swing.*;&lt;br /&gt;import pqrcode.*;&lt;br /&gt;//解読用インスタンスを用意&lt;br /&gt;Decoder decoder;&lt;br /&gt;//画像インスタンスを用意 &lt;br /&gt;PImage pimage;&lt;br /&gt;String getFile = null;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //とりあえず表示画面を400角に設定 &lt;br /&gt;  size(400,400);&lt;br /&gt;  //解読用オブジェクトの生成&lt;br /&gt;  decoder = new Decoder(this);&lt;br /&gt;  background(0);&lt;br /&gt;  &lt;br /&gt;  //シリアルポートの設定  &lt;br /&gt;  port = new Serial(this, "/dev/tty.usbserial-A4001Kjl", 9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //選択ファイル名が空でないとき&lt;br /&gt;  if(getFile != null){&lt;br /&gt;    //ファイルを取り込む&lt;br /&gt;    fileLoader(); &lt;br /&gt;  } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  getFile = getFileName(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void fileLoader(){&lt;br /&gt;  //選択ファイル名のドット以降の文字列を取得&lt;br /&gt;  String ext = getFile.substring(getFile.lastIndexOf('.') + 1);&lt;br /&gt;  //その文字列を小文字にする&lt;br /&gt;  ext.toLowerCase();&lt;br /&gt;  //文字列末尾がjpg,png,gif,tgaのいずれかであれば &lt;br /&gt;  if(ext.equals("jpg") || ext.equals("png") ||  ext.equals("gif") || ext.equals("tga")){&lt;br /&gt;    //選択ファイル名のイメージを取り込む&lt;br /&gt;    pimage = loadImage(getFile);&lt;br /&gt;    //背景（黒）&lt;br /&gt;    background(0);&lt;br /&gt;    //イメージ表示 &lt;br /&gt;    image(pimage, 0, 0, pimage.width, pimage.height);&lt;br /&gt;    //イメージの解読&lt;br /&gt;    decoder.decodeImage(pimage);&lt;br /&gt;  }&lt;br /&gt;  //選択ファイルパスを空に戻す&lt;br /&gt;  getFile = null; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイル選択画面、選択ファイル名取得の処理 &lt;br /&gt;String getFileName(){&lt;br /&gt;  //処理タイミングの設定 &lt;br /&gt;  SwingUtilities.invokeLater(new Runnable() { &lt;br /&gt;    public void run() {&lt;br /&gt; try {&lt;br /&gt;   //ファイル選択画面表示 &lt;br /&gt;   JFileChooser fc = new JFileChooser(); &lt;br /&gt;   int returnVal = fc.showOpenDialog(null);&lt;br /&gt;   //「開く」ボタンが押された場合&lt;br /&gt;   if (returnVal == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;     //選択ファイル取得 &lt;br /&gt;     File file = fc.getSelectedFile();&lt;br /&gt;     //選択ファイルのパス取得 &lt;br /&gt;     getFile = file.getPath(); &lt;br /&gt;   } &lt;br /&gt; }&lt;br /&gt; //上記以外の場合 &lt;br /&gt; catch (Exception e) {&lt;br /&gt;   //エラー出力 &lt;br /&gt;   e.printStackTrace(); &lt;br /&gt; } &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  );&lt;br /&gt;  //選択ファイルパス取得&lt;br /&gt;  return getFile; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void decoderEvent(Decoder decoder) {&lt;br /&gt;  //解読結果をテキストとして取り出す&lt;br /&gt;  String statusMsg = decoder.getDecodedString();&lt;br /&gt;  //テキストを画面に出力&lt;br /&gt;  println(statusMsg);&lt;br /&gt;  &lt;br /&gt;  //解読した文字列を整数値に変換&lt;br /&gt;  int val=int(statusMsg);&lt;br /&gt;  //シリアル通信で送信&lt;br /&gt;  port.write(val);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Arduino側は、11番ピン（PWMピン）にLEDを接続し、輝度が変化する内容であれば以下のようになります。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;int val;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //受信データがひとつ届いたら&lt;br /&gt;  if(Serial.available()&gt;0){&lt;br /&gt;    //受信データ読み込み&lt;br /&gt;    val=Serial.read();&lt;br /&gt;  }&lt;br /&gt;  //11番ピンをアナログ出力する&lt;br /&gt;  analogWrite(11,val);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;QRコードで、「100,20,35,180」のように、幾つかの数値をコンマ（デリミタ）で区切り連続した数値の文字列を作成し、解読した結果として送信すれば、複数の数値データをArduinoへ送信することもできます。&lt;br /&gt;この場合、Processingのプログラムの最後の部分にあるvoid decoderEvent(){...}の部分を以下のようにします。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;void decoderEvent(Decoder decoder) {&lt;br /&gt;  String statusMsg = decoder.getDecodedString();&lt;br /&gt;  int[] data=int(split(statusMsg,',');&lt;br /&gt;  for(int i=0;i&amp;lt;data.length;i++){&lt;br /&gt;    port.write(val);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;解読される文字列は&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;statusMsg = "100,20,35,180"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;なので、&lt;br /&gt;この文字列statusMsgを&lt;a href="http://processing.org/reference/split_.html"&gt;split()&lt;/a&gt;に代入し「,」コンマを区切り記号として複数の文字列を含んだ配列に変換します。同時にその文字列群を&lt;a href="http://processing.org/reference/int_.html"&gt;int()&lt;/a&gt;で括ることで、文字列データを整数値データに変換し、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;data = {100,20,35,180}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という整数値の配列になります。&lt;a href="http://processing.org/reference/Array.html"&gt;data.length&lt;/a&gt;によって配列dataに何個のデータが含まれているか確認し（この場合４個、data[0]からdata[3]まで）、&lt;a href="http://processing.org/reference/for.html"&gt;for()&lt;/a&gt;文でデータ数の分だけ&lt;a href="http://processing.org/reference/libraries/serial/Serial_write_.html"&gt;port.write()&lt;/a&gt;で繰り返しシリアル通信で送信します（４回分送信）。Arduino側で、順番にこれらの数値を受け取ることで、LEDの輝度調整のプログラムであれば、連続した値をもとに変化する輝度調整が可能になります。&lt;br /&gt;&lt;br /&gt;応用的な使い方として、LEDの点灯やサーボの回転角度などの連続する動きのデータをQRコードで幾つか作成しておき、Webカメラを通して解読させる度に異なる動作をさせたり、マトリクスLEDなどに文字や模様として表示させたりできます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6285206633613372535?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6285206633613372535/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6285206633613372535' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6285206633613372535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6285206633613372535'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processingqr2.html' title='Processing　QRコード／2次元コード'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7uyXRm_coS4/SOJWK1XGa_I/AAAAAAAAAQk/X1sonTKvKQI/s72-c/qrcode.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-3450891679472375071</id><published>2008-10-03T16:05:00.012+09:00</published><updated>2010-03-23T15:54:05.900+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ファイルチューザー'/><category scheme='http://www.blogger.com/atom/ns#' term='サウンド'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　FileChooser/ファイル選択画面の表示</title><content type='html'>通常Processingでは、プログラム上で使われる画像データや音源データなどは、スケッチフォルダ内のdataフォルダ内に入れておく必要があります。ProcessingはJavaでつくられているため、JavaのGUIライブラリであるSwingを使うことで、ファイルチューザーのダイアログ画面（ファイル選択画面）を表示し、パソコン上にある任意のファイルを選択し開くことができます（尚、この方法は&lt;a href="http://processing.org/hacks/doku.php?id=hacks:filechooser"&gt;Processing/Hacks/filechooser&lt;/a&gt;で紹介されています）。&lt;br /&gt;関連：「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser_12.html"&gt;Processing　FileChooser２&lt;/a&gt;」（Processing 146以降／&lt;a href="http://processing.org/reference/selectInput_.html"&gt;selectInput()&lt;/a&gt;の使い方）&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SOfQOH5u2EI/AAAAAAAAAQs/L5TzKSVGsIA/s1600-h/win.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SOfQOH5u2EI/AAAAAAAAAQs/L5TzKSVGsIA/s400/win.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5253396431408912450" /&gt;&lt;/a&gt;&lt;br /&gt;（Windows XPのファイルチューザー画面/ファイル選択ダイアログ）&lt;br /&gt;&lt;br /&gt;dataフォルダ内のデータだけでなく、デスクトップ上にある画像データなどを読み込むことができるので、入れ替わりで画像表示させるときなどに便利です。&lt;br /&gt;以下は、クリックするとファイルチューザー（ファイル選択画面）というダイアログ画面が現れ、コンピュータ上の任意の場所にある画像ファイル（jpeg、png、gif、tga）を取り込んで表示するサンプルです。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//JavaのSwingを取り込む&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;//画像インスタンスを用意 &lt;br /&gt;PImage pimage;&lt;br /&gt;&lt;br /&gt;//選択ファイルを用意し&lt;br /&gt;//ファイルを空にしておく&lt;br /&gt;String getFile = null;&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //とりあえず表示画面を400角に設定 &lt;br /&gt;  size(400,400); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //選択ファイル名が空でないとき&lt;br /&gt;  if(getFile != null){&lt;br /&gt;    //ファイルを取り込む&lt;br /&gt;    fileLoader(); &lt;br /&gt;  } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスを押したら&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //選択ファイル取得処理 &lt;br /&gt;  getFile = getFileName(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイルを取り込むファンクション &lt;br /&gt;void fileLoader(){&lt;br /&gt;  //選択ファイルパスのドット以降の文字列を取得&lt;br /&gt;  String ext = getFile.substring(getFile.lastIndexOf('.') + 1);&lt;br /&gt;  //その文字列を小文字にする&lt;br /&gt;  ext.toLowerCase();&lt;br /&gt;  //文字列末尾がjpg,png,gif,tgaのいずれかであれば &lt;br /&gt;  if(ext.equals("jpg") || ext.equals("png") ||  ext.equals("gif") || ext.equals("tga")){&lt;br /&gt;    //選択ファイルパスの画像を取り込む&lt;br /&gt;    pimage = loadImage(getFile);&lt;br /&gt;    //イメージ表示 &lt;br /&gt;    image(pimage, 0, 0, pimage.width, pimage.height); &lt;br /&gt;  }&lt;br /&gt;  //選択ファイルパスを空に戻す&lt;br /&gt;  getFile = null; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイル選択画面、選択ファイルパス取得の処理 &lt;br /&gt;String getFileName(){&lt;br /&gt;  //処理タイミングの設定 &lt;br /&gt;  SwingUtilities.invokeLater(new Runnable() { &lt;br /&gt;    public void run() {&lt;br /&gt; try {&lt;br /&gt;   //ファイル選択画面表示 &lt;br /&gt;   JFileChooser fc = new JFileChooser(); &lt;br /&gt;   int returnVal = fc.showOpenDialog(null);&lt;br /&gt;   //「開く」ボタンが押された場合&lt;br /&gt;   if (returnVal == JFileChooser.APPROVE_OPTION) {&lt;br /&gt;     //選択ファイル取得 &lt;br /&gt;     File file = fc.getSelectedFile();&lt;br /&gt;     //選択ファイルのパス取得 &lt;br /&gt;     getFile = file.getPath(); &lt;br /&gt;   } &lt;br /&gt; }&lt;br /&gt; //上記以外の場合 &lt;br /&gt; catch (Exception e) {&lt;br /&gt;   //エラー出力 &lt;br /&gt;   e.printStackTrace(); &lt;br /&gt; } &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  );&lt;br /&gt;  //選択ファイルパス取得&lt;br /&gt;  return getFile; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;選択ファイルが画像ファイルとして相応しいものであるかどうかを&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if(ext.equals("jpg") || ext.equals("png") ||  ext.equals("gif") || ext.equals("tga")){...}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;によって判別しています。選択したファイル名の「.」ドット以降が、「jpg」、「png」、「gif」、「tga」であれば、読み込み可能な画像フォーマットとして処理されます。以下の&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;String getFileName(){...}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;以降はJavaのSwingによるファイルチューザーを呼び出して選択ファイルまでのパスを得るコードなので、そのままコピー＆ペーストしても構わないでしょう。&lt;br /&gt;&lt;a href="http://processing.org/reference/PImage.html"&gt;PImage&lt;/a&gt;では、jpg、png、gif、tgaの４種類が読み込み可能ですが、この部分を音源のファイルフォーマットに指定し、&lt;a href="http://processing.org/reference/PImage.html"&gt;PImage&lt;/a&gt;のかわりにサウンドライブラリを使えば、音源の選択／読み込み／再生も可能になります。&lt;br /&gt;ファイルチューザー画面を用いて、Processingのサウンドライブラリである「&lt;a href="http://www.tree-axis.com/Ess/"&gt;Ess&lt;/a&gt;」による音源再生のプログラムを以下に書きます。画面中央の白い正方形をクリックすれば、音源選択の画面が現れます。今回利用できる音源のフォーマットは、「wav」だけとします。dataフォルダの中にある音源だけでなく、iTuneなどの音楽ライブラリの中から曲を選ぶこともできるはずです。白い正方形以外の周辺の場所をクリックすれば、再度音源が再生されます。尚、「&lt;a href="http://www.tree-axis.com/Ess/"&gt;Ess&lt;/a&gt;」ライブラリをダウンロード＋インストールしておく必要があります。また、曲などの大きな音源データの場合は、ProcessingのメニューバーからPreferencesあるいは環境設定で、メモリーを増やしておく必要があります（「Increase maximum available memory to [  ]MB」という欄にチェックを入れ、データ量に相当するメモリー数を記入して下さい）。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//Essサウンドライブラリの取り込み&lt;br /&gt;import krister.Ess.*;&lt;br /&gt;//音源インスタンスの用意&lt;br /&gt;AudioChannel mySample;&lt;br /&gt;&lt;br /&gt;//JavaのSwingライブラリの取り込み&lt;br /&gt;import javax.swing.*; &lt;br /&gt;&lt;br /&gt;String getFile = null; &lt;br /&gt;&lt;br /&gt;void setup(){ &lt;br /&gt;  size(200,200);&lt;br /&gt;  //Ess使用開始&lt;br /&gt;  Ess.start(this);&lt;br /&gt;  background(100,100,30);&lt;br /&gt;  rectMode(CORNER);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //画面中央白い正方形の描画&lt;br /&gt;  rect(width/2-25,height/2-25,50,50); &lt;br /&gt;  if(getFile != null){ &lt;br /&gt;    fileLoader(); &lt;br /&gt;  } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //クリックの箇所が白い正方形以内なら&lt;br /&gt;  if(mouseX&amp;gt;width/2-25 &amp;&amp; mouseX&amp;lt;width/2-25+50 &amp;&amp; mouseY&amp;gt;height/2-25 &amp;&amp; mouseY&amp;lt;height/2-25+50){&lt;br /&gt;    //選択ファイル所得処理 &lt;br /&gt;    getFile = getFileName();&lt;br /&gt;  }&lt;br /&gt;  else{//白い正方形以外の箇所をクリックしたら&lt;br /&gt;    //音源ファイルが空ではないとき&lt;br /&gt;    if(mySample!=null){&lt;br /&gt;      //音源再生&lt;br /&gt;      mySample.play();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void fileLoader(){ &lt;br /&gt;  String ext = getFile.substring(getFile.lastIndexOf('.') + 1); &lt;br /&gt;  ext.toLowerCase();&lt;br /&gt;  //選択したファイルが「wav」フォーマットなら &lt;br /&gt;  if(ext.equals("wav") ){&lt;br /&gt;    //音源ファイルの指定 &lt;br /&gt;    mySample=new AudioChannel(getFile);&lt;br /&gt;    //音源再生&lt;br /&gt;    mySample.play();&lt;br /&gt;  } &lt;br /&gt;  getFile = null; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//ファイル選択画面、選択ファイルパス取得の処理&lt;br /&gt;String getFileName(){ &lt;br /&gt;  SwingUtilities.invokeLater(new Runnable() { &lt;br /&gt;    public void run() { &lt;br /&gt;      try { &lt;br /&gt;        JFileChooser fc = new JFileChooser(); &lt;br /&gt;        int returnVal = fc.showOpenDialog(null); &lt;br /&gt;        if (returnVal == JFileChooser.APPROVE_OPTION) { &lt;br /&gt;          File file = fc.getSelectedFile(); &lt;br /&gt;          getFile = file.getPath(); &lt;br /&gt;        } &lt;br /&gt;      }&lt;br /&gt;      catch (Exception e) { &lt;br /&gt;        e.printStackTrace(); &lt;br /&gt;      } &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  ); &lt;br /&gt;  return getFile; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Ess使用停止&lt;br /&gt;public void stop(){ &lt;br /&gt;  Ess.stop(); &lt;br /&gt;  super.stop(); &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-3450891679472375071?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/3450891679472375071/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=3450891679472375071' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3450891679472375071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/3450891679472375071'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/10/processingfilechooser.html' title='Processing　FileChooser/ファイル選択画面の表示'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/SOfQOH5u2EI/AAAAAAAAAQs/L5TzKSVGsIA/s72-c/win.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-4335282924173610896</id><published>2008-09-30T19:49:00.005+09:00</published><updated>2008-10-05T08:14:50.911+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>10/04(土)の授業について</title><content type='html'>次回10/04(土)の授業では、引き続き身体に関連した実験を行います。&lt;br /&gt;&lt;br /&gt;パソコン&lt;br /&gt;Arduino基盤&lt;br /&gt;センサ類（各自が持っているもの）&lt;br /&gt;ブレッドボード+ジャンプワイヤ&lt;br /&gt;&lt;br /&gt;以上を持参して来て下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-4335282924173610896?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/4335282924173610896/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=4335282924173610896' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4335282924173610896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4335282924173610896'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/1104.html' title='10/04(土)の授業について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6245418428443344860</id><published>2008-09-26T16:32:00.038+09:00</published><updated>2010-02-20T17:06:26.257+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='光センサ'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Webカメラ'/><title type='text'>Processing　Webカメラを光センサとして使う</title><content type='html'>今回は、パソコンに接続したWebカメラを光センサとして使う応用実験を行います。点光源（LEDなど）を空間内で動かし、その軌跡をProcessingの画面上に描画してみたいと思います（身体にLEDなどの点光源をつけて、腕を動かしたり歩いたりすれば、身体の動きを連続的に描画／記録することができます）。&lt;br /&gt;Processingでは、&lt;a href="http://processing.org/reference/libraries/video/index.html"&gt;videoライブラリ&lt;/a&gt;を用いてWebカメラを通してキャプチャし、キャプチャした画面のピクセルをひとつずつ読み込んで、設定した明るさ以上のピクセルを選択します。選択したピクセルのみを別の色で表示するプログラムになります。&lt;br /&gt;以下のプログラムでは、カメラからキャプチャした画像の各ピクセルの明るさ（0~255）を調べ、そのピクセルの明るさが254以上であれば、画面上に赤で表示する内容になります。クリックすれば、黒で塗りつぶして画面をリセットすることにします。&lt;br /&gt;&lt;a href="http://processing.org/reference/libraries/video/index.html"&gt;videoライブラリ&lt;/a&gt;の基本的な使い方は「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video（Webカメラ）&lt;/a&gt;」を参照して下さい。&lt;br /&gt;&lt;br /&gt;*Windowsの場合、そのままの設定ではこのVideoライブラリを使用することができません。&lt;a href="http://www.shiffman.net/vdig/WinVDIG_101.exe"&gt;WinVDIG 1.0.1&lt;/a&gt;をインストールする必要があります。&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリを取り込む&lt;br /&gt;import processing.video.*;&lt;br /&gt;&lt;br /&gt;//オブジェクトの用意&lt;br /&gt;Capture video;&lt;br /&gt;&lt;br /&gt;//画面サイズの変数と値&lt;br /&gt;int w=320;&lt;br /&gt;int h=240;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  size(w, h);&lt;br /&gt;  video = new Capture(this, w, h, 30);&lt;br /&gt;  //背景を黒にしておく&lt;br /&gt;  background(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //画面のピクセルをロードしておく&lt;br /&gt;  loadPixels();&lt;br /&gt;&lt;br /&gt;  //カメラ画像のピクセルをひとつずつ調べる&lt;br /&gt;  for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;    //ピクセルが254以上の明るさの場合&lt;br /&gt;    if(brightness(video.pixels[i])&gt;=254){&lt;br /&gt;      //選択されたピクセルを赤にする&lt;br /&gt;      pixels[i]=color(255,0,0);&lt;br /&gt;    }   &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  //ピクセル表示更新&lt;br /&gt;  updatePixels();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//キャプチャ画面の読み込み&lt;br /&gt;void captureEvent(Capture video) {&lt;br /&gt;  video.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスボタンを押したら&lt;br /&gt;void mousePressed(){&lt;br /&gt;  //背景を黒にする&lt;br /&gt;  background(0);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;LEDなどの点光源をカメラに対して動かせば、以下のような画像ができあがります。赤いピクセル部分が、動かした点光源の軌跡です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SNz_flJDurI/AAAAAAAAAP0/8Ai_mhkp-b0/s1600-h/capture1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SNz_flJDurI/AAAAAAAAAP0/8Ai_mhkp-b0/s400/capture1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5250352183618288306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;webカメラからの映像と合成（オーバーレイ）するには、以下のようになります。ここでは、webカメラからの映像を左右鏡像反転しています（カメラによっては、セッティング画面で鏡像にできるものもあります）。カメラからの映像を鏡像にすることで、点光源を右に動かせば画面内の点光源も右に動くようになります。マウスボタンを押せば画面を黒にリセット、「s」キーを押すと画面内の映像をjpeg画像で保存、「t」キーを押すとカメラセッティング画面になります。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;import processing.video.*;&lt;br /&gt;Capture video;&lt;br /&gt;int w=320;&lt;br /&gt;int h=240;&lt;br /&gt;&lt;br /&gt;//軌跡用の配列を用意しておく&lt;br /&gt;int[] pix=new int[w*h];&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  size(w, h);&lt;br /&gt;  video = new Capture(this, w, h, 30);&lt;br /&gt;  //軌跡用配列の値をすべてゼロにしておく&lt;br /&gt;  for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;    pix[i]=0;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  loadPixels();&lt;br /&gt;  for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;    if(brightness(video.pixels[i])&gt;=254){&lt;br /&gt;      //ピクセルを鏡像反転するための計算&lt;br /&gt;      //配列に値を記憶しておく&lt;br /&gt;      int a=i/w;&lt;br /&gt;      pix[w-i%w+a*w]=255;//選択されたピクセルだけを255にする&lt;br /&gt;    }&lt;br /&gt;    //配列からの値を画面ピクセルへ代入&lt;br /&gt;    //選択されたピクセルを緑で画面表示    &lt;br /&gt;    pixels[i]=color(0,pix[i],0);&lt;br /&gt;  }&lt;br /&gt;  updatePixels();&lt;br /&gt;&lt;br /&gt;  //合成するカメラ映像の処理&lt;br /&gt;  tint(255,128);//透明度128（50%）&lt;br /&gt;  scale(-1.0, 1.0);//左右反転（鏡像）&lt;br /&gt;  image(video, -w, 0);//映像出力&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//カメラ映像読み込み&lt;br /&gt;void captureEvent(Capture video) {&lt;br /&gt;  video.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//マウスボタンを押すとリセット（黒へ）&lt;br /&gt;void mousePressed(){&lt;br /&gt;  for(int i=0;i&amp;lt;w*h;i++){&lt;br /&gt;    pix[i]=0;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int num=0;//保存画像インデックスの変数&lt;br /&gt;&lt;br /&gt;void keyPressed(){&lt;br /&gt;  //sキーを押すと（jpeg画像で保存）&lt;br /&gt;  if(key=='s'){&lt;br /&gt;    String s="image_" + num + ".jpg";//保存ファイル名&lt;br /&gt;    save(s);//画像保存&lt;br /&gt;    num++;//保存画像インデックスを+1しておく&lt;br /&gt;  }&lt;br /&gt;  //tキーを押すと&lt;br /&gt;  if(key=='t'){&lt;br /&gt;    video.settings();//カメラセッティング画面表示&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;「s」キーを押すことで画面をjpegフォーマットで保存できるように&lt;a href="http://processing.org/reference/save_.html"&gt;save()&lt;/a&gt;を用います。画像は、&lt;a href="http://processing.org/reference/save_.html"&gt;save()&lt;/a&gt;の括弧内の指定したファイル名でスケッチフォルダ内に保存されます。インデックス用の変数numを用意し、image_0.jpg、image_1.jpg、image_2.jpg...というように、保存名にはインデックス番号がつくようにします。&lt;br /&gt;「t」キーを押せば&lt;a href="http://processing.org/reference/libraries/video/Capture_settings_.html"&gt;settings()&lt;/a&gt;によって、カメラのセッティング画面が現れます。カメラの露出やコントラストなどの設定が「オート／自動」になっている場合があるので、できれば「マニュアル／手動」に切り替えて、それぞれを固定値にしたほうが、選択するピクセルの明るさが変化せずに済むのでいいでしょう。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SN45dY1M3PI/AAAAAAAAAP8/2oKtsZtVISQ/s1600-h/image_1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SN45dY1M3PI/AAAAAAAAAP8/2oKtsZtVISQ/s400/image_1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5250697392605158642" /&gt;&lt;/a&gt;&lt;br /&gt;上画像：合成／重ね合わせられた映像&lt;br /&gt;映像内の手にはボタン電池に接続されたLEDが点灯しています。&lt;br /&gt;この画像は、プログラム中にある「s」キーを押して画像保存したものです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ドライバなしですぐにコンピュータに接続可能（UVC対応）なWebカメラとして以下のようなものがあります。&lt;br /&gt;Macintosh/Windows兼用です。&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B000SSLRVA&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B000SSLRW4&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0019K4W8G&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;　　&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kousakukousak-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=B0016LGI9E&amp;md=1X69VDGQCMF7Z30FM082&amp;fc1=666666&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=666666&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;関連：&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing　Video (Webカメラ)&lt;/a&gt;」--Webカメラの使い方／映像にフィルタをかけて表示。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/arduinoprocessingledweb.html"&gt;Arduino+Processing　マトリクスLED＋Webカメラ&lt;/a&gt;」--Webカメラ映像をマトリクスLEDに映す。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/10/processingweb.html"&gt;Processing　Webカメラ／定点記録画像&lt;/a&gt;」--Webカメラ映像を0.5秒おきに画像保存（JPEG）する。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/processingweb.html"&gt;Processing　Webカメラ/カラートラッキング&lt;/a&gt;」--Webカメラを使い、色を手がかりに物体を追いかける。&lt;br /&gt;「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/11/import-processing.html"&gt;Processing　Webカメラ/モーショントラッキング&lt;/a&gt;」--Webカメラを使って動体検知する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6245418428443344860?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6245418428443344860/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6245418428443344860' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6245418428443344860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6245418428443344860'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html' title='Processing　Webカメラを光センサとして使う'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/SNz_flJDurI/AAAAAAAAAP0/8Ai_mhkp-b0/s72-c/capture1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-4881080173110955978</id><published>2008-09-23T02:27:00.003+09:00</published><updated>2008-10-05T08:16:08.829+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>次回（9/27）授業について</title><content type='html'>9/27の授業では、以下のものを持参して下さい。&lt;br /&gt;&lt;br /&gt;・パソコン&lt;br /&gt;・Webカメラ（パソコン内蔵カメラでも可）&lt;br /&gt;・Arduino基盤&lt;br /&gt;・LED&lt;br /&gt;&lt;br /&gt;Webカメラをパソコンに接続し、Processingのプログラムによって身体計測の実験を行います。&lt;br /&gt;Webカメラの使い方については、「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/08/processingvideo-web.html"&gt;Processing Video（Webカメラ）&lt;/a&gt;」などを参考にして下さい。&lt;br /&gt;&lt;br /&gt;尚、上記機材等を持参できない場合は、学校の備品を使うことになります（ただし、数が限られています）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-4881080173110955978?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/4881080173110955978/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=4881080173110955978' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4881080173110955978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/4881080173110955978'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/527.html' title='次回（9/27）授業について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-1101297622562188994</id><published>2008-09-17T09:00:00.002+09:00</published><updated>2008-09-17T10:12:58.430+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='スケジュール'/><title type='text'>後期授業について</title><content type='html'>9/20（土）14:00から後期授業を開始します。後期授業説明をしたあとに、実験／作業を行います。&lt;br /&gt;&lt;br /&gt;当日（9/20）に必要な道具／材料など：&lt;br /&gt;・カッター（またはハサミ）&lt;br /&gt;・不要な新聞紙や雑誌（不要な紙類）&lt;br /&gt;・粘着テープ（ガムテープ、セロテープ、マスキングテープなど）&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SNBYG0VhpLI/AAAAAAAAAPc/chIQoevXFsw/s1600-h/stepUp3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SNBYG0VhpLI/AAAAAAAAAPc/chIQoevXFsw/s400/stepUp3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246790440038016178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SNBXAr-BRgI/AAAAAAAAAPU/M46v_0jaIXY/s1600-h/stepDown2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SNBXAr-BRgI/AAAAAAAAAPU/M46v_0jaIXY/s400/stepDown2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5246789235201099266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;後期授業概要：&lt;br /&gt;前期には、基本的な電子工作やプログラミングについて学習してきましたが、後期は実際の場面に対してそれらの技術を応用／表現していきたいと思います。&lt;br /&gt;前半では、「BODY」というテーマで実際の身体を対象にしながら作業していきます。&lt;br /&gt;中半では、「FURNI」というテーマで「BODY」で行った結果を家具的な道具／装置へ発展させます。&lt;br /&gt;後半では、「ROOM」というテーマで、１階のギャラリーを実在するサイトとして、空間を変容させる実験を行います。&lt;br /&gt;後期最後には、&lt;a href="http://correlative.org/"&gt;１階ギャラリー&lt;/a&gt;にて展覧会を行う予定です。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;09/20：後期授業概要説明&lt;br /&gt;　　　 BODY01&lt;br /&gt;09/27：BODY02&lt;br /&gt;10/04：BODY03&lt;br /&gt;10/11：FURNI01&lt;br /&gt;10/18：FURNI02&lt;br /&gt;10/25：FURNI03&lt;br /&gt;11/01：中間発表／レクチャー&lt;br /&gt;11/15：ROOM01&lt;br /&gt;11/22：ROOM02&lt;br /&gt;11/29：ROOM03&lt;br /&gt;12/06：STRUCTURALIZATION&lt;br /&gt;12/13：最終発表／展示（約１週間開催）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;電子工作／プログラミングの技術的な内容については、必ずしも今までの内容（あるいはブログに掲載されている内容）をすべて習得していなくても、各自のレベルや作品制作の必要性に応じて随時復習していきます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-1101297622562188994?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/1101297622562188994/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=1101297622562188994' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1101297622562188994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/1101297622562188994'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/blog-post.html' title='後期授業について'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7uyXRm_coS4/SNBYG0VhpLI/AAAAAAAAAPc/chIQoevXFsw/s72-c/stepUp3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-8106691170622641488</id><published>2008-09-14T00:28:00.022+09:00</published><updated>2010-07-07T14:43:12.822+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='加速度センサ'/><category scheme='http://www.blogger.com/atom/ns#' term='３D'/><category scheme='http://www.blogger.com/atom/ns#' term='緊急モーションセンサー'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　緊急モーションセンサー(Mac)</title><content type='html'>Appleの2005年以降のPowerBook/iBook/MacBook（ノート型）には、&lt;a href="http://support.apple.com/kb/HT2530?viewlocale=ja_JP"&gt;緊急モーションセンサー&lt;/a&gt;が内蔵されています。&lt;a href="http://support.apple.com/kb/HT2530?viewlocale=ja_JP"&gt;緊急モーションセンサー&lt;/a&gt;は、ハードディスクを保護するために、あやまってコンピュータを落としたときの衝撃を感知します。&lt;br /&gt;Processingには、この&lt;a href="http://support.apple.com/kb/HT2530?viewlocale=ja_JP"&gt;緊急モーションセンサー&lt;/a&gt;から値を得る「&lt;a href="http://www.shiffman.net/p5/sms/"&gt;Sudden Motion Sensorライブラリ&lt;/a&gt;」があります。&lt;a href="http://support.apple.com/kb/HT2530?viewlocale=ja_JP"&gt;緊急モーションセンサー&lt;/a&gt;では、以前扱った「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino_16.html"&gt;加速度センサ&lt;/a&gt;」のように、コンピュータ本体を傾けたり衝撃を与えたりすることによって変化する値（XYZ軸に対する３つの値）が得られます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SMc-OLmjBHI/AAAAAAAAANc/TNZYuyTcf5Q/s1600-h/axes.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SMc-OLmjBHI/AAAAAAAAANc/TNZYuyTcf5Q/s400/axes.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5244228704449791090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shiffman.net/p5/sms/"&gt;Sudden Motion Sensorライブラリ&lt;/a&gt;のサイトに従えば、３つの値は以下の方法で読み込むことが可能になります。尚、ライブラリをダウンロード＋インストールする必要があります。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリを取り込む&lt;br /&gt;import sms.*;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //画面サイズをとりあえず200角&lt;br /&gt;  size(200,200);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //３つの値を読み込み、配列に代入&lt;br /&gt;  int[] vals = Unimotion.getSMSArray();&lt;br /&gt;  //３つの値を出力&lt;br /&gt;  println(vals[0] + " " + vals[1] + " " + vals[2]);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;上記プログラムによって出力された値は以下のようになりました（機種や状況によって多少誤差が含まれるかもしれません）。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;水平時　x:  0, y: -3, z:56&lt;br /&gt;左90度　x: 52, y: -3, z: 6&lt;br /&gt;右90度　x:-51, y: -3, z: 5&lt;br /&gt;前90度　x:  1, y: 49, z: 6&lt;br /&gt;後90度　x:  1, y:-54, z: 5&lt;br /&gt;&lt;br /&gt;xの振り幅：103（-51から52までの±51.5）&lt;br /&gt;yの振り幅：103（-54から49までの±51.5）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。それぞれの振り幅からxとyの中点（水平時の値）を新たに求めると、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;xの中点:(-51+52)/2=0.5&lt;br /&gt;yの中点:(-54+49)/2=-2.5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。これら中点の値をオフセット値として用いることにします。つまり、計測された値からオフセット値を差し引いて角度の計算をすることになります。以前の「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/06/arduino_16.html"&gt;Arduino　加速度センサ&lt;/a&gt;」のときと同様に、出力値からそれぞれの角度を求める式を用意します。それぞれの角度をradX、radY、オフセット値をoffsetX、offsetY、読み取り値をx、yとすると、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//atan2()で求める場合&lt;br /&gt;radX=atan2((x-offsetX),sqrt(51.5*51.5-(x-offsetX)*(x-offsetX)))&lt;br /&gt;radY=atan2((y-offsetY),sqrt(51.5*51.5-(y-offsetY)*(y-offsetY)))&lt;br /&gt;&lt;br /&gt;//またはacos()、asin()で求める場合&lt;br /&gt;radX=asin((x-offsetX)/51.5)&lt;br /&gt;radY=acos((y-offsetY)/51.5)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;になります。式中の51.5は加速度1G（重力）の時の値です（機種によっては256くらいのときもあります）。&lt;br /&gt;&lt;br /&gt;以上の式を使って、コンピュータ本体を傾けることでProcessing画面上の3Dモデルを動かしてみます。&lt;br /&gt;3Dモデルに関しては、前回の記事「&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processing3dobj-loader.html"&gt;Processing　3Dモデル／OBJ Loader&lt;/a&gt;」のものを使うことにします。コンピュータを傾けた方向に、画面内の3Dモデルも同様に傾く内容とします。&lt;br /&gt;スケッチフォルダ内にdataフォルダを作成し、3Dモデルのデータを入れておいて下さい（3Dデータは、&lt;a href="http://kousakudata.web.fc2.com/macbook/data3d.html"&gt;ここからダウンロード&lt;/a&gt;できます／.objファイルと.mtlファイルの二つが必要です）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SMnzKYh9CUI/AAAAAAAAAOM/5xh9IwLAVu8/s1600-h/macbook001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SMnzKYh9CUI/AAAAAAAAAOM/5xh9IwLAVu8/s400/macbook001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5244990600758757698" /&gt;&lt;/a&gt;&lt;br /&gt;(コンピュータを傾けた時の3Dモデル／&lt;a href="http://kousaku-kousaku.blogspot.com/2008/09/processing3dobj-loader.html"&gt;前回ブログの3Dモデル&lt;/a&gt;を使用）&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリのインポート&lt;br /&gt;import sms.*;&lt;br /&gt;import saito.objloader.*;&lt;br /&gt;&lt;br /&gt;//モデルのオブジェクトを用意&lt;br /&gt;OBJModel model;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //3D画面サイズ設定&lt;br /&gt;  size(400,400,P3D);&lt;br /&gt;  //モデルのオブジェクトを生成&lt;br /&gt;  model=new OBJModel(this);&lt;br /&gt;  //3Dデータ読み込み&lt;br /&gt;  model.load("macbook.obj");&lt;br /&gt;  //ワイヤーフレームなし&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //３つの値を読み込み、配列に代入&lt;br /&gt;  int[] vals = Unimotion.getSMSArray();&lt;br /&gt;  //println(vals[0] + " " + vals[1] + " " + vals[2]);&lt;br /&gt;  &lt;br /&gt;  //背景描画&lt;br /&gt;  background(50);&lt;br /&gt;  //直線光の設定&lt;br /&gt;  directionalLight(200, 200, 200, -1, 1, -1);&lt;br /&gt;  //環境光の設定&lt;br /&gt;  ambientLight(200, 200, 200);&lt;br /&gt;&lt;br /&gt;  //3Dモデルの位置座標設定&lt;br /&gt;  translate(width/2,height*2/3,0);&lt;br /&gt;&lt;br /&gt;  //オフセット値  &lt;br /&gt;  float offsetX=-2.5;&lt;br /&gt;  float offsetY=0.5;&lt;br /&gt;  //角度の計算：atan2()で求める場合&lt;br /&gt;  float radX=-atan2(vals[1]-offsetX,sqrt(51.5*51.5-(vals[1]-offsetX)*(vals[1]-offsetX)));&lt;br /&gt;  float radY=-atan2(vals[0]-offsetY,sqrt(51.5*51.5-(vals[0]-offsetY)*(vals[0]-offsetY)));&lt;br /&gt;  //またはacos()、asin()で求める場合&lt;br /&gt;  //float radX=asin((vals[1]-offsetX)/51.5);&lt;br /&gt;  //float radY=acos((vals[0]-offsetY)/51.5);&lt;br /&gt;&lt;br /&gt;  //回転角度&lt;br /&gt;  rotateX(radX+PI/2);&lt;br /&gt;  rotateY(radY);&lt;br /&gt;&lt;br /&gt;  //三角形分割で面を生成する&lt;br /&gt;  model.drawMode(TRIANGLES);&lt;br /&gt;  //スケール（200倍）&lt;br /&gt;  scale(200);&lt;br /&gt;  //モデル描画&lt;br /&gt;  model.draw();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;画面内の3D座標は、&lt;br /&gt;左:-X&lt;br /&gt;右:+X&lt;br /&gt;上:-Y&lt;br /&gt;下:+Y&lt;br /&gt;後:-Z&lt;br /&gt;前:+Z&lt;br /&gt;という関係になります。&lt;br /&gt;緊急モーションセンサーのX軸は、Processing上のY軸に対応しているので、vals[0]の値を3DモデルのY軸回転角度へ代入し、val[1]の値は3DモデルのX軸回転角度へ代入します。表示上90度X軸に対してずれていたので、rotateX(radX+PI/2)というようにradXにPI/2（90度）足しておきました。&lt;br /&gt;&lt;a href="http://processing.org/reference/directionalLight_.html"&gt;directionalLight()&lt;/a&gt;は太陽光のような直線光であり、括弧内の数値については、最初の３つがRGBで光の色を指定、最後の３つが(0,0,0)の原点を基準に光の向きを設定することになります。&lt;br /&gt;&lt;a href="http://processing.org/reference/ambientLight_.html"&gt;ambientLight()&lt;/a&gt;は環境光であり、光の向きはなく、空間全体を明るくしたり暗くしたりし（あるいは色を変える）、RGBの３つの数値で指定します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;もう一つのサンプルとして、コンピュータ自体をコントローラとして傾けて、水平面上のボールを転がすプログラムをしてみます。今回は、setup(){...}内で、一度緊急モーションセンサーから値を読み込み、それらをオフセット値として使うことにします。こうすることで、コンピュータを平らな場所においてプログラムを開始したときの状態（オフセット値）を記憶させておくことができます。&lt;a href="http://processing.org/reference/ellipse_.html"&gt;ellipse()&lt;/a&gt;で擬似的な影を地面に落とすことで立体感がでるようにします。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7uyXRm_coS4/SMlAIN9hz4I/AAAAAAAAAOE/DSndxorddtM/s1600-h/ball.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7uyXRm_coS4/SMlAIN9hz4I/AAAAAAAAAOE/DSndxorddtM/s400/ball.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5244793750980513666" /&gt;&lt;/a&gt;&lt;br /&gt;（コンピュータの傾きに合わせてボールが転がる）&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリのインポート&lt;br /&gt;import sms.*;&lt;br /&gt;&lt;br /&gt;//ボールの座標用変数&lt;br /&gt;float xPos,yPos;&lt;br /&gt;&lt;br /&gt;//オフセット用変数&lt;br /&gt;float xOffset;&lt;br /&gt;float yOffset;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //3D画面設定&lt;br /&gt;  size(400,400,P3D);&lt;br /&gt;  //ワイヤーフレームなし&lt;br /&gt;  noStroke();&lt;br /&gt;  //水平状態の読み込み&lt;br /&gt;  int[] vals = Unimotion.getSMSArray();&lt;br /&gt;  //読み込み値をオフセット値に設定する&lt;br /&gt;  xOffset=vals[0];&lt;br /&gt;  yOffset=vals[1];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;  //モーションセンサーからの読み込み&lt;br /&gt;  int[] vals = Unimotion.getSMSArray();&lt;br /&gt;  //背景色&lt;br /&gt;  background(220);&lt;br /&gt;  //画面上半分の塗色&lt;br /&gt;  fill(50);&lt;br /&gt;  //画面上半分の矩形&lt;br /&gt;  rect(0,0,width,height/2);&lt;br /&gt;&lt;br /&gt;  //ボールの速度の計算&lt;br /&gt;  float xSpeed=vals[0]-xOffset;&lt;br /&gt;  float ySpeed=vals[1]-yOffset;&lt;br /&gt;  //ボール移動量の計算&lt;br /&gt;  xPos+=-xSpeed;&lt;br /&gt;  yPos+=ySpeed;&lt;br /&gt;  //ボール位置の設定&lt;br /&gt;  translate(width/2+xPos,height*4/5,-200+yPos);&lt;br /&gt;&lt;br /&gt;  //影の塗色&lt;br /&gt;  fill(50);&lt;br /&gt;  //影の座標と大きさ&lt;br /&gt;  ellipse(-25,30,80,80/5);&lt;br /&gt;&lt;br /&gt;  //直線光の設定&lt;br /&gt;  directionalLight(255, 255, 255, -1, 1, 0);&lt;br /&gt;  //ボールの塗色&lt;br /&gt;  fill(255,100,50);&lt;br /&gt;  //ボール描画&lt;br /&gt;  sphere(30);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;緊急モーションセンサーの読み取り値からオフセット値を差し引いた値を、そのままボールのスピードに反映させています。読み取られたY方向の値は、画面内のZ座標（前後の軸）に対応するので、yPosを&lt;a href="http://processing.org/reference/translate_.html"&gt;translate()&lt;/a&gt;のZ軸に代入してあります。実際に動かしてみて、向きが逆であったり、座標軸がきちんと対応していない場合は、値にマイナスを掛けたり、代入先を入れ替えたりして調整してみて下さい。&lt;br /&gt;ボールの位置設定のための&lt;a href="http://processing.org/reference/translate_.html"&gt;translate()&lt;/a&gt;は、まずX座標をwidth/2で左右中央、Y座標をheight*4/5で画面上下4/5の位置、Z座標を-200奥とした座標を基準とし、その基準の座標に変化する値となるxPosとyPosを追加して、最終的な位置を決定しています。&lt;br /&gt;疑似の影として用いた&lt;a href="http://processing.org/reference/ellipse_.html"&gt;ellipse()&lt;/a&gt;は2D用の図形でありX座標とY座標しか設定できませんが、&lt;a href="http://processing.org/reference/translate_.html"&gt;translate()&lt;/a&gt;以後に挿入してあるので、&lt;a href="http://processing.org/reference/translate_.html"&gt;translate()&lt;/a&gt;のZ軸の値に合わせて、前後に動きつつ大きさも変化します（2D図形は、3D空間上ではZ座標値が0の位置に配置されており、&lt;a href="http://processing.org/reference/translate_.html"&gt;translate()&lt;/a&gt;以後に書いた2D図形は、Z軸の値を変化させれば、見た目の大きさや位置も影響を受けて変化します）。同様に、&lt;a href="http://processing.org/reference/directionalLight_.html"&gt;directionalLight()&lt;/a&gt;に対しても、2D図形を&lt;a href="http://processing.org/reference/directionalLight_.html"&gt;directionalLight()&lt;/a&gt;以前に書けば、光の影響を受けませんが、&lt;a href="http://processing.org/reference/directionalLight_.html"&gt;directionalLight()&lt;/a&gt;以後に2D図形を書くと、光の影響を受けて図形自体に陰影がつきます。そのため、&lt;a href="http://processing.org/reference/directionalLight_.html"&gt;directionalLight()&lt;/a&gt;は、プログラムの冒頭の方に書かずに、ボール描画の直前（2D図形描画以降）に書いておきます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-8106691170622641488?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/8106691170622641488/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=8106691170622641488' title='5 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8106691170622641488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/8106691170622641488'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/processingmac.html' title='Processing　緊急モーションセンサー(Mac)'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7uyXRm_coS4/SMc-OLmjBHI/AAAAAAAAANc/TNZYuyTcf5Q/s72-c/axes.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-6223709639223376621</id><published>2008-09-11T06:00:00.024+09:00</published><updated>2010-08-16T20:58:46.007+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='３D'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processing　3Dモデル／OBJ Loader</title><content type='html'>Processingのライブラリには、3Dモデリングソフトで制作した3Dモデルを読み込む&lt;a href="http://users.design.ucla.edu/~tatsuyas/tools/objloader/" target="_blank"&gt;OBJ Loaderライブラリ&lt;/a&gt;があります。&lt;a href="http://users.design.ucla.edu/~tatsuyas/tools/objloader/" target="_blank"&gt;OBJ Loader&lt;/a&gt;では、拡張子が「.obj」の3Dモデルを扱うことができます。3Dモデリングソフトがあれば、制作した3Dモデルを「.obj」フォーマットで書き出して、3Dデータを&lt;a href="http://users.design.ucla.edu/~tatsuyas/tools/objloader/" target="_blank"&gt;OBJ Loader&lt;/a&gt;で読み込みます。読み込みに使用する3Dデータは、スケッチフォルダ内に入れておきます。&lt;br /&gt;また、モデリングが面倒であれば、インターネットからフリーの3Dデータを検索しダウンロードして利用する方法もあります。この場合「.obj」フォーマットのデータでなければならないのですが、それ以外のフォーマットであっても、一旦3Dモデリングソフトで読み込んで「.obj」フォーマットにして書き出せば利用可能です。最近はフリーの3Dモデリングソフトも多く存在するので、ダウンロード／インストールしてすぐに使うことができるはずです（ブログページ右側にもフリーのモデリングソフトのリストがあります）。&lt;br /&gt;&lt;br /&gt;参考3Dモデリングソフト（フリーウェア）：&lt;br /&gt;&lt;a href="http://www.blender.org/" target="_blank"&gt;Blender&lt;/a&gt; (Win,Mac)&lt;br /&gt;&lt;a href="http://www.autodesk.co.jp/adsk/servlet/pc/index?siteID=1169823&amp;id=14947947"&gt;Maya 2010体験版（30日）&lt;/a&gt;（Win,Mac）&lt;br /&gt;&lt;a href="http://community.irhino3d.com/" target="_blank"&gt;Rhino&lt;/a&gt; (Mac用ベータ版/要登録)&lt;br /&gt;&lt;a href="http://www.metaseq.net/" target="_blank"&gt;Metasequoia/LE&lt;/a&gt; (Win)&lt;br /&gt;&lt;a href="http://doga.jp/" target="_blank"&gt;DoGA&lt;/a&gt; (Win)&lt;br /&gt;&lt;a href="http://www.cbmodelpro.com/" target="_blank"&gt;CB Model Pro&lt;/a&gt; (Win,Mac)&lt;br /&gt;&lt;a href="http://sketchup.google.co.jp/" target="_blank"&gt;SketchUp&lt;/a&gt; (Win,Mac)&lt;br /&gt;&lt;a href="http://code.google.com/p/sketchyphysics/" target="_blank"&gt;SketchyPhysics&lt;/a&gt; (Win):SketchUp物理演算プラグイン&lt;br /&gt;&lt;a href="http://www.caligari.com/Products/trueSpace/tS75/brochure/intro.asp?Cate=BIntro" target="_blank"&gt;trueSpace7&lt;/a&gt; (Win)&lt;br /&gt;&lt;a href="http://japan.cocreate.com/ModelingPE2.cfm"&gt;CoCreate&lt;/a&gt; (Win/要登録)&lt;br /&gt;&lt;br /&gt;今回はインターネット上から無料の3Dモデルのデータをダウンロードし、Processing上に表示してみたいと思います。&lt;a href="http://www.turbosquid.com" target="_blank"&gt;Turbo Squid&lt;/a&gt;という3Dモデルのデータライブラリのサイトから無料の3Dモデルを探し出し、以下の3Dモデルを利用してみたいと思います（データをダウンロードするには&lt;a href="http://www.turbosquid.com" target="_blank"&gt;Turbo Squid&lt;/a&gt;に登録する必要があります）。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.turbosquid.com/3d-models/max-apple-macbook/391534" target="_blank"&gt;http://www.turbosquid.com/3d-models/max-apple-macbook/391534&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;このモデルは拡張子が「.3DS」なので&lt;a href="http://usa.autodesk.com/adsk/servlet/index?siteID=1169823&amp;id=10004315" target="_blank"&gt;3ds Max&lt;/a&gt;用のデータです。フリーウェアの&lt;a href="http://www.blender.org/"target="_blank"&gt;Blender&lt;/a&gt;という3Dモデリングソフトで、この「.3DS」フォーマットのデータを読み込み（File&gt;Import&gt;.3ds）、「.obj」フォーマットで書き出して（File&gt;Export.obj）利用してみたいと思います（「.obj」に変換したファイルのリンクはこの記事の最後にあります）。&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777513467/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51jvfXgwUQL._SL160_.jpg" alt="はじめてのBlender (I・O BOOKS)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777513467/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;はじめてのBlender (I・O BOOKS)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4777513467/kousakukousak-22/ref=nosim/" title="はじめてのBlender (I・O BOOKS)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;山崎 聡 &lt;br /&gt;工学社 &lt;br /&gt;売り上げランキング: 6131&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777513467/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;そのまま読み込むと、各パーツの位置が少しずれていたので、修正して「.obj」フォーマットで書き出すことにしました。「.obj」フォーマットを選択して書き出すと、「~.obj」と「~.mtl」という二つのファイルが出来上がります。「~.obj」はポリゴンの座標についてのデータであり、「~.mtl」は色や材質、テクスチャなどのデータが含まれています。以下のプログラムで、3Dデータを読み込んでみます（「~.obj」ファイルと「~.mtl」ファイルは、スケッチフォルダ内に入れておいてください）。&lt;br /&gt;&lt;div style="background:#EEEEDD"&gt;&lt;pre&gt;&lt;br /&gt;//ライブラリのインポート&lt;br /&gt;import saito.objloader.*;&lt;br /&gt;&lt;br /&gt;//モデルのオブジェクトを用意&lt;br /&gt;OBJModel model;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  //3D用の画面設定&lt;br /&gt;  size(400,400,P3D);&lt;br /&gt;  //モデルのオブジェクトを生成&lt;br /&gt;  model=new OBJModel(this);&lt;br /&gt;  //objファイルの読み込み&lt;br /&gt;  model.load("macbook.obj");&lt;br /&gt;  //ワイヤーフレームなし&lt;br /&gt;  noStroke();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw(){&lt;br /&gt;  //背景描画&lt;br /&gt;  background(50);&lt;br /&gt;  //直線光の設定&lt;br /&gt;  directionalLight(200, 200, 200, -1, 1, -1);&lt;br /&gt;  //環境光の設定&lt;br /&gt;  ambientLight(200, 200, 200);&lt;br /&gt;  &lt;br /&gt;  //3Dモデルの位置設定 &lt;br /&gt;  translate(width/2,height/2,0);&lt;br /&gt;  //スケール設定（200倍）  &lt;br /&gt;  scale(200);&lt;br /&gt;&lt;br /&gt;  //マウス入力で回転させる&lt;br /&gt;  rotateX(PI*mouseY/height);&lt;br /&gt;&lt;br /&gt;  //三角形分割で面を生成する&lt;br /&gt;  model.drawMode(TRIANGLES);&lt;br /&gt;  //3Dモデルの描画&lt;br /&gt;  model.draw();  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blender.org/" target="_blank"&gt;Blender&lt;/a&gt;では、細かな出力設定はせずに、そのまま「.3DS」データを読み込み（File&gt;Import&gt;.3ds）、「.obj」フォーマットで書き出す（File&gt;Export&gt;.obj）ことにします（書き出す際には、予め画面上で3DモデルをSelectしておく必要があります）。表示されるスケールが小さすぎたので、&lt;a href="http://processing.org/reference/scale_.html"&gt;scale()&lt;/a&gt;で200倍の大きさに変換しています。そのまま表示させると、3Dモデルの色が真っ黒のままだったので、多少の修正が必要になります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7uyXRm_coS4/SMgxarDfGdI/AAAAAAAAANs/IZfaRkN5to8/s1600-h/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7uyXRm_coS4/SMgxarDfGdI/AAAAAAAAANs/IZfaRkN5to8/s400/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5244496100376648146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;色などの内容を確かめるために「.mtl」ファイルをテキストエディタなどで開くと、以下のような内容が記述されていることが分かります。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Blender3D MTL File: macbook.blend&lt;br /&gt;# Material Count: 2&lt;br /&gt;newmtl Screen&lt;br /&gt;Ns 96.078431&lt;br /&gt;Ka 0.000000 0.000000 0.000000&lt;br /&gt;Kd 0.084706 0.084706 0.084706&lt;br /&gt;Ks 0.449020 0.449020 0.449020&lt;br /&gt;Ni 1.000000&lt;br /&gt;d 1.000000&lt;br /&gt;illum 2&lt;br /&gt;&lt;br /&gt;newmtl Plastic&lt;br /&gt;Ns 96.078431&lt;br /&gt;Ka 0.000000 0.000000 0.000000&lt;br /&gt;Kd 0.800000 0.800000 0.800000&lt;br /&gt;Ks 0.449020 0.449020 0.449020&lt;br /&gt;Ni 1.000000&lt;br /&gt;d 1.000000&lt;br /&gt;illum 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;このデータには、ScreenとPlasticという名前の二つの材質についての数値が含まれており、以下のような内訳になります。&lt;br /&gt;#　コメント&lt;br /&gt;newmtl 材料名&lt;br /&gt;Ns　輝度&lt;br /&gt;Ka　環境色&lt;br /&gt;Kd　拡散色&lt;br /&gt;Ks　反射色&lt;br /&gt;Ni　光の屈折率&lt;br /&gt;d　 アルファ値&lt;br /&gt;illum 0:照明なし、1:反射ハイライトなし、2:Ksの値で反射ハイライトあり&lt;br /&gt;&lt;br /&gt;恐らくKaの値がそれぞれ0.000000, 0.000000, 0.000000なので真っ黒な状態になったのでしょう。それぞれの値を以下のように変えます。&lt;br /&gt;&lt;br /&gt;ScreenのKaの値を&lt;br /&gt;Ka　0.1　0.01　0.01&lt;br /&gt;&lt;br /&gt;PlasticのKaの値を&lt;br /&gt;Ka　0.7　0.7　0.7&lt;br /&gt;&lt;br /&gt;上記三つの値はRGB（赤,緑,青）に対応しています。&lt;br /&gt;それぞれの値を変更すると、ScreenのKaは少し赤みがかった黒、PlasticのKaは白に近いグレーになります。&lt;br /&gt;先ほどのプログラムで再度描画させれば、以下のようにかたちが認識できるようになるはずです。&lt;br /&gt;&lt;applet width="400" height="400" codebase="http://kousakudata.web.fc2.com/macbook" code="macbook" archive="macbook.jar,objloader.jar,core.jar"&gt;&lt;br /&gt;&lt;/applet&gt;&lt;br /&gt;マウス上下で3Dモデルも上下に回転します。&lt;br /&gt;見えない場合は&lt;a href="http://kousakudata.web.fc2.com/macbook/macbook.html"&gt;こちらへ&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Processingでは、&lt;a href="http://processing.org/reference/box_.html"target="_blank"&gt;box()&lt;/a&gt;、&lt;a href="http://processing.org/reference/sphere_.html"target="_blank"&gt;sphere()&lt;/a&gt;、&lt;a href="http://processing.org/reference/vertex_.html"target="_blank"&gt;vertex()&lt;/a&gt;などの基本的な3D描画のコマンドはありますが、複雑な3Dモデルを制作する際には、モデリングソフトを利用して取り込んだ方がいいでしょう。あるいは、3Dモデルのデータもインターネット上に数多く存在しているので、検索すれば相応しいものが見つかるかもしれません。&lt;br /&gt;尚、上記プログラムで使用したmacbook.objとmacbook.mtlのファイルは、&lt;a href="http://kousakudata.web.fc2.com/macbook/data3d.html"&gt;ここからダウンロード&lt;/a&gt;できます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="amazlet-box" style="margin-bottom:0px;"&gt;&lt;div class="amazlet-image" style="float:left;"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756151280/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51Hi6pRR6nL._SL160_.jpg" alt="3Dキャラクタアニメーション Blender(DVD付)" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"&gt;&lt;div class="amazlet-name" style="margin-bottom:10px;line-height:120%"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756151280/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;3Dキャラクタアニメーション Blender(DVD付)&lt;/a&gt;&lt;div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%"&gt;posted with &lt;a href="http://www.amazlet.com/browse/ASIN/4756151280/kousakukousak-22/ref=nosim/" title="3Dキャラクタアニメーション Blender(DVD付)" target="_blank"&gt;amazlet&lt;/a&gt; at 09.03.30&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-detail"&gt;トニー・マレン &lt;br /&gt;アスキー &lt;br /&gt;売り上げランキング: 118200&lt;br /&gt;&lt;/div&gt;&lt;div class="amazlet-link" style="margin-top: 5px"&gt;&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756151280/kousakukousak-22/ref=nosim/" name="amazletlink" target="_blank"&gt;Amazon.co.jp で詳細を見る&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="amazlet-footer" style="clear: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3514498658767469367-6223709639223376621?l=kousaku-kousaku.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kousaku-kousaku.blogspot.com/feeds/6223709639223376621/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3514498658767469367&amp;postID=6223709639223376621' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6223709639223376621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3514498658767469367/posts/default/6223709639223376621'/><link rel='alternate' type='text/html' href='http://kousaku-kousaku.blogspot.com/2008/09/processing3dobj-loader.html' title='Processing　3Dモデル／OBJ Loader'/><author><name>kousaku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7uyXRm_coS4/SMgxarDfGdI/AAAAAAAAANs/IZfaRkN5to8/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3514498658767469367.post-5123545961108630063</id><published>2008-08-30T06:29:00.031+09:00</published><updated>2010-10-13T21:05:32.188+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='タッチパネル'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Arduino　タッチパネル（４線式）4-wire touch panel</title><content type='html'>*Some are written in English at the moment(sorry not all of them...)&lt;br /&gt;This example shows how to use a touch panel/screen with an Arduino board plus a serial communication to a Processing program, which draws where to touch on the touch panel.&lt;br /&gt;This is not about a multi-touch function, only single point on the touch panel can be detected.&lt;br /&gt;&lt;br /&gt;今回は、４線式のタッチパネルをArduino基盤に接続し操作実験してみたいと思います。&lt;br /&gt;タッチパネルには、４線式や５線式という比較的簡単な構造になっているものがあります。今回使うタッチパネルは、指先やペン先で触れた一点の位置（X座標値とY座標値）を検出可能にするものです（複数の点を同時検出可能なマルチタッチではありません）。&lt;br /&gt;基本的には、X座標に２線、Y座標に２線あり、合計４線あります。手順としては、まずX座標を検出、そしてY座標を検出というように別々（交互）に行います。タッチパネル自体がX座標用とY座標用に対応した２層の抵抗になっており、X座標（横方向）だけで考えれば、タッチパネルの左端に０V、右端に５Vを接続しておいて、指先で触れた箇所で分圧される仕組みになっています。つまり、X座標の左に行くほど０Vに近く、中心に触れれば約２.５V、右に行くほど５Vに近い電圧が読み取れることになります。X座標を読み取る際には、使用していないY座標の２線のうちの１本を使います。X座標を検出したら、検出対象をY座標に切り替えて同様の方法で検出を続けます。下の図では、タッチパネルの２層あるうちのX座標用の層を押せば、下にあるY座標用の層と接触し、その地点での分圧された電圧の値をY座標用の層から読み込むことができます。&lt;br /&gt;There are two layers of conductive films on a 4-wire touch panel, the one for x-coordinate and the other for y-coordinate. Each layer is connected to GND and 5V on the egdes. Pressing the x-coordinate layer with your finger, then the x-coordinate layer will contact to the other layer(y-coordinate layer) underneath. At this moment the voltage is devided at the point where the two layers are touching, and the devided valtage can be read from the edge of the y-coordinate layer(the y-coordinate layer is working as a conductive film for the x-coordinate film at this time). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7uyXRm_coS4/SLNVsutWioI/AAAAAAAAAMg/qPnpzjOLBxg/s1600-h/touchSection.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7uyXRm_coS4/SLNVsutWioI/AAAAAAAAAMg/qPnpzjOLBxg/s400/touchSection.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5238625018502875778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Arduino基盤との接続は、以下のようにアナログ入力の０〜３番ピンに接続することにします（X座標用に０番ピンと１番ピン、Y座標用に２番ピンと３番ピンを使用）。通常タッチパネルなどの薄型の機器にはFPC（フレキシブルプリント基板）／FFC（フレキシブルフラットケーブル）の端子がついています。Arduino基盤からのワイヤーと接続するためには&lt;a href="http://www.hirose.co.jp/products/pc_9.htm"&gt;FFC用コネクタ&lt;/a&gt;を介して接続します（直接ハンダ付けできないので）。&lt;br /&gt;X座標を計測中にはyLowの端子からX座標の分圧された電圧を読み取るので（Y座標を計測中にはxLowの端子で読み取る）、タッチパネル上に何も触れていない時は、xLow端子に０Vが接続されるようにするため、プルダウン抵抗を接続しておきます（xLowやxHighとyHighにもプルダウン抵抗をつけておきます）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7uyXRm_coS4/SLhtd9SV2yI/AAAAAAAAAMw/gs9k5SaNkTY/s1600-h/touch.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7uyXRm_coS4/SLhtd9SV2yI/AAAAAAAAAMw/gs9k5SaNkTY/s400/touch.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5240058527880698658" /&gt;&lt;/a&gt;&lt;br /&gt;Needs a pull-down resistor for each wire from the touch panel.&lt;br /&gt;&lt;br /&gt;処理の手順は、まずX座標（横方向）の検出を行う際には、アナログ入力の「０番ピンと１番ピン」を「１４番ピンと１５番ピン」としてデジタル出力に切り替え、１４番ピンを０V（LOW）、１５番ピンを５V（HIGH）で出力しておきます。そして、Y座標用のアナログ入力２番ピンを通してanalogRead()で値を読み込みます。読み込まれた値は、X座標の値になります。このとき、Y座標用のアナログ入力「２番ピン」がデジタル出力にならないように「１６番ピン」として予めデジタル入力にしておきます。「３番ピン」も同様に「１７番ピン」としてデジタル入力にしておきます。&lt;br /&gt;Y座標（縦方向）の検出の際には、アナログ入力の「２番ピンと３番ピン」を「１６番ピンと１７番ピン」としてデジタル出力に切り替え、１６番ピンを０V（LOW）、１７番ピンを５V（HIGH）で出力しておきます。X座標用であった「１４番ピンと１５番ピン」をデジタル入力に切り替えておいてから、アナログ入力「０番ピン」を通してY座標の値をanalogRead()で読み込みます。このように１ループのなかで、X座標とY座標の検出処理を順番に行い、それぞれの座標値を得ます。&lt;br /&gt;Basically using the analog pins 0,1,2,3 on an Arduino board, those pins can be both analogRead pins and digitalWrite pins(in this case:pin numbers are 14,15,16,17) depending on setting. &lt;br /&gt;First, to read an x-coordinate value, set the pin14 as 0V(LOW) and the pin15 as 5V(HIGH), then the rest of the pins(either of 16 and 17) can be analogRead pins. Next, to read a y-coordinate value, set the pin16 as 0V(LOW) and the pin16 as 5V(HIGH), then read the value from either of the pin14 and the pin15. Reading the both value one after another then send them through a serial communication to Processing.&lt;br /&gt;&lt;br /&gt;&lt;div style="background:#EEFFEE"&gt;&lt;pre&gt;&lt;br /&gt;//デジタル出力用ピン番号の定義:the digital output pins&lt;br /&gt;#define xLow  14&lt;br /&gt;#define xHigh 15&lt;br /&gt;#define yLow  16&lt;br /&gt;#define yHigh 17&lt;br /&gt;&lt;br /&gt;void setup(){&lt;br /&gt;  //シリアル通信開始:start serial communication&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop(){&lt;br /&gt;  //X座標用端子をデジタル出力に設定し、それぞれをLOWとHIGHで出力しておく&lt;br /&gt;  //set the both x-coordinate pins as digital output:one is Low the other is HIGH  &lt;br /&gt;  pinMode(xLow,OUTPUT);&lt;br /&gt;  pinMode(xHigh,OUTPUT);&lt;br /&gt;  digitalWrite(xLow,LOW);&lt;br /&gt;  digitalWrite(xHigh,HIGH);&lt;br /&gt;&lt;br /&gt;  //Y座標用端子をLOWにしておく:the both y-coordinate pins are set to be LOW&lt;br /&gt;  digitalWrite(yLow,LOW);&lt;br /&gt;  digitalWrite(yHigh,LOW);&lt;br /&gt;&lt;br /&gt;  //Y座標用端子をデジタル入力に設定:change the y-coordinate pins as digital input&lt;br /&gt;  pinMode(yLow,INPUT);&lt;br /&gt;  pinMode(yHigh,INPUT);&lt;br /&gt;  delay(10);&lt;br /&gt;&lt;br /&gt;  //アナログ入力２番ピン（yLowピン）で読み込み&lt;br /&gt;  //read analog pin2(yLow pin) to get an x-coordinate value&lt;br /&gt;  int x=analogRead(2);&lt;br /&gt;  &lt;br /&gt;  //Y座標用端子をデジタル出力に設定し、それぞれをLOWとHIGHで出力しておく&lt;br /&gt;  //set the both y-coordinate pins as digital output:one is Low the other is HIGH &lt;br /&gt;  pinMode(yLow,OUTPUT);&lt;br /&gt;  pinMode(yHigh,OUTPUT);&lt;br /&gt;  digitalWrite(yLow,LOW);&lt;br /&gt;  digitalWrite(yHigh,HIGH);&lt;br /&gt;&lt;br /&gt;  //X座標用端子をLOWにしておく:the both x-coordinate pins are set to be LOW&lt;br /&gt;  digitalWrite(xLow,LOW);&lt;br /&gt;  digitalWrite(xHigh,LOW);&lt;br /&gt;&lt;br /&gt;  //X座標用端子をデジタル入力に設定:change the x-coordinate pins as digital input&lt;br /&gt;  pinMode(xLow,INPUT);&lt;br /&gt;  pinMode(xHigh,INPUT);&lt;br /&gt;  delay(10);&lt;br /&gt;&lt;br /&gt;  //アナログ入力０番ピン（xLowピン）で読み込み&lt;br /&gt;  //read analog pin0(xLow pin) to get an y-coordinate value&lt;br /&gt;  int y=analogRead(0);&lt;br /&gt;&lt;br /&gt;  if(Serial.available()&gt;0){&lt;br /&gt;    //文字列でシリアル通信:send the values as a DEC format with a delimiter&lt;br /&gt;    Serial.print(x,DEC);   //X座標:x-coordinate&lt;br /&gt;    Serial.print(",");     //デリミタ:delimiter&lt;br /&gt;    Serial.println(y,DEC); //Y座標:y-coordinate&lt;br /&gt;&lt;br /&gt;    //合図用信号読み込みでバッファを空にする&lt;br /&gt;    //read a handshake signal from Processing and clear the buffer&lt;br /&gt;    Serial.read();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;今回実験で用いたタッチパネルは、１２.１インチのサイズ（横：縦＝４：３）であり、指先で触れた位置が&lt;br /&gt;パネル左端：　７０ :a minimum value wh
