<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www15.atwiki.jp/arduino/">
    <title>arduino @ ウィキ</title>
    <link>http://www15.atwiki.jp/arduino/</link>
    <description>arduino @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-05-15T15:59:30+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/24.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/12.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/2.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/61.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/62.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/29.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/60.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/59.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/58.html" />
                <rdf:li rdf:resource="http://www15.atwiki.jp/arduino/pages/56.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/24.html">
    <title>本格的にArduino/スイッチを読み取る</title>
    <link>http://www15.atwiki.jp/arduino/pages/24.html</link>
    <description>
      *プルアップの回路
http://www.arduino.cc/en/Tutorial/Button
#image(http://www2.atpaint.jp/arduino/src/OB1236994208387.png)

スイッチがOFFの時はAの電圧がHIGHになる。
スイッチがONの時はAの電圧がLOWになる。

*プルダウンの回路
#image(http://www2.atpaint.jp/arduino/src/OB1236994483372.png)

スイッチがOFFの時はAの電圧がLOWになる。
スイッチがONの時はAの電圧がHIGHになる。

*消費電力
通常状態でスイッチがOFFの場合はプルダウンの回路の方が消費電力が少ない。
通常状態でスイッチがONの場合はプルアップの回路の方が消費電力が少ない。
まあ気にすることはないと思うけど。

*AVR内蔵のプルアップ抵抗を使える？
http://nekosan0.bake-neko.net/structure_digital_port.html
によると、
 digitalWrite(pin, HIGH);
でプルアップされるようです。
#image(http://www2.atpaint.jp/arduino/src/OB1236996142792.png)
抵抗1つ省略できるので便利。


*抵抗値は？
**プルアップの場合
mega168のデータシートによるとAVR内蔵のプルアップ抵抗は20K-50Kだそうだ。
-電圧を測定する部分の抵抗値(=A)より十分小さい
-スイッチがONになってGNDに接続されても電流が多すぎない
という抵抗値である必要があるわけだから100Kではたぶん大きすぎ、1Kでは5Vで5mA。
1Kから20Kぐらいの間で適当に選べばよさそうかな。

**プルダウンの場合
-スイッチがONになってGNDに接続されても電流が多すぎない
-十分しっかりGNDに引っ張れる値
と考えると、何オーム？

**内蔵プルアップでのスケッチ
 int ledPin   = 13;
 int inputPin = 2;
 
 void setup() {
  pinMode(ledPin,   OUTPUT);
  pinMode(inputPin, INPUT);
  digitalWrite(inputPin, HIGH); // pull-up
 }
 
 void loop(){
  int in = digitalRead(inputPin);
  if(in==HIGH){
    digitalWrite(ledPin, LOW);  //LED OFF
  } 
  else{
    digitalWrite(ledPin, HIGH); //LED ON
  }
 }

*チャタリング防止
チャタリング防止のライブラリがある。
http://www.arduino.cc/playground/Code/Debounce
zipをダウンロードしてarduinoのインストール先のhardware/libraries/Debounceに展開する。

 #include &lt;Debounce.h&gt; // http://www.arduino.cc/playground/Code/Debounce
 int SW_YELLOW = 3;
 int SW_GREEN  = 2;
 Debounce sw_yellow = Debounce(20, SW_YELLOW); 
 Debounce sw_green  = Debounce(20, SW_GREEN); 
 void setup() {
  Serial.begin(9600);
  pinMode(SW_YELLOW, INPUT);
  pinMode(SW_GREEN,  INPUT);
  digitalWrite(SW_YELLOW, HIGH); // pull-up
  digitalWrite(SW_GREEN,  HIGH); // pull-up
 }
 void loop(){
  if(sw_yellow.update() &amp;&amp; sw_yellow.read()==LOW) {
    yellow_count++;
    Serial.print(&quot;yellow_count=&quot;);
    Serial.println(yellow_count);
  }
  if(sw_green.update() &amp;&amp; sw_green.read()==LOW) { // digitalRead(SW_GREEN)==LOW
    green_count++;
    Serial.print(&quot;green_count=&quot;);
    Serial.println(green_count);
  }
 }    </description>
    <dc:date>2011-05-15T15:59:30+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/12.html">
    <title>気になるArduinoプロジェクト</title>
    <link>http://www15.atwiki.jp/arduino/pages/12.html</link>
    <description>
      気になるプロジェクトを追加してください

-instructablesのarduino http://www.instructables.com/tag/?q=arduino&amp;limit:type:id=on&amp;sort=RATING
-ArduinoとProcessingで安く作れるオシロスコープ http://jp.makezine.com/blog/2008/07/cheap_oscilloscope_built.html http://accrochages.drone.ws/en/node/90
-One Chip Arduino http://www.geocities.jp/arduino_diecimila/obaka/project-2/index.html
-外付けAVRライタ無しでBootloaderを書き込む http://www.geocities.jp/arduino_diecimila/bootloader/index.html
-Sanguino ATmega644P board http://hackaday.com/2008/10/05/sanguino-atmega644p-board/ でかいArduino
-Arduinoでリアルタイム音声処理 http://jp.makezine.com/blog/2009/01/realtime_audio_processing_with_ardu.html
-Arduino meets Processing via Wifi http://www.geocities.jp/arduino_diecimila/wifi/index.html Arduinoを激安で無線ＬＡＮ化
- 赤外線リモコン　http://d.hatena.ne.jp/NeoCat/20090419/1240158722  -- 名無しさん  (2009-09-21 16:29:03)
- http://hacknmod.com/hack/top-40-arduino-projects-of-the-web/  -- 名無しさん  (2009-10-08 17:53:50)
- ATTiny2313でArduino http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews46#u4db8215  -- senshu  (2009-10-18 08:49:46)
- 1000円arduinoクローンキット http://tiisai.dip.jp  -- 名無しさん  (2011-01-27 16:38:57)
#comment()    </description>
    <dc:date>2011-01-27T16:38:57+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/2.html">
    <title>メニュー</title>
    <link>http://www15.atwiki.jp/arduino/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-[[全ページ一覧&gt;http://www15.atwiki.jp/arduino/list]]
-[[wikiの記法&gt;http://www1.atwiki.jp/guide/pages/226.html]]
----
**更新履歴
#recent(20)
----
-[[プラグイン紹介&gt;プラグイン]]
-[[まとめサイト作成支援ツール]]
-[[メニュー]]
-[[メニュー2]]
----
**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります

//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)

#javascript(){{
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#039;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#039; type=&#039;text/javascript&#039;%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-333537-10&quot;);
pageTracker._trackPageview();
} catch(err) {}
&lt;/script&gt;
}}

今日:&amp;counter(today)
昨日:&amp;counter(yesterday)
合計:&amp;counter(total)    </description>
    <dc:date>2010-09-06T23:40:01+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/61.html">
    <title>部品表</title>
    <link>http://www15.atwiki.jp/arduino/pages/61.html</link>
    <description>
      -LM35 DZ
温度センサ
http://akizukidenshi.com/catalog/g/gI-00116/

-LM385 Z-1.2
電圧リファレンス

-LM385 Z2.5
電圧リファレンス

-TL431
2.495V
電圧リファレンス
http://akizukidenshi.com/catalog/g/gI-01434/

-TLP552
MIDI用フォトカプラ

-TL082CP
オペアンプ
http://www.nahitech.com/nahitafu/mame/mame3/optable.html#TL081

-NE555
タイマー

-LA1800
AM/FMラジオIC    </description>
    <dc:date>2010-07-24T22:05:26+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/62.html">
    <title>Arduinoで赤外線リモコン</title>
    <link>http://www15.atwiki.jp/arduino/pages/62.html</link>
    <description>
      Chanさんの「赤外線リモコン制御モジュール」
http://elm-chan.org/fsw/irctrl/00index.html
をArduinoのライブラリにしてみました。

ライブラリとして２つのファイルを配置してください。
-libraries/IrCtrl/&amp;ref(IrCtrl.cpp)
-libraries/IrCtrl/&amp;ref(IrCtrl.h)
Counter1とTimer2を使うのでArduino標準のPWMがいくつか使えなくなっているはずです。

**サンプルスケッチ IrCtrlTest.pde
 #include &lt;Debounce.h&gt;
 #include &lt;IrCtrl.h&gt;
 
 int PIN_LED      = 13;
 int PIN_IR_IN    =  8; // PB0 ICP1 Counter1
 int PIN_IR_OUT   =  3; // PD3 OC2B Timer2
 int PIN_BUTTON_1 =  2;
 Debounce button1 = Debounce(20, PIN_BUTTON_1);
 
 void setup()
 {
  Serial.begin(115200);
  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_BUTTON_1, INPUT);
  digitalWrite(PIN_BUTTON_1, HIGH); // pull-up
 
  pinMode(PIN_IR_OUT, OUTPUT);
  pinMode(PIN_IR_IN,  INPUT);
  digitalWrite(PIN_IR_IN, HIGH); // pull-up
  IR_initialize();
 
  Serial.println(&quot;IR remote control test program&quot;);
 }
 
 void loop()
 {
  // digitalWrite(PIN_LED, !digitalRead(PIN_IR));
 
  ir_recv_loop();
 
  if(button1.update() &amp;&amp; !button1.read()){
    if (IR_xmit(AEHA, (uint8_t*)&quot;\xAA\x5A\x8F\x12\x14\xF1&quot;, 6*8)){
      Serial.println(&quot;OK AQUOS VOLUME UP&quot;);
    }
  }
 }
 
 void ir_recv_loop(void)
 {
  if(IrCtrl.state!=IR_RECVED){
    return;
  }
 
  uint8_t d, i, l;
  uint16_t a;
 
  l = IrCtrl.len;
  switch (IrCtrl.fmt) {	/* Which frame arrived? */
 #if IR_USE_NEC
  case NEC:	/* NEC format data frame */
    if (l == 32) {	/* Only 32-bit frame is valid */
      Serial.print(&quot;N &quot;);
      Serial.print(IrCtrl.buff[0], HEX); Serial.print(&quot; &quot;);
      Serial.print(IrCtrl.buff[1], HEX); Serial.print(&quot; &quot;);
      Serial.print(IrCtrl.buff[2], HEX); Serial.print(&quot; &quot;);
      Serial.print(IrCtrl.buff[3], HEX); Serial.println();
    }
    break;
  case NEC|REPT:	/* NEC repeat frame */
    Serial.println(&quot;N repeat&quot;);
    break;
 #endif
 #if IR_USE_AEHA
  case AEHA:		/* AEHA format data frame */
    if ((l &gt;= 48) &amp;&amp; (l % 8 == 0)) {	/* Only multiple of 8 bit frame is valid */
      Serial.print(&quot;A&quot;);
      l /= 8;
      for (i = 0; i &lt; l; i++){
        Serial.print(&quot; &quot;);
        Serial.print(IrCtrl.buff[i], HEX); 
      }
      Serial.println();
    }
    break;
  case AEHA|REPT:	/* AEHA format repeat frame */
    Serial.println(&quot;A repeat&quot;);
    break;
 #endif
 #if IR_USE_SONY
  case SONY:
    d = IrCtrl.buff[0];
    a = ((uint16_t)IrCtrl.buff[2] &lt;&lt; 9) + ((uint16_t)IrCtrl.buff[1] &lt;&lt; 1) + ((d &amp; 0x80) ? 1 : 0);
    d &amp;= 0x7F;
    switch (l) {	/* Only 12, 15 or 20 bit frames are valid */
    case 12:
      //xprintf(PSTR(&quot;S12 %u %u\n&quot;), d, a &amp; 0x1F);
      Serial.print(&quot;S12 &quot;);
      Serial.print(d, HEX);        Serial.print(&quot; &quot;);
      Serial.print(a &amp; 0x1F, HEX); Serial.println();
      break;
    case 15:
      //xprintf(PSTR(&quot;S15 %u %u\n&quot;), d, a &amp; 0xFF);
      Serial.print(&quot;S15 &quot;);
      Serial.print(d, HEX);        Serial.print(&quot; &quot;);
      Serial.print(a &amp; 0xFF, HEX); Serial.println();
      break;
    case 20:
      //xprintf(PSTR(&quot;S20 %u %u\n&quot;), d, a &amp; 0x1FFF);
      Serial.print(&quot;S20 &quot;);
      Serial.print(d, HEX);        Serial.print(&quot; &quot;);
      Serial.print(a &amp; 0x1FFF, HEX); Serial.println();
      break;
    }
    break;
 #endif
  }
  IrCtrl.state = IR_IDLE;		/* Ready to receive next frame */
 }    </description>
    <dc:date>2010-07-24T21:48:34+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/29.html">
    <title>本格的にArduino/温度センサー</title>
    <link>http://www15.atwiki.jp/arduino/pages/29.html</link>
    <description>
      *温度センサー

**LM61CIZ
http://akizukidenshi.com/catalog/g/gI-02726/
4つで200円の温度センサー。
 ■汎用の高精度ＩＣ温度センサーです
 ■測定範囲：−３０℃〜１００℃
 ■温度係数：＋１０ｍＶ／℃
 ■動作電圧範囲：＋２．７〜＋１０Ｖ
 ■出力インピーダンス：８００Ω
 ・Ｖｏ＝（＋１０ｍＶ／℃×Ｔ℃）＋６００ｍＶ
 　　　　　＋１００℃／＋１６００ｍＶ
 　　　　　　＋８５℃／＋１４５０ｍＶ
 　　　　　　＋２５℃／＋８５０ｍＶ
 　　　　　　　　０℃／＋６００ｍＶ
 　　　　　　−２５℃／＋３５０ｍＶ
 　　　　　　−３０℃／＋３００ｍＶ 

**単純な温度取得

#image(http://www2.atpaint.jp/arduino/src/OB1237021707221.png)

 int ledPin = 13;
 int templPin = 5;
 
 void setup() {
  analogReference(INTERNAL);
  Serial.begin(19200);
 }
 
 void loop()
 {
  int val;
  double volt;
  double templ;
  val = analogRead(templPin); // 0-1023 / 1.1Vで1024になる
  volt = 1.1*val/1024.0;
  templ = (volt-0.6)*100.0; // 10mV=1c
  Serial.print(val);   Serial.print(&quot; / &quot;);
  Serial.print(volt);  Serial.print(&quot;V / &quot;);
  Serial.print(templ); Serial.println(&quot;C&quot;);
 
  delay(1000);
 }


**複数回データを取得して平均する
 int ledPin = 13;
 int templPin = 5;
 
 void setup() {
  analogReference(INTERNAL);
  Serial.begin(19200);
 }
 
 #define SAMPLING_COUNT 30
 void loop()
 {
  int val;
  int i;
  double volt;
  double templ;
  val = 0;
  for(i=0; i&lt;SAMPLING_COUNT; i++){
    val += analogRead(templPin);
    delay(10);
  }
  val = val/SAMPLING_COUNT;
  volt = 1.1*val/1024.0;
  templ = (volt-0.6)*100.0; // 10mV=1c
  Serial.print(val);   Serial.print(&quot; / &quot;);
  Serial.print(volt);  Serial.print(&quot;V / &quot;);
  Serial.print(templ); Serial.println(&quot;C&quot;);
 
  delay(700);
 }
ブレが小さくなる。


**LM35DZ
http://akizukidenshi.com/catalog/g/gI-00116/
高精度ＩＣ温度センサ　ＬＭ３５ＤＺ　０〜１００℃
[LM35DZ]
通販コード　I-00116
発売日　2001/12/12
メーカー　NATIONAL SEMICONDUCTOR
摂氏（℃）に比例した電圧出力
◎例：
　０℃→０Ｖ
　２０℃→２００ｍＶ
◆測定温度範囲：０〜１００℃
◆精度：±1℃
◆温度係数：10.0mV/℃
◆電源電圧：ＤＣ４Ｖ〜２０Ｖ　低消費電流：６０μA
◆低出力インピーダンス：０．１Ω
◆T0-92パッケージ

ピン配置はLM61CIZと同じだが出力全圧が違う。




**LM61CIZ vs LM35DZ
 void setup() {
  analogReference(INTERNAL);
  Serial.begin(115200);
 }
 
 void task_LM61CIZ()
 {
  static int pin     = 5;
  static int sum     = 0;
  static int samples = 0;
  double volt;
  double templ;
 
  sum     += analogRead(pin);
  samples += 1;
 
  if(30&lt;samples){
    volt = 1.1*sum/samples/1024.0;
    templ = (volt-0.6)*100.0; // 10mV=1c
    Serial.print(&quot;LM61CIZ: &quot;);
    Serial.print(sum);   
    Serial.print(&quot; / &quot;);
    Serial.print(volt);  
    Serial.print(&quot;V / &quot;);
    Serial.print(templ); 
    Serial.println(&quot;C&quot;);
    sum     = 0;
    samples = 0;
  }
 }
 
 void task_LM35DZ()
 {
  static int pin     = 4;
  static int sum     = 0;
  static int samples = 0;
  double volt;
  double templ;
 
  sum     += analogRead(pin);
  samples += 1;
 
  if(30&lt;samples){
    volt = 1.1*sum/samples/1024.0;
    templ = volt*100.0; // 10mV=1c
    Serial.print(&quot;LM35DZ : &quot;);
    Serial.print(sum);   
    Serial.print(&quot; / &quot;);
    Serial.print(volt);  
    Serial.print(&quot;V / &quot;);
    Serial.print(templ); 
    Serial.println(&quot;C&quot;);
    sum     = 0;
    samples = 0;
  }
 }
 
 void loop()
 {
  task_LM61CIZ();
  task_LM35DZ();
  delay(100);
 }

 LM61CIZ: 27723 / 0.96V / 36.07C
 LM35DZ : 10155 / 0.35V / 35.19C
 LM61CIZ: 27722 / 0.96V / 36.06C
 LM35DZ : 10156 / 0.35V / 35.19C
 LM61CIZ: 27721 / 0.96V / 36.06C
 LM35DZ : 10153 / 0.35V / 35.18C
 LM61CIZ: 27728 / 0.96V / 36.08C
 LM35DZ : 10158 / 0.35V / 35.20C
 LM61CIZ: 27721 / 0.96V / 36.06C
 LM35DZ : 10148 / 0.35V / 35.17C
 LM61CIZ: 27724 / 0.96V / 36.07C
 LM35DZ : 10155 / 0.35V / 35.19C
 LM61CIZ: 27726 / 0.96V / 36.08C
 LM35DZ : 10161 / 0.35V / 35.21C







参考URL
-http://nekosan0.bake-neko.net/structure_analog_in.html
-http://www.musashinodenpa.com/arduino/ref/index.php?f=0&amp;pos=1949    </description>
    <dc:date>2010-07-24T14:02:57+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/60.html">
    <title>LED Cube</title>
    <link>http://www15.atwiki.jp/arduino/pages/60.html</link>
    <description>
      LED Cubeを作る

まずは3x3x3。

#image(KC3A0072.jpg,width=320,height=240)
#image(KC3A0073.jpg,width=320,height=240)
#image(KC3A0074.jpg,width=240,height=320)
#image(KC3A0075.jpg,width=240,height=320)
#image(KC3A0076.jpg,width=240,height=320)

横にあるmega328pは[[激安Arduinoの作り方２]]の方法で内蔵RC8MHzで動くArduino化されています。
ブレッドボードに挿したFT232RLから電源/GND/TX/RX/RESETをつなぐとArduinoIDEからスケッチを書き込めます。

&amp;youtube(http://www.youtube.com/watch?v=TVklCFiaTwU){425,350}
&amp;youtube(http://www.youtube.com/watch?v=9xbNGZXyoeY){425,350}

電池をつなげば単体で動作OK。
パスコンもリセットのプルアップも無いいい加減なものですが。


*LED Cubeのスケッチ

#highlight(c){{
void setup()
{
  for(int n=2; n&lt;=13; n++){
    pinMode(n, OUTPUT);
    digitalWrite(n, HIGH);
  }
}

int layers[3];
char pattern = 0;

#define XY_PIN0 2
#define XY_ON(l)     digitalWrite(XY_PIN0+l,    HIGH);
#define XY_OFF(l)    digitalWrite(XY_PIN0+l,    LOW );

#define LAYER_PIN0 11
#define LAYER_ON(l)  digitalWrite(LAYER_PIN0+l, LOW );
#define LAYER_OFF(l) digitalWrite(LAYER_PIN0+l, HIGH);

#define nop() __asm(&quot;nop&quot;);

void loop()
{
  static int loop_count = 0;
  loop_count++;

  pattern = millis()/1000 / 20 % 4 +1;

  switch(pattern){
//  case 0: pattern_0(); break;
  case 1: pattern_1(); break;
  case 2: pattern_2(); break;
  case 3: pattern_3(); break;
  case 4: pattern_4(); break;
/*
  case 5: pattern_5(); break;
  case 6: pattern_6(); break;
  case 7: pattern_7(); break;
*/
  }

  led_dynamic_drive();
}

// ---------------------------------------------------
// OFF
void pattern_0(void)
{
  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;
}

// ---------------------------------------------------
// 
void pattern_1(void)
{
  static int wait = 0;
  if(wait++&lt;200){ return; }
  wait = 0;

  static int counter = 0;
  counter = (counter+1)%27;
  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;
  layers[counter/9] = 1&lt;&lt;(counter%9);
}

// ---------------------------------------------------
// 2
void pattern_2(void)
{
  static int wait = 0;
  if(wait++&lt;200){ return; }
  wait = 0;

  char tbl[] = {0,1,2,5,8,7,6,3};
  static int counter = 0;
  counter = (counter+1)%(4*8);
  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;
  int l = counter/8;
  if(l==3){ l = 1; }
  layers[l] = 1&lt;&lt;(tbl[((counter)%8)]);
}


// ---------------------------------------------------
// 3
void pattern_3(void)
{
  static int wait = 0;
  if(wait++&lt;200){ return; }
  wait = 0;

  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;
  for(int i=0; i&lt;3; i++){
    int n = random(0, 27);
    int l = n/9;
    layers[l] = 1&lt;&lt;(n%9);
  }
}

// ---------------------------------------------------
// 4
void pattern_4(void)
{
  static int wait = 200;
  if(0 &lt; wait--){ return; }
  static double xt_a = 0;
  static double xt_b = 0;
  if(xt_a==0){
    xt_a = 0.1+analogRead(0)/1500;
    xt_b = 0.2+analogRead(0)/1500;
  }
  xt_a = yuragi(xt_a);
  xt_b = yuragi(xt_b);
  wait = 30 + (int)(200*xt_a) + (int)(50*xt_b);

  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;

  static char pos[] = {0,0,0};
  static char state = 0;
  static char dir = 0; // 012=xyz 
  static char vel = 0;
  
  switch(state){
  case 0:
    dir += random(1,3);
    dir = dir%3;
    if(pos[dir] == 0){
      vel = +1;
    }else{
      vel = -1;
    } 
    state = 1;
    break;
  case 1:
    state = 0;
    break;
  }
  pos[dir] += vel;

  layers[pos[2]] = 1&lt;&lt;(pos[0]+pos[1]*3);
}

// ---------------------------------------------------
// 5
void pattern_5(void)
{
  static int wait = 200;
  if(0 &lt; wait--){ return; }
  static double xt = 0;
  if(xt==0){
    xt = 0.1+analogRead(0)/1500;
  }
  xt = yuragi(xt);
  wait = 20 + (int)(300*xt);

  layers[0] = 0x000;
  layers[1] = 0x000;
  layers[2] = 0x000;

  static char pos[] = {0,0,0};
  static char state = 0;
  static char dir = 0; // 012=xyz 
  static char vel = 0;
  
  switch(state){
  case 0:
    dir += random(1,3);
    dir = dir%3;
    if(pos[dir] == 0){
      vel = +1;
    }else{
      vel = -1;
    } 
    state = 1;
    break;
  case 1:
    state = 0;
    break;
  }
  pos[dir] += vel;

  layers[pos[2]] = 1&lt;&lt;(pos[0]+pos[1]*3);
}



// 1/fゆらぎ 間欠カオス
double yuragi(double xt)
{
  if(xt&lt;0.5){
    return (xt + 2*   xt *   xt );
  }else{
    return (xt - 2*(1-xt)*(1-xt));
  }
}

void led_dynamic_drive()
{
  for(int l=0; l&lt;3; l++){
    LAYER_ON(l);    
    for(int n=0; n&lt;9; n++){
      if( layers[l] &amp; (1&lt;&lt;n) ){
        XY_ON(n);
      }else{
        XY_OFF(n);
      }
      delayMicroseconds(1);
      XY_OFF(n);
      delayMicroseconds(10);
    }
    LAYER_OFF(l);
  }
}


}}    </description>
    <dc:date>2009-11-02T00:20:42+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/59.html">
    <title>電子工作メモ</title>
    <link>http://www15.atwiki.jp/arduino/pages/59.html</link>
    <description>
      良く忘れることの覚え書き

→[[AVRの仕様メモ]]

*抵抗の読み方
-&amp;color(brown){■}&amp;color(black){■}&amp;color(brown){■}茶黒茶 100Ω
-&amp;color(red){■}&amp;color(red){■}&amp;color(brown){■}赤赤茶 220Ω
-&amp;color(yellow){■}&amp;color(purple){■}&amp;color(brown){■}黄紫茶 470Ω
-&amp;color(brown){■}&amp;color(black){■}&amp;color(red){■}茶黒赤 1KΩ
-&amp;color(red){■}&amp;color(red){■}&amp;color(red){■}赤赤赤 2.2KΩ
-&amp;color(yellow){■}&amp;color(purple){■}&amp;color(red){■}黄紫赤 4.7KΩ
-&amp;color(brown){■}&amp;color(black){■}&amp;color(orange){■}茶黒橙 10KΩ
-&amp;color(red){■}&amp;color(red){■}&amp;color(orange){■}赤赤橙 22KΩ
-&amp;color(yellow){■}&amp;color(purple){■}&amp;color(orange){■}黄紫橙 47KΩ
-&amp;color(brown){■}&amp;color(black){■}&amp;color(yellow){■}茶黒黄 100KΩ


http://www.jarl.or.jp/Japanese/7_Technical/lib1/teikou.htm

*コンデンサの読み方

-101 100pF
-102 1000pF = 0.001uF
-103 0.01uF
-104 0.1uF

-223 0.022uF
-333 0.033uF
-473 0.047uF
-474 0.47uF

http://www.jarl.or.jp/Japanese/7_Technical/lib1/konden.htm

*単位
ナノ、ピコ、マイクロ・・・    </description>
    <dc:date>2009-11-01T12:52:03+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/58.html">
    <title>AVRの仕様メモ</title>
    <link>http://www15.atwiki.jp/arduino/pages/58.html</link>
    <description>
      ピン配置、機能、arduinoの端子番号との対応、fuse等。
よく使う情報をデータシートから抜き書きする予定。    </description>
    <dc:date>2009-11-01T12:21:46+09:00</dc:date>
  </item>
    <item rdf:about="http://www15.atwiki.jp/arduino/pages/56.html">
    <title>激安Arduinoの作り方２</title>
    <link>http://www15.atwiki.jp/arduino/pages/56.html</link>
    <description>
      秋月でmega328Pが250円だ。２台目からは自作で安く済ませる作戦。

1台目のarduinoは持っていて2台目に3000円出したくない。
生AVRを買ってきて完成品にarduinoを埋め込む方法。
macです。

1台目は完成品をオススメします。
http://www.switch-science.com/products/detail.php?product_id=3
やっぱりDuemilanoveが無難。

激安Arduinoの作り方１→http://www15.atwiki.jp/arduino/pages/35.html

#contents()

*材料

**AVR mega328P
http://akizukidenshi.com/catalog/c/catmega/
-mega328P 250円 http://akizukidenshi.com/catalog/g/gI-03142/
mega8=200円、88p=250円、168p=230円なので328pで良いと思う。(価格は2009/11/1現在)


**ＦＴ２３２ＲＬ　ＵＳＢシリアル変換モジュール 950円
http://akizukidenshi.com/catalog/g/gK-01977/
-ブートローダを焼くためのAVRライタとして使う
-その後はarduino書き込み用アダプタとして使う(DTRで自動リセット)
-デバッグ用のシリアル通信アダプタとして使う

Duemilanoveを改造して使うこともできるんだけど何かと不便なので１個ほしい。


***ジャンパ(todo)
-J1 3ピンの方
外側2つをショートしてる。意味は(todo)

-J2 2ピンの方
USBから電源供給する→ショート
USBから電源供給しない→はずす(1ピンだけにつけとくとなくさない)


***ドライバ
http://www.ftdichip.com/Products/FT232R.htm
VCPとD2XXの2種類あり、両方インストールします。

-ブートローダ書き込み、fuse書き込み等、AVRライタとして使うとき
VCPを無効にしてD2XXを使います。

-arduinoスケッチのアップロード、デバッグ用シリアル通信アダプタとして使うとき
VCPを有効にしてVCPを使います。
/dev/tty.usbserial-A9005bvIの様な名前の普通のシリアルポートです。

使い方の詳細→ BitBang Mode AVR-Writer on Mac http://www15.atwiki.jp/arduino/pages/23.html


**ブレッドボード＆配線材
http://akizukidenshi.com/catalog/c/cbread/

最低この大きさのが必要。
http://akizukidenshi.com/catalog/g/gP-00285/

完成品は超小規模でユニバーサル基板にするのも面倒な場合、これも良いです。
http://akizukidenshi.com/catalog/g/gP-00315/


**Arduino 017


**オプション
-パスコン
-リセット用コンデンサ



*FT232RL+ブレッドボードでブートローダを焼く

http://www.geocities.jp/arduino_diecimila/avr-writer/index.html
配線はこの通り。

**bootloaderのバージョン
-1MHz RC    : 省電力
-8MHz RC    : 普通
-16MHz XTAL : Arduino標準
3パターンあればいいかな。
(todo 1MHz版は必要か？消費電力/電池の持ち時間がどれぐらい違うのか。むしろもっと遅いクロックのバージョンがいい？)


**bootloaderを作る
8MHz内蔵RC発振の設定。

#highlight(){{

# /Applications/Arduino.app/Contents/Resources/Java/hardware/bootloaders/atmega/Makefile
# =======================================================================
# mega328p_default_fuse: [l:62,h:D9,e:7]
# (mega328p 8MHz RC)
# FUSE: -e -U lfuse:w:0xE2:m -U hfuse:w:0xDA:m -U efuse:w:0x07:m
atmega328p_8MHzRC: TARGET = atmega328p_8MHzRC
atmega328p_8MHzRC: MCU_TARGET = atmega328p
atmega328p_8MHzRC: CFLAGS += &#039;-DMAX_TIME_COUNT=F_CPU&gt;&gt;4&#039; &#039;-DNUM_LED_FLASHES=1&#039; -DBAUD_RATE=19200 -DDOUBLE_SPEED
atmega328p_8MHzRC: AVR_FREQ = 8000000L
atmega328p_8MHzRC: LDSECTION  = --section-start=.text=0x7800
atmega328p_8MHzRC: $(PROGRAM)_atmega328p_8MHzRC.hex

#/Applications/Arduino.app/Contents/Resources/Java/hardware/boards.txt
atmega328p_8MHzRC.name=Arduino ATmega328P_8MHzRC
atmega328p_8MHzRC.upload.protocol=stk500
atmega328p_8MHzRC.upload.maximum_size=30720
atmega328p_8MHzRC.upload.speed=19200
atmega328p_8MHzRC.build.mcu=atmega328p
atmega328p_8MHzRC.build.f_cpu=8000000L
atmega328p_8MHzRC.build.core=arduino

# ---- 
$ cd /Applications/Arduino.app/Contents/Resources/Java/hardware/bootloaders/atmega
$ rm ATmegaBOOT_168_atmega328p_8MHzRC.hex; make atmega328p_8MHzRC
$ sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
$ ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m328p ¥
   -vv -B 4800 -e -U lfuse:w:0xE2:m -U hfuse:w:0xDA:m -U efuse:w:0x07:m
$ ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m328p ¥
   -vv            -U flash:w:ATmegaBOOT_168_atmega328p_8MHzRC.hex:i
$ sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext

}}

不安定な場合、MAX_TIME_COUNTを調整する必要があるかもしれない
→http://hp.vector.co.jp/authors/VA000177/html/ATmega328PA4CEfuse.html

BAUD_RATEは57600だと安定しなかった(8MHz RC)

[[AVRの仕様メモ]]

**スケッチ転送
-ArduinoIDEでBlinkをひらく。
- Tools -&gt; Board でデバイス選択。
- Tools -&gt; Serial Port でシリアルポートを選択。
- 転送ボタンを押す。
- 上手いタイミングでリセットをかける。(AVRの1ピンとGNDをちょこんとショートさせる。)


**自動リセット回路
 FT232RLのDTR----0.1uF(104)----RESET
と接続すればArduino IDEからスケッチをアップロードするときに自動リセットがかかる。
（タイミングと運が良ければ。）



*参考URL
fuseが168と328で入れ替わっている件、リセット祭の件が地雷です。

http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?cmd=read&amp;page=AVR%2Fnews47&amp;word=AVR%2Fnews47#c0eb69cb
http://hp.vector.co.jp/authors/VA000177/html/2009-10.html#q30cd42c
http://hp.vector.co.jp/authors/VA000177/html/ATmega328PA4CEfuse.html
http://d.hatena.ne.jp/OGURAM/20091020#1256000038
http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf
http://d.hatena.ne.jp/pcm1723/20090823/1251042624    </description>
    <dc:date>2009-11-01T12:19:04+09:00</dc:date>
  </item>
  </rdf:RDF>

