[[Arduino勉強会]]

#contents

2015/01/17からのアクセス回数 &counter;

** lbeDuino誕生の理由 [#f5d8ba4a]
安く、ソースデバッガーが使えて、豊富なライブラリーが使える開発環境を作ろうと少しずつ開発を進めてきました
[[lbed]]
ですが、Arduinoのシールドを意識しながら、lbeDuinoと言う形で整理してみたいと思います。

この記事は、鈴木哲哉さんの著書
[[作って遊べるArduino互換機 >http://www.amazon.co.jp/dp/4883378802/]]
に強く影響を受けています。
Arduinoのシールドとの変換シールドを作れば、安くて簡単な万能基板が使えることは、
気軽に電子工作を楽しむ第一歩になると考えたからです。

lbeDuinoでは、プログラムの開発はLpcExpresso Ver.6以降を使っています。
デバッガには、トラ技のARMデバッガを使用しましたが、LPC-LINK, LPC-LINK2も使えます。

*** Arduino風NeXtPino(LPC1114FN28) [#p3ef7d31]
最初は、LPC1114FN28でArduinoシールドを使えるボードを探したところ、
ITショップ「えとせとら」で[[NeXtPino>http://itcorp24.cart.fc2.com/ca0/21/]]
を見つけました。
((NeXtPinoにLPC-LINKでBlinkプログラムを動かしているところ))

早速購入して、lbedを移植して試してみました。

&ref(NeXtPino.png);


しかし、lbedのライブラリで動作確認を進めていくと、いくつか問題点がでてきました。

- D13にSWCLKを割り当てているため、LPC-LINKでデバッグできない。((LPC-LINKの接続でエラーになる))
- D0にRESETを割り当てているため、DigitalOutに使えない

*** lbeDuinoの作成方針 [#ae716563]
Arduino勉強会では、ProtoSnap Pro Mini を使っているので、シリアル通信とUSBからの電源供給は、
FTDI USBシリアル変換アダプターを使います。
シリアル変換アダプターを購入されるのなら、
スイッチサイエンスの
[[FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)>https://www.switch-science.com/catalog/1032/]]
が便利かと思います。

&ref(FTDI_USB_Serial.png);



ピンの使い方は、mbed LPC1114FN28を参考にしました。


&ref(pinout_dip28-20131006-.png);



*** lbeDuinoの回路図 [#ze4e30fb]
手書きで申し訳ありませんが、lbeDuinoの回路を以下に示します。


&ref(lbeDuino_hand_sch.png);



*** lbeDuinoの組み立て [#f2a5d3c5]
出来上がったlbeDuinoは、以下の様になりました。((かっこ悪くてハンダ面をおみせできなくてすみません。))

&ref(lbeDuino_brd.png);




*** lbeDuinoの動作確認 [#y9510da1]
Arduinoの動作確認と言えばblinkなので、lbeDuinoでも以下の様なlbeDuino_Blink.cpp作って動作を確認しました。

今回Arduino版のlbedと同じスケッチが使えるようにサンプルプログラムをArduino風に書きました。

lbedのArduino版については、[[Arduino/Arduinoでmbedユーザライブラリーを動かす]]を参照してください。

ledをDigitalOutのインスタンスとして作成し、LEDのオン・オフをled = !ledのように書けるところがmbed風
のプログラミングの分かりやすいところです。

#pre{{
#include"lbed.h"

DigitalOut led(D13);

void setup() {}

void loop() {
    led = !led;
    wait_ms(1000);
}

}}

** lbedユーザライブラリの動作確認 [#f653abcf]
これまで作ったlbed用のユーザライブラリをlbeDuinoで動かしてみます。

*** テキストLCD(TextLCD) [#dfc4313d]
mbedのTextLCDをlbedで動かしてみます。

3.3Vで動作するLCDは、オレンジボードに載せたものだけなので、以下の様にオレンジボードと接続して
動作を確認しました。

| オレンジボード | lbeDuino |h
| p24(rs) | D0 |
| p26(e) | D1 |
| p27(d4) | D2 |
| p28(d5) | D3 |
| p29(d6) | D4 |
| p30(d7) | D5 |

動作確認をしたときの画像は、以下の通りです。

&ref(TextLCD.png);

*** TextLCDの動作確認 [#uc3ea540]
TextLCDの場合も、mbedのTextLCDの例題がそのまま使えます。

Arduino風に書いたlbeDuino_TextLCD.cppは、以下の通りです。リセットするとHello Worldが上手く表示できないので、
少し調整が必要ですが、なんとか動きそうです。

#pre{{
#include "lbed.h"
#include "TextLCD.h"

DigitalOut led(D13);
TextLCD lcd(D0, D1, D2, D3, D4, D5);     // rs, e, d4-7
int     count = 0;

void setup() {
     lcd.print("Hello World!");
}

void loop() {
     lcd.locate(0, 1);
     lcd.print("Count=");
     lcd.print(count++);
     led = !led;
    wait_ms(1000);
}
}}


*** シリアル通信 [#h71f9024]
パソコンとのシリアル通信(Serial)をArduinoのシリアルモニタを使ってテストしてみます。

シリアルを使う時には、FTDI USBシリアル変換アダプターを接続し、Rx, Txのジャンパーを結線します。

&ref(Serial.png);



*** シリアルの動作確認 [#d253f617]

シリアルの動作確認にlbeDuino_Serial.cppを作成し、予めArduinoのシリアルモニターを起動し、
ボーレイトを9600にセットして下さい。

#pre{{
#include "lbed.h"

DigitalOut myled( LED1);
DigitalOut myled(D13);
Serial pc(D0, D1);

void setup() {
     pc.baud(9600);
     pc.println("Hello World!");
}

void loop() {
     char c = pc.read();
     pc.write(c + 1);
     myled = !myled;
}
}}

最初にHello Worldを出力し、次に入力した文字の次の文字を返します。abcefgと入力するとbcdfghと返してきます。

&ref(Serial_Monitor.png);




** コメント [#bc6b8ae8]
#vote(おもしろかった[3],そうでもない[0],わかりずらい[0])


皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。

スパム防止に画像の文字列も入力してください。
#comment_kcaptcha


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc