FrontPage

※小江戸らぐLinuxUser2009夏号を見て来られた方へ.
インターバルタイマの回路にダイオードが足りていません.そのままの回路だとArduino を壊してしまう可能性があるので,こちらのペ−ジを参照してダイオードを追加するか,リレーをフォトカプラに置き換えて下さい.

入手

スイッチサイエンスにて,Arduino Duemilanove 328 を購入.

注文したのが2009/05/13 01:00 過ぎ.クロネコメール便速達で14日午前には到着.
#3000円以上で送料無料.Paypal を使えば振り込み手数料も要らない.
http://farm3.static.flickr.com/2353/3541321523_c7125b2952_m.jpg http://farm4.static.flickr.com/3270/3542127628_bd2e8cc01f_m.jpg http://farm4.static.flickr.com/3401/3541322943_eed5818297_m.jpg http://farm4.static.flickr.com/3301/3541323431_04908466fc_m.jpg

本体基盤のみですが、後はUSB-A(オス) <-> USB-B(オス) があればとりあえずOK です。 以前マルツでジャンク扱い@100を買ってたのがあったのでそれを使いました。
#巻き取り式も欲しいな
http://www.amazon.co.jp/exec/obidos/ASIN/B000LZ58YW/matokensmeme-22/ref=nosim ELECOM 巻取式USBケーブル USB(A)-USB(B) 0.8m(ブラック)
http://www.amazon.co.jp/exec/obidos/ASIN/B0009NQUX4/matokensmeme-22/ref=nosim ELECOM 巻き取り式USB1.1ケーブル USB(A)オス-USB(B)オス 1.5m USB-RL15

その後,Arduino Pro mini 5V/3.3V を購入.ピンヘッダを取り付けて使ってます.

秋葉原取り扱い店舗

最近マルツでも扱ってるみたい.でも少し高いかな.

先日気づいたのですが,千石電商本店2F でも沢山扱っていました.値段も普通.
Duemilanove 328/MEGA/nano/LilyPad?/Pro mini 5V/Pro mini 3.3V/イーサネットシールド/LilyPad? 関連等ありました♪

若松でも取り扱い開始したみたい.今度確認してきます.

そういや、お知らせ忘れ。秋葉原の千石電商さん、若松通商さんでもArduinoなどを売ってくださってます。急ぐときは秋葉原に走っていくってテがありますよ。

http://twitter.com/ssci/status/3356612292 20090823 若松5F にてArduino Duemilanove 328/nano/XBEE/XBEE シールド/イーサネットシールド/Arduioをはじめようセット/CQのArduino互換ボードを作るの部品セットを確認
CQ を除くとパッケージ等からスイッチサイエンスの取扱いっぽい。価格も多分スイッチサイエンスと同じ。

Linux 開発環境設定

Debian lenny / Ubuntu9.04 では/dev/ttyUSB0 としてさくっと認識。

[43300.162003] usb 2-2: new full speed USB device using uhci_hcd and address 3
[43300.423043] usb 2-2: configuration #1 chosen from 1 choice
[43300.431241] usb 2-2: New USB device found, idVendor=0403, idProduct=6001
[43300.431262] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[43300.431270] usb 2-2: Product: FT232R USB UART
[43300.431275] usb 2-2: Manufacturer: FTDI
[43300.431280] usb 2-2: SerialNumber: A7006QdR
[43300.764789] usbcore: registered new interface driver usbserial
[43300.764789] usbserial: USB Serial support registered for generic
[43300.764789] usbcore: registered new interface driver usbserial_generic
[43300.764789] usbserial: USB Serial Driver core
[43300.785357] usbserial: USB Serial support registered for FTDI USB Serial Device
[43300.785357] ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
[43300.785357] ftdi_sio: Detected FT232RL
[43300.785357] usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
[43300.785357] usbcore: registered new interface driver ftdi_sio
[43300.785357] ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver
  • Arduino - Software
    より最新版を入手。今回はarduino-0015-linux.tgz を入手。

展開してarduino-0015 以下に移動。arduino に実行権をつけて実行。

% tar xvzf arduino-0015-linux.tgz
% cd arduino-0015
% chmod u+x arduino
% ./arduino 

起動するがエラー吐きます。

java.io.IOException: Cannot run program "avr-g++": java.io.IOException: error=2, そのようなファイルやディレクトリはありません
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
	at java.lang.Runtime.exec(Runtime.java:593)
	at java.lang.Runtime.exec(Runtime.java:466)
	at processing.app.Library.build(Library.java:436)
	at processing.app.LibraryManager.buildAllUnbuilt(LibraryManager.java:228)
	at processing.app.Editor.prepareLibraries(Editor.java:384)
	at processing.app.Base.<init>(Base.java:161)
	at processing.app.Base.main(Base.java:104)
Caused by: java.io.IOException: java.io.IOException: error=2, そのようなファイルやディレクトリはありません
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
	at java.lang.ProcessImpl.start(ProcessImpl.java:65)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
	... 7 more

この辺を見ると、gcc-avr が足りないらしい。

ということでinstall

% sudo apt-get install gcc-avr

再度実行すると今度は以下のようなメッセージ

Experimental:  JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7

Sprite.cpp:20:20: error: stdlib.h: そのようなファイルやディレクトリはありません
In file included from Sprite.cpp:24:
Sprite.h:23:22: error: inttypes.h: そのようなファイルやディレクトリはありません
In file included from Sprite.cpp:24:
Sprite.h:30: error: ‘uint8_t’ does not name a type
Sprite.h:31: error: ‘uint8_t’ does not name a type
Sprite.h:32: error: ‘uint8_t’ does not name a type
Sprite.h:33: error: ‘uint8_t’ does not name a type
Sprite.h:34: error: ‘uint8_t’ does not name a type
Sprite.h:35: error: ‘uint8_t’ does not name a type
Sprite.h:36: error: ISO C++ forbids declaration of ‘uint8_t’ with no type
Sprite.h:36: error: expected ‘;’ before ‘*’ token
Sprite.h:38: error: ‘uint8_t’ has not been declared
Sprite.h:38: error: ‘uint8_t’ has not been declared
Sprite.h:40: error: expected `)' before ‘width’
Sprite.h:41: error: expected `)' before ‘width’
Sprite.h:42: error: ‘uint8_t’ does not name a type
Sprite.h:43: error: ‘uint8_t’ does not name a type
Sprite.h:44: error: ‘uint8_t’ has not been declared
Sprite.h:44: error: ‘uint8_t’ has not been declared
Sprite.h:44: error: ‘uint8_t’ has not been declared
Sprite.h:45: error: ‘uint8_t’ does not name a type
Sprite.cpp:26: error: variable or field ‘init’ declared void
Sprite.cpp:26: error: ‘uint8_t’ was not declared in this scope
Sprite.cpp:26: error: ‘uint8_t’ was not declared in this scope
Sprite.cpp:36: error: expected `)' before ‘width’
Sprite.cpp:41: error: expected `)' before ‘width’

これはavr-libc のinstall で解決しました。

% sudo apt-get install avr-libc

これで正常起動。

この辺りはよく見たら本家ページにこのパッケージを入れなさいとか書いてあるのでそれに従えば起こらないはずですね><
ドキュメントに目を通さないばかりに要らぬ遠回りをしました。

設定

Linux はTools -> SerialPort? -> /dev/ttyUSB0 を選択。
#もしかしたら他にもUSB serial 機器が有れば別のデバイス名かもdmesg で確認しましょう.
Tools -> Bord -> Arduino Duemilanove を選択。
#初めBoard の選択が間違っていたのでUpload 時に

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

というerror になってしまった。

スイッチサイエンスで日本語化が行われています.

MacIDE起動しない

Java のアップデート以降ArduinoIDE0016 以前が起動しなくなりますが,とりあえず32bit mode にしたら動くようになります.
MacArduinoIDE32bit01.png MacArduinoIDE32bit02.png

現在は0017 が出ているのでそれを使えば問題なさそうです。

Sketch(HelloWorld? 的)

LED 表示.

IDE でArduin をはじめよう p.26 のsample を書いてみる。

/*
    Arduin をはじめよう p.26
    Blinking LED
*/

#define LED 13

void setup()
{
  pinMode(LED, OUTPUT);
}

void loop()
{
  digitalWrite(LED, HIGH);  // LED on.
  delay(1000);             //waite (ms)
  digitalWrite(LED, LOW);  // LED off.
  delay(1000);             //waite (ms)
}

再生ボタンみたいなVerify ボタンを押下。

Binary sketch size: 968 bytes (of a 14336 byte maximum)

となりました。大丈夫そう。

適当なLED をBoard の13(アノード) とGND(カソード) に接続。

続いて右から2番目のボタンのUpload to I/O Board でUpload
Arduino のTX/RX のチップLED がチカチカしてUp 完了。
IDE の方もDone uploading. と表示されます。

すると、LED が1秒毎に点滅します。

以下は5つのLED を使ってみた動画です。1個だと寂しいけどこのくらいになると一寸楽しい。

ちなみに、自己点滅LED と赤外線LED しか出て来なかったので赤外で試してます。 肉眼で確認できませんw

秋月で赤色LED 500個入り\500 で売ってたのでつい買ってきました.で,2列にしてみました.

LCD 表示.

http://farm4.static.flickr.com/3350/3542130030_327272a236_m.jpg
秋月電子で@500 なLCD モジュールを触ってみました.

Arduino Diecimila を使う の6番目を真似します.可変抵抗が無いので直結になってしまっています.一寸液晶が濃いです.
スケッチもほぼ丸写し.以下のような感じ.画面クリアがこれで良いのか不明>< lcd.clear() という物が使えるよう.

#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10 
// d0, d1, d2, d3 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
}

void loop()
{
  // LCD Clear
  lcd.setCursor(0,0);              // x,y -> 0,0
  lcd.print("                ");   // clear
  lcd.setCursor(0,1);              // x,y -> 0,1
  lcd.print("                ");   // clear
  delay(2000);                     //waite (ms)
  lcd.setCursor(0,0);
  lcd.print("hello world!");
  delay(2000);                     //waite (ms)
  lcd.setCursor(1,1);
  lcd.print("Hello Arduino.");
  delay(2000);                     //waite (ms)
}

以下動作時の動画.

Arduino17 からcreateChar() でLCD の外字がサポートされたようです.今度試してみよう.
http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=1032

ちなみに,はじめUSB のみで動かしていたらOS から電気食い過ぎと警告が出ました.電源必要ですね>_< その後出ないです.多分配線ミスってショートさせてた様です(怖
http://18.media.tumblr.com/PbZ8R7Tpanjy4h43z0USuXMPo1_500.png
秋月で買ってきた9V 1.2A プラグ系2.1mm 中+(@600)の物を繋げると警告は出なくなりました.

この辺りの仕様も以下の辺りを見ると書かれて居ます。

ボタン入力検知.

ArduinoSWe.png

ボタンOnでLED 点灯.

#define BUTTON1  7  // ButtonPin
#define LED1  13  // LED
int val = 0;

void setup(){
  pinMode(LED1, OUTPUT);  // LED
  pinMode(BUTTON1, INPUT);  // Button
}

void loop(){
  digitalWrite(LED1, digitalRead(BUTTON1));
}

ボタンを押すごとにLED On/Off 切り替え.

#define BUTTON1  7  // ButtonPin
#define LED1  13  // LED
int val = 0;
int old_val = 0;
int flag = 0;

void setup(){
 pinMode(LED1, OUTPUT);  // LED
   pinMode(BUTTON1, INPUT);  // Button
}

void loop(){
  val = digitalRead(BUTTON1);

  if((val == HIGH) && (old_val == LOW)){
    flag = 1 - flag;
    delay(200);
  }
  
  old_val == val;
  digitalWrite(LED1, flag);
    
}

はじめうまく動かなかったが,チャタリング用のdelay を大きめに取ると安定して動くようになった.

LM35DZ

秋月@150 の温度センサ.見た目普通のダイオード.LM35DZ は0℃のとき0V,それ以降1℃毎に10mV ずつリニアに上昇.
analogRead を使ってAD変換.analogRead は0~1023 で返される.0~5v に対応.

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val;
  double tmp;
  val = analogRead(2);  // センサ読み込み
  tmp = (double) val * 5.0 / 1024.0 * 100.0; // 温度計算
  Serial.println(val);
  Serial.println(tmp);
  delay(1000);
}

大体有ってると思う….

イーサネットシールド

http://www.flickr.com/photos/matoken/3764726481/

スケッチ filetwitetr_test.pde

Debug

printf debug ですが,以下のような感じでやってます. setup にSerial.begin(9600)

void setup(){
  Serial.begin(9600);
}

Debug したいところで,Serial.println(hoge);

Serial.println(hensu);

この状態でArduino に転送して,IDE のSerialMonitor? ボタンを押すと下の方のウィンドウにSerial.print が表示されます.

SerialMonitor? ボタンを押したり,スケッチを転送し直すとバッファがクリアされてしまいます.データが必要な場合はコピー&ペースとして待避しておきましょう.
ちなみに,Linux の場合コンソールから起動するとそのターミナルにserial の情報がはき出されるのでデバッグの際は便利です.

その他.

インターバルタイマ

手持ちのカメラのレリーズケーブルの挙動を真似て自動的にシャッターを切り,インターバルタイマ化.
有線版 : Arduino/PENTAXケーブルスイッチCS-205
無線版(作成中) : Arduino/PENTAXリモートコントロールF

やってみたい/面白そうな部品

site

書籍

http://www.amazon.co.jp/exec/obidos/ASIN/4873113989/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873113849/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873114012/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873113792/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873113601/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873113385/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4873112982/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/B0021F0UXY/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/487311411X/matokensmeme-22/ref=nosim http://www.amazon.co.jp/exec/obidos/ASIN/4789812553/matokensmeme-22/ref=nosim

結構本出てます.私は「Arduinoをはじめよう」とMake:01~06 を持ってます.エレキジャックも欲しいけど近くの書店に置いてません>< 秋葉原の書泉ブックタワーで入手しました。エレキジャックに付いてる基板はeJackino かと思ったら違いました.eJackinoの基板は「アーデュイーノ互換マイコン・ボードを作る」に付いているよう.
「Arduinoをはじめよう」には日本語リファレンスが載ってるのが便利.
Make:07 出ました!>http://www.oreilly.co.jp/books/9784873114118/



spam 避けですcheck を付けて下さい

添付ファイル: fileMacArduinoIDE32bit02.png 991件 [詳細] fileMacArduinoIDE32bit01.png 403件 [詳細] filetwitetr_test.pde 1673件 [詳細] fileArduinoSWe.png 1013件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-08-23 (日) 14:05:11 (2704d)