Arduino 1.0 リリース
Posted by arms22 on 2011年12月19日

11月30日にArduino 1.0がリリースされました。1つの節目としてさまざまな変更が加えられおり、標準ライブラリや内部構造が大きく変更されています。既存のスケッチやライブラリは少なからず手を入れないと動作しない場合が多いようです。。僕が公開しているスケッチやライブラリも修正しないと動かないもがほとんどです。。順次対応していきます。
Arduino Software
http://arduino.cc/en/Main/Software
Arduino Software Release Notes
http://arduino.cc/en/Main/ReleaseNotes
開発環境
- 新しい拡張子
従来の .pde から .ino に変わりました。"Arduino"の最後の3文字、"ino"の部分だそうです。 - 新しいツールバーアイコンに新しいカラースキーム
- 選択されているボードとシリアルポートの表示
- プログレスバーの追加
コンパイルとアップロードの進捗が画面右下に表示されます。また環境設定で compilation と upload にチェックを入れておくとコンパイルとアップロードの詳細情報がコンソールに表示されます。
コア/標準ライブラリ
- Serial送信の非同期化
Serial.print()などデータの送信はバックグラウンドで行われるようになりました。Serial.flush()は受信データを破棄する処理から、送信データがすべて送信されるまで待つ処理に変更されました。 - Serial.print(byteVal)は数値を文字として送信
byte型を数値のまま送信したい場合は Serial.write(byteVal) を使います。あわせてBYTEキーワードも廃止されました。
From:
To:Serial.print(val, BYTE);
or
Serial.print(byteVal);Serial.write(byteVal);
- Streamクラスに文字列パース関数を追加
データを検索する find() と findUntil()、文字を数値に変換する parseInt() と parseFloat()、タイムアウト付きの読み込み関数 readBytes()とreadBytesUntil()が追加されました。setTimeout()を使ってタイムアウト時間を設定します。find(target);
findUntil(target,term);
readBytes(buffer,length);
readBytesUntil(term,buffer,length);
parseInt();
parseFloat();
setTimeout(timeout); - SoftwareSerialクラスの再実装
NewSoftSerial が標準ライブラリとして取り込まれました。NewSoftSerialは複数のシリアルポートを制御することができます。受信できるのは1度に1つのポートだけです。 - プログラムメモリに格納された文字列のプリントに対応
次のように F() マクロで文字列をかこってやるとプログラムメモリから文字列が読み出されます。Serial.print(F("hello world")).
- Stringクラスの再実装
より安定したメモリ効率の良いバージョンになりました。 - EthernetライブラリにDHCPとDNSのサポート追加
begin(macAddress)とするとDHCPでIPアドレスを割り当てられます。localIP()でDHCPで割り当てられたIPアドレスが取得できます。Clientの接続はホスト名を指定して接続することができます。またいくつかのクラスにEthernetプリフィクスが追加されました。ClientはEthernetClient、ServerはEthernetServer、UDPはEthernetUDPに変更さました。IPアドレスを表す IPAddress クラスが追加されました。
DHCPによるIPアドレスの割り当て
クライアントの接続 From:Ethernet.begin(macAddress);
To:Client client(server, 80);
if(client.connect())EthernetClient client;
if(client.connect("www.google.com",80)) - UDP API変更
他のストリーム系ライブラリと同様 write()、print()、println() に統一されました。データの送信はbeginPacket()とendPacket()で囲む必要があります。受信パケットのチェックはparsePacket()。送信元情報を取得する remoteIP() と remotePort() が追加されました。EthernetUDP udp;
udp.beginPacket(ip,port);
udp.write(data);
udp.endPacket(); - Wire API変更
send()→write()、receive()→read()。Streamクラスを継承しているので print() や println() なども使えます。
From:
To:Wire.send(0x10);
Wire.receive();Wire.write((byte)0x10);
Wire.read(); - SDライブラリの複数ファイルオープン対応
ディレクトリを操作するための関数 isDirectory()、openNextFile()、rewindDirectory() が追加されました。
内部
- Arduino APIを定義したヘッダの名称変更
WProgram.h→Arduino.h に変更されました。以下のようにARDUINOマクロをチェックするコードを入れることでArduino 0022以前のバージョンと互換性を持たせることができます。#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif - Printクラスのwrite()、print()、println()の戻り値をvoid型からsize_t型に変更
write() は書き込まれたサイズを返します。Printクラスを継承するクラスは次のようにwrite()の戻り値を書き換え必要があります。
From:
To:void write(uint8_t);
size_t write(uint8_t);
- ネットワークアクセス用の抽象クラスClient、Server、UDPを追加
EthernetClient、EthernetServer、EthernetUDPはこれからのクラスを継承しています。 - Arduinoボードのピン定義ファイルを追加
harware/variantsディレクトリ以下にArduinoボード毎のピン割り当てを定義したファイルを配置しています。 - pins_arduino.h にArduinoボードの仕様に関する情報を追加(デジタル・アナログピンの数やSPIやI2Cの位置など)
#define NUM_DIGITAL_PINS
#define NUM_ANALOG_INPUTS
const static uint8_t SS;
const static uint8_t MOSI;
const static uint8_t MISO;
const static uint8_t SCK;
const static uint8_t SDA;
const static uint8_t SCL;
const static uint8_t LED_BUILTIN;
関連情報
Arduino 1.0 now available.
http://arduino.cc/blog/2011/11/30/arduino-1-0-now-available/
Arduino IDEが新しくなりました(その2)
http://www.eleki-jack.com/FC/2011/12/arduino-ide2.html
Arduino IDEが新しくなりました(その1)
http://www.eleki-jack.com/FC/2011/12/arduino-ide1.html
オープンソースの自作マイコンシステムArduino、ソフトウェアバージョン1.0がリリースされる
http://sourceforge.jp/magazine/11/12/02/0444216
Arduino 1.0 is Out: Here’s What You Need To Know
http://blog.makezine.com/archive/2011/12/arduino-1-0-is-out-heres-what-you-need-to-know.html
Initial Review ? Arduino v1.0 IDE
http://tronixstuff.wordpress.com/2011/12/10/initial-review-arduino-v1-0-ide/
Ads by Google
0 Comments
Leave a reply
該当の記事は見つかりませんでした。