最終更新:2018-06-18 (月) 18:21:36 (2100d)
Arduino/バージョン
https://www.arduino.cc/en/Main/ReleaseNotes
統合
- 2016年12月23日ごろ、Arduinoの2陣営(arduino.ccとarduino.org)が同時にArduino 1.8.0?を発表し、今までArduino 1.6?.X(arduino.cc)とArduino 1.7?.X(arduino.org)に分かれていたArduino IDEが、一本化されました。
- https://synapse.kyoto/tips/ArduinoIDE1_8_0/page001.html
Arduino 1.8.5 (2017/09/29)
Arduino 1.8.4 (2017/08/23)
Arduino 1.8.3? (2017/05/31)
Arduino 1.8.2? (2017/03/22)
Arduino 1.8.1? (2017/01/09)
Arduino 1.8.0? (2017/12/20)
Arduino 1.7.7? (2015/09/19, SRL)
Arduino 1.7.5? (2015/06/30, SRL)
Arduino 1.6.13? (2015/11/22, LLC)
Arduino 1.6.5? (2015/06/15, LLC)
r5 (2015/08/28)
r4 (2015/08/27)
r3 (2015/07/20)
r2 (2015/06/17)
Arduino 1.0.1 (2012/05/21)
開発環境(IDE)
- IDEが国際化され、複数の言語に翻訳された。国際化と日本語への翻訳をしたShigeru Kanemotoさんに感謝。その他の言語への翻訳を行ったたくさんの翻訳者にも感謝。より詳しい情報は http://arduino.cc/playground/Main/LanguagesIDE を参照のこと。
- Preferenceに言語を選択する項目を追加。デフォルトはOSのロケール。
- Arduino Leonardo (ATmega32U4)に対応する新しいアップロード処理。
- エディタのフォントサイズの設定を、シリアルモニタとメッセージコンソールにも適用。
- 変更があったファイルのみを再コンパイルすることによりスピードアップを図った(従来は毎回全ファイルを再コンパイルしていた)。
- コンソールのログファイル(stdout.txtとstderr.txt)を、IDE終了時に消去。
- ウインドウの最小サイズをより小さく。
- Find / Replaceダイアログを改良。
- ダブルクリックによる単語の選択、トリプルクリックによる行の選択をサポート。
- シリアルモニタを開くショートカットキーを押したときに、改行コードが入らないよう修正。
- アップロード時の検証(verification)を無効にできる設定項目を追加(スピードの改善)。
- Linux版にgccツールチェインを追加(既存のツールチェインを使用する場合はArduino付属のものを削除すること)。
- stk500からarduinoへのArduino Miniアップロードプロトコルを更新(オートリセットは機能しない)
コア/ライブラリ
- Arduino Leonardo (ATmega32U4)の公式サポート。ブートローダとコアに対するいくつかの修正を含む。
- Wire.write()にオーバーロードを追加(Wire.write(0)と記述可能に)。
- 20MHzクロック時のdelayMicroseconds()の動作を修正。
- ATmega1284P?の3つ目の外部割り込みをサポート。
- ATmega1284P?の基準電圧源に関する定数を更新。
- ATmega2560のために、リンカに --relaxフラグを追加。
- avr-gcc 4.5.1におけるEthernetライブラリのバグを修正。
- DHCPのホストネーム生成を修正。
- マイクロ秒からクロックサイクルへの変換を簡素化(pulseIn()の改善?)。
- いくつかの警告(warning)を修正。
- 先頭の文字が重複しているときのfindUntil()のバグを修正。
- pinMode()に INPUT_PULLUPオプションを追加。これにより、プルアップ抵抗を明示的に設定できる。
- 複数のUDPパケットを受信した時のバグを修正。
- Wireライブラリ(マスターモード)に、Repeated Startを発行する機能を追加。endTransmission()とrequestFrom()にブール型の引数を追加し、Stopを送る代わりにRepeated Startを送れるようにした。
- DHCPリースを更新するEthernet.maintain()を追加。
- Etehrnetを使用するスケッチがクラッシュする原因となるCLOSE_WAITバグを修正
- サーボのパルスタイミングの計算方法を修正。
- readString()関数、readStringUntil?()関数を追加。
Arduino 1.0 (2011/11/30)
- 開発環境(IDE)
- スケッチの拡張子を.pdeから.inoへ変更。Processingとの衝突を避けるため(inoはArduinoの末尾の3文字)。
- 新しいツールバーのアイコン。チェックマーク(verify)、右矢印(upload)を追加し、シリアルモニタのボタンを右端へ移動。シフトキーを押しながらUploadボタンを押すとToolsメニューで指定したライタ(programmer)を使ってアップロード。
- Preferenceを設定することで、コンパイル時とアップロード時により詳しいメッセージが表示される。
- 新しいカラーとAbout画像。
- 選択中のボードとシリアルポートの名前がエディタ下部に表示される(Wiringより)。
- コンパイル中とアップロード中にプログレスバーが表示される(Wiringより)。
- Core/ライブラリ
- シリアル通信を非同期に。Serial.print()等を実行するとデータはバックグラウンドで送信される。Serial.flush()の仕様は変更され、受信データを捨てるのではなく送信処理を留保。
- byte型データに対するSerial.print()の挙動が変更され、他のデータ型と同様に'1'、'2'、'3'のようなASCII文字が送信される。BYTEキーワードは廃止。1バイトのデータをそのまま送信する際はSerial.write()を使用する。
- Serialクラスに受信データをパースする機能を追加(Streamクラスを継承するEthernetClient?、SoftwareSerial、Wireなども同様)。Michael MargolisのTextFinder?ライブラリをベースにしており、データの検索を行うfind()やfindUntil()、文字を数値に変換するparseInt()やparseFloat()、バッファに複数バイトを読み込むreadBytes()やreadBytesUntil?()が使用可能に。これらの機能のタイムアウト処理はsetTimeout()で設定する。
- SoftwareSerialライブラリを再実装(Mikal HartのNewSoftSerialがオリジナル)。複数のインスタンスを生成可能。ただし、同時に受信できるのはひとつのインスタンスのみ。
- 文字列を格納する領域として、RAMの代わりにFlashメモリ(プログラムメモリ)を使用可能に。Serial.print(F("hello world"))のように、F("…")で文字列を指定。
- Stringクラスが再実装され、メモリ効率と堅牢性が向上した(by Paul Stoffregen)。trim()やtoUpperCase?()といったいくつかの関数は、新しいインスタンスを返す代わりに、元の値を変更する。
- EthernetライブラリがDHCPとDNSをサポート(Adrian McEwen?により統合された)。他のライブラリとの名前の衝突を避けるため、おもなクラスの名前が変更され、"Ethernet"が付けられた("Client"は"EthernetClient?"、"Server"は"EthernetServer?"、"UDP"は"EthernetUDP")。新たに加わったIPAddressクラスにより、アドレスの扱いが容易に。
- UDP APIは他のライブラリと近い仕様に変更され、送信パケットは標準的なwrite()、print()、println()といった関数で組み立てられることになった。これらの関数はbeginPacket()とendPacket()で囲まれる。受信パケットはparsePacket()でパースされ、available()、read()、peek()などを使って読み取られる。パケットの発信元はremoteIP()とremotePort()によって知ることができる(Adrian McEwen?による実装)。
- Wireライブラリもまた標準的なread()、write()を使用するよう変更された(従来はsend()とreceive())。送信時は、print()とprintln()も使用可能。
- SDライブラリで複数のファイルの同時openに対応。isDirectory()、openNextFile?()、rewindDirectory()といった関数を使って、ディレクトリ内の全ファイルを順に処理できる(Limor Friedに感謝)。
- ボード/ファームウエア
- Arduino Mini w/ ATmega328を追加。
- Windows用ドライバ(.inf files)と16U2ファームウエア(.hex files)を、rev.3ボード(Uno、Mega、Mega ADK)のために追加。
- 実装
- Arduino APIの宣言を提供するWProgram.hの名称をArduino.hに変更。Arduino 0022とArduino 1.0の両方で動作するライブラリを作成する際は、#ifdefを使って、ARDUINO定数が22か100かをチェックする。
- Streamに含まれるwrite()、print()、println()の返り値は、(voidではなく)出力されたバイト数を表すsize_t型となった。これによりStreamを継承する各クラスは適宜修正する必要がある。なお、write(str)関数は、print.h内でwrite(buf, len)を呼ぶ実装となっている。
- Client、Server、UDPという新たな抽象基底クラスが存在し、ネットワーク処理用のライブラリにポータビリティを提供している。
- Arduinoボードのピン定義(ピン名とポートレジスタ/ビットペアの対応)は新たに設けられたhardware/variants/フォルダに格納されている。各ボードが使用する定義はboards.txtでBOARD.build.variantという形式で指定される。
- 新しいvariant仕様のpins_arduino.hはSPIピンの位置やdigital/analogピンの数といった、ボードの特徴を表すマクロを提供する。
- Windows版とMac版のArduino Softwareに含まれるavrdudeは5.11にアップグレードされた(5.4のArduino対応版から変更)。
Arduino 0023 (2011/11/09)
Arduino 0022 (2010/12/24)
- SD card libraryを追加 http://arduino.cc/en/Reference/SD
- 文字を操作するマクロを追加(Wiringより)
- String.toInt()関数を追加
- coreをリファクタリングして、CPU名による#ifdefではなく、registerベースの方法に変更
- ボーレートの計算方法を修正し、8U2ファームウエアの57600baudでのシリアル通信に対応
- tone()関数の問題を修正
- SPI.setClockDivider?()の問題を修正
- ATmega2560におけるEEPROM libraryの問題を修正
- ハードウエアシリアルの割り込み処理を最適化
- pulseIn()のタイムアウト処理をパルスが発生するまでの間だけでなく、パルス長の計測中にも有効に
- copy as htmlの問題を修正('<'と'>'の問題も解決)
- アップロード時に有効なシリアルポートが見つからなかったときは、ポート選択のためのダイアログを表示
- シリアルモニタのウインドウサイズと改行コードの設定を保存
- 正規表現処理をoro.jarからjava.regexに変更
- エラーの表示をはやくするため、coreやライブラリよりも先にユーザーのスケッチをビルドするよう変更
- Windows用にアプリケーションアイコンをセット
Arduino 0021? (2010/10/02)
- ATmega8U2ファームウエアのVID/PIDコンビネーションを変更
- ピン9と10におけるanalogWrite()のバグを修正(Arduino Uno)
- Linuxの/dev/ttyACM*にするため、RXTXにパッチ
Arduino 0020? (2010/09/27)
- Arduino UnoとArduino Mega 2560?を新たにサポート
- UnoとMega 2560で使用されるATmega8U2のファームウエアを収録
- Unoで使用されるoptiboot bootloaderを収録
- Mega 2560で使用されるSTK500v2 bootloaderを収録
- 新しいアプリケーションアイコン
Arduino 0019 (2010/09/03)
- コア機能/ライブラリ
- イーサネットライブラリの改良(新しいSPIライブラリを使用のため、既存のコードは先頭に #include を追加する必要があります。
- SPIライブラリの追加
- アナログインプットピンへのエイリアス(A0、A1、etc)が追加されました。
- Stringクラスが追加されました。
- shiftIn()関数が追加されました。
- Firmataが新しくMegaとPIN情報の取得をサポートしました。
- delay()がより正確になりました。
- tone()終了後に(同じアナログPINで)PWMが使用可能になりました。
- Serial.peek() メソッドが追加されました。
- SerialオブジェクトにStreamをベースにしたクラスが追加されました。 (available()、write()、print()、println()などをPrintクラスから実行可能になります)
- digitalWrite()やpinMode()中の割り込みが無効になります。
- Arduino MegaでINTERNALのアナログリファレンスがINTERNAL1V1とINTERNAL2V56に変更されました。
- 環境
- Boardメニューに Arduino Fio が追加されました。
- BoardメニューにArduino Pro と Arduino Pro Mini (5V / 16 MHz)が追加されました。
- Processing 1.1 とコードの同期が行われ、多くの変更が取り込まれました。
- avr-gcc と avr-g++ からの、エラーなどのメッセージの変換が修正されました。
- FTDI接続のLinuxで自動リセットのため、アップロード時にRTSをセットするようにしました。
- シリアルモニターでスクロールの制御が出来るようになりました。
- シリアルモニターで終端文字の選択が出来るようになりました。
- タブ表示で拡張子以外が同じファイルの表示に関する不具合が解消されました。
- サードパーティー製の機器がプログラマーとして選択出来るようになりました。
- サンプル
- 参照を容易にするため整理と番号付けが行われました。
http://fromgoldenwells.blog.so-net.ne.jp/2010-09-04
Arduino 0018 (2010/01/29)
- 指定した周波数を発するtone()関数とnoTone()関数を追加
- Serial.end()を追加
- floatとdoubleの出力時の精度を指定するパラメータを追加
- Firmataの最新バージョンに対応
- LiquidCrystal?ライブラリでRWピンが正常に動作しないバグを修正
- delayMicroseconds()内でも割り込みを有効に
- 割り込みでmicros()の戻り値が不正になるバグを修正
- Arduino Megaのアナログ入力8-15の不具合を修正
- Processing 1.0.9のコードベースと同期し、スケッチを閉じる際の保存の失敗といった問題を修正
- サードパーティ製ハードウエアをサポートするために、SKETCHBOOK/hardwareフォルダを追加し、従来のhardwareフォルダをミラーリング
- ショートカットCtrl-Shift-M / Command-Shift-Mでシリアルモニタを起動
- シフトキーを押しながらツールバーのVerify / Compile / Uploadボタンを押すと、詳細なメッセージを表示
- アップロード時のビルドをappletディレクトリではなく、テンポラリディレクトリへ移動(Mac OS XのディスクイメージやLinuxのアプリケーションディレクトリからアップロードできない問題を解消)
- スケッチに同名の.cppと.hがあるとインクルードできない問題を修正
- Mac OS Xのディスクイメージ(.dmg)を改良し、Applicationsフォルダへのショートカットや、新しいFTDIドライバを追加
Arduino-0017 (2009/08/12)
- Tom Igoeにより多くのサンプルスケッチが追加・修正された
- Limor FriedによるLiquid Crystalライブラリが更新された。詳細はリファレンスを参照
- Firmataライブラリがv2.1(rev.25)に更新された
- ServoライブラリがMichael Margolisのものにリプレースされ、Arduinoボードでは12、Arduino Megaでは48のサーボがサポートされるようになった。
- シリアル通信時のボーレートの計算がより正確になった(8MHz Arduinoでの倍速問題も解決)
- Processing 1.0.3のコードベースに移行し、多くの改善が行われた(主な変更点は下記のとおり)
- Thomas Glaserによる新しいアイコンとAboutイメージ
- 複数のスケッチ・ウインドウに対応
- シリアルモニタが独立したウインドウで実行される
- Comment/Uncommentメニューの追加
- Increase Indent/Decrease Indentメニューの追加
- ライブラリをスケッチのディレクトリにおけるようになった(librariesフォルダを自分で作ってそこにunzip)
- ライブラリはスケッチと一緒にコンパイルされるようになり、ボードを変更したときの待ち時間が生じなくなった。ライブラリのソースコードを変更した際、.oファイルを削除する必要がなくなった
- Macでは(dmg中の)appファイルとして提供されるようになった
- Arduino Nano w/ ATmega328がBoardメニューに追加された
Arduino-0016 (2009/05/30)
- 3.3V/8MHz動作のATmega328Pを搭載したArduino ProとArduino Pro Miniに対応
- ATmega328P搭載のLilyPad Arduinoに対応
- Print、Serial、そしてEthernetライブラリに、write(str)とwrite(buf, size)の2つのメソッドが追加された。これにより、Ethernetでより効率的な(パケット数の少ない)通信が可能に
- EthernetライブラリのClientクラスの接続/切断処理を改善
- millis()とmicros()が使用するtimer0のオーバーフロー割り込みハンドラを最適化
- bit()マクロが15ビットまでしか処理できなかったバグを修正
- バージョンを表す定数ARDUINOを追加
- Tools > Boardメニュー内の順番を整理
- Toolsメニューに Copy as HTML コマンドを追加
- 時々発生していた Couldn't determine program sizeエラーに対処
- 依存関係を自動的に生成しMakefileにする機能を追加(?)
Arduino-0015 (2009/03/26)
- Arduino Megaに対応したようです。
Arduino-0014 (2009/03/07)
- Ethernet classのデバグが主な修正点です。
Arduino-0013 (2009/02/07)
- Printクラスに浮動小数点サポートを追加(Serial, Ethernet, LiquidCrystal?などで使用可能)。
- word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(), lowByte(), highByte()を追加
- ピン5,6のPWM出力が0まで行かなかった問題に対応
- キャスト・マクロを削除。これにより寄稿されたライブラリが0012で動作しなかった問題が解決
- pulseIn()を変更。立ち上がりエッジを計測するときはLになるのを待ってから計測開始、逆もまたしかり、ということかな
- random()の生成する値のレンジが狭いバグを修正
- delay()を修正。少なくとも指定したミリ秒分、停止するようになった(ちょっと短くなる場合があったってこと?)
- Ethernetライブラリがピン8,9に支障を及ぼすバグを修正
- EthernetライブラリのClientクラスで外向きのコネクションをそれぞれ異なるポートからに
- ATmega168のブートローダを修正。avrdudeに対応(シグネチャリクエストにレスポンス)し、EEPROM]データを正しくストア
- ATmega328Pをサポート。board.txtの修正とブートローダの再書き込みが必要になるが、アップロードスピード57600baud
- 不使用のファンクションをなくしてコンパイル後のサイズを縮小
- EEMEMディレクティブの使用を許すようコンパイルのプロセスを変更(EEPROMデータのアップロードはまだ不可)