GR-SAKURAライブラリv2.0を「GR‐SAKURAではじめる電子工作」のソースで確認してみた

ここによると、GR-SAKURAのライブラリが近日中に2.0になり、使用されるライブラリがRXduinoに代わりAND Technologies Research社の開発したArduino互換ライブラリになるそうです。

GR‐SAKURAではじめる電子工作」は当然v1.xxベースなので互換が無くなります。まだ評価段階ですが、現状どれぐらい違うのか確認してみます。

変わったところ

以下は、確認中に気が付いたところのみです。変更点の全てではありません。また内容の保証もありません。

※開発が進行中のためとても流動的です。最新情報は下記のスレッドで確認して下さい。
GR-SAKURA ライブラリV2.xxのスレ

共通して修正が必要な所

#include <rxduino.h>

#include <Arduino.h>
に置き換える必要があります。

(2014/5/12追記)rxduino.hのままで使用できるようになりました。

CDCドライバ

CDCドライバはテンプレートの中にあるファイルを使用します。
Driver/CDC_Demo.inf
USB_Driver/GR_SAKURA_USBCDC.inf
(2014/5/12追記)階層及び名前が変わりました。

Serialを使用するときはドライバのインストールが必要です。

シリアル

v1.xxのSerial.begin()は、 第一引数でスピード、第二引数でポートの指定でしたが、第二引数はビットやパリティの指定となりました。ポートはSerial(USB),Serial1(ポート0,1), Serial2(ポート6,7), Serial3(ポート24,26)が固定になります。

XBeeはSerial3になります。

タイマー割り込み

timer_regist_userfunc が無くなっています。
ArduinoはMsTimer2を使うようですが、どうなるのでしょう?

(2014/5/22追記)E2.00eにてMsTimer2や、KURUMI互換のattachIntervalTimerHandler、attachCyclicHandlerが使えるようになりました。

EEPROM、SDなど

インクルードファイル名が変わっており、v1.xxで必要だったインスタンスの作成は必要ありません。Arduinoとのソース互換性が高くなっています。
(2014/5/12追記)#include<rxduino.h>とした場合、従来通りに使えるようになりました。

Ethernet

インスタンスの作成が必要なくなっています。

Ethernet.beginの第一引数がオンボードを使うか(true)、シールドによる外部のものを使うか(false)の選択になっています。(Arduino非互換)

AnalogWirte

(2014/5/22追記)V1.xxはソフトウェアによるPWMで任意のピンが使用出来ましたが、V2.xxはハードウェアとなり、PWMが使えるポートが0〜7、11ピンのみになったようです。

また、analogWriteDACに相当するものは現在のところ無いようです。

その他

独自拡張だったanalogWriteFrequencyが無くなっています。(E2.00dにて解消済み)
当然特電HALもありませんので、toneの重奏も出来ません。(E2.00Eにて解消済み)
sprintfなどの使用には#include <stdio.h>が必要です。(E2.00dにて解消済み)

 

確認

2014/5/11現在
現在のところ、ビルドできるかの確認までです。
動作の確認が取れ次第、更新をしていく予定です。

2014/5/12更新
E2.00dにて確認。いくつかの問題が解消された。

2014/5/22更新
E2.00eにて確認。修正が必要な物も含めて全てビルドできることを確認した。

ソース 内容 バージョン ビルド 動作
1-1-1 サンプル E2.00c
2-2-1 LED を点滅させる E2.00c
2-2-2 スイッチを使う E2.00c
2-4-1 シリアル接続を使って、LED を点滅 E2.00c
2-4-2 可変抵抗器の角度を数値にして表示 E2.00c
3-1-1 LED を点滅させる E2.00c
3-1-2 色をさまざまに変化させる E2.00c
3-2-1 1秒ずつカウントアップ(7seg) E2.00c
3-2-2 ドットマトリクスの制御 E2.00e
「void draw_matrix( void ) {」を「void draw_matrix( unsigned long time ) {」に置き換え
「timer_regist_userfunc( draw_matrix );」を「attachIntervalTimerHandler( draw_matrix );」に置き換え
3-2-3 キャラクターLCD に文字を表示 E2.00c
3-3-1 スピーカーから音を出す E2.00c
3-4-1 距離を電圧で計測 E2.00d
3-4-2 距離をキャラクターLCD に表示 E2.00d
3-5-1 DC モータの制御 E2.00c
3-5-2 ステッピングモータの制御 E2.00c
3-5-3 サーボモータの制御 E2.00c
3-6-1 EEPROM に内容を記憶 E2.00d
3-6-2 ファイルの書き込み、読み込み、削除 E2.00d
「Serial.begin(38400, SCI_AUTO);」を「Serial.begin(38400);」に置き換え(ただし、すぐ処理が始まってしまうので注意)
3-7-1 インターネットに接続 E2.00c
「TEthernet Ethernet;」の行を削除
「Serial.begin(9800, SCI_AUTO);」を「Serial.begin(9800);」に置き換え(ただし、すぐ処理が始まってしまうので注意)
「Ethernet.begin(mac)」を「Ethernet.begin(true,mac)」に置き換え
「Ethernet.dhcp()」を「Ethernet.begin(true,mac)」に置き換え
「client.connect( Ethernet.gethostbyname(host), 80 )」を「client.connect( host, 80 )」に置き換え
3-8-1 赤外線通信 E2.00c
3-8-2 赤外線送信 E2.00d
3-8-3 XBee 通信 E2.00c
「Serial.begin( 9600, SCI_SCI2B ) ;」を「Serial3.begin( 9600 ) ;」に置き換え
以下「Serial」を「Serial3」に置き換え
4-1-1 電子ピアノ E2.00c
4-2-1 テルミンもどき E2.00e
※12、13ピンはPWMが使えなくなったので、0〜7、11ピンのいずれかに置き換えてください。
「#include <tkdn_tone.h>」を削除
「#define SPEAKER1 12」を「#define SPEAKER1 0」などに置き換え
「#define SPEAKER2 13」を「#define SPEAKER1 1」などに置き換え
「tone_start_ex ( SPEAKER1, freq1, 0 ,0 ) ;」を「tone ( SPEAKER1, freq1, 0 ) ;」に置き換え
「tone_start_ex ( SPEAKER2, freq2 ,0 ,1 ) ;」を「tone ( SPEAKER2, freq2 ,0 ) ; 」に置き換え
4-3 IRラジコン E2.00c
4-4 Twitter につぶやく「植木鉢センサ」 E2.00d
「TEthernet Ethernet;」の行を削除
「Ethernet.processPackets();」の行を削除
「client.connect( Ethernet.gethostbyname( HOST ), 80 )」を「client.connect( HOST, 80 )」に置き換え
「Ethernet.begin(mac)」を「Ethernet.begin(true,mac)」に置き換え
「Ethernet.dhcp()」を「Ethernet.begin(true,mac)」に置き換え

所感

ざっと見たところ、Arduino互換を重視する方向になっているようです。
便利に使えていた機能が無くなるのは退化のように感じられますが、長らくユーザから望まれていたGR-SAKURAライブラリのオープンソース化ですし、IDE for GRでGR-SAKURAが使えるようになるなどのメリットもありますので今後に期待したいところです。

投稿者:

ないん

30半ば過ぎで突然電子工作にはまりました。

2 thoughts on “GR-SAKURAライブラリv2.0を「GR‐SAKURAではじめる電子工作」のソースで確認してみた”

  1. Serialで待たせるのはよく以下のセットでまとめちゃいます。

    Serial.begin(9600);
    while(!Serial.available());
    Serial.read();//dummy

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です