ArduinoでキャラクタLCDに文字を表示させる
Posted by arms22 on 2013年02月27日

Arduino IDE標準のLiquidCrystalライブラリを使ってLCDを制御する方法を解説します。このライブラリは日立のHD44780ドライバと互換性のあるLCDを制御することができます。電子部品屋さんでよく見かけるほとんどのLCDはHD44780ドライバ互換なので、このライブラリが使えます。
Arduinoに接続する
今回、秋月電子の超小型LCDキャラクタモジュールを使いました。このLCDはピン配置が変則的で「14,13,12…3,2,1,16,15」と並んでいます。データシートをよく確認して間違えないよう接続してください。
可変抵抗はLCDのコントラストを調整する為に使います。可変抵抗の真ん中のピンをLCDのVOピンに接続します。LCDに何も文字が表示されない場合は抵抗の値を調整してください。

LCD vs Arduino
RS - ピン2
RW - GND
E - ピン3
DB4 - ピン4
DB5 - ピン5
DB6 - ピン6
DB7 - ピン7
RWピンは読み込みモードと書き込みモードを切り替えます。LCDからデータやレジスタ値を読み出す場合に使用しますが滅多に使いません。GNDに接続しておくと書き込みモードになります。
LCDにはRS,E,RW,D4〜D7の7ピンを使う4ビットモードとRS,E,RW,D0〜D7の11ピンを使う8ビットモードの2つのモードがあります。8ビットモードは4ビットモードに比べてデータ転送速度が倍になります。しかし低速なマイコンでは転送速度を上げてもあまりメリットがありません。4ビットモードを使った方が使用するピン数が減らせてワイヤリングの手間も省けるので良いでしょう。
LCDシールドキットを使う
ワイヤリングが面倒になったらLCDシールドキットを使うことをおススメします。ちょっとした文字の表示やデバッグ作業に便利なシールドです。

スイッチサイエンス - LCDシールドキット
http://www.switch-science.com/products/detail.php?product_id=724
ライブラリのインポート
Arduino IDE標準のLiquidCrystalライブラリを使います。ファイルメニューから"スケッチ→ライブラリを使用→LiquidCrystal"を選ぶと自動的にインポートされます。
Arduino - LiquidCrystal Library
http://arduino.cc/en/Reference/LiquidCrystal
サンプルスケッチ
文字と数値を表示するサンプルです。begin()でキャラクタLCDの文字数と行数を指定します。print()で文字・数値を表示します。改行は無視されるので、2行目に文字を表示したい場合はsetCursor()でカーソル位置を設定します。
#include <LiquidCrystal.h>
// 接続ピンをして指定してライブラリを初期化
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
//LCDシールドキット
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// 行と列を設定
lcd.begin(16, 2);
// メッセージを表示
lcd.print("Hello, Arduino!");
// 3秒待つ
delay(3000);
}
void loop() {
// カーソル位置を2行目に設定
lcd.setCursor(0, 1);
// リセットしてからの秒数を表示
lcd.print((float)millis() / 1000.0, 1);
// 100ms待つ
delay(100);
}
秀和システム
売り上げランキング: 54,023
秀和システム
売り上げランキング: 12,603
ArduinoでSDメモリカードを読み書きする
Posted by arms22 on 2013年02月20日

以前公開した「Arduinoで遊ぼう - SDメモリカードを読み書きする」の内容が古くなっていたので、新しく書き直しました。今回はArduino IDE標準のSDライブラリを使ってSDメモリカードを読み書きする方法を解説します。
最近のSDメモリカードは1GBを超える容量のものが非常に安価に発売されています。SDライブラリを使えばArduinoからも簡単に読み書きできるので、大規模なデータロギングに最適なストレージと言えます。
注意すべきこと
SDメモリカードの動作電圧は2.7~3.6Vです。SDカードにもよりますが書き込み時に電流は、100mAを超えて流れるものがあります。SDカードの電源は十分な容量を確保してください。
また5V動作のArduinoでSDメモリカードを使用する場合、Arduinoの出力電圧を5Vから3.3Vに変換する必要があります。今回、抵抗による分圧回路を使っていますが、信号がナマってしまってうまく通信できない場合があります。このような場合、電圧の変換には5Vトレラント機能が付いたバッファIC(74LVX245または74VHC125)や専用IC(2電源レベルシフタ)を使うことをお勧めします。
SDメモリカードには次の3種類の規格があります。
- SD - 最大2GB。FAT12・FAT16ファイルシステムを使用。
- SDHC - 2GB〜32GBまで。FAT32ファイルシステムを使用。
- SDXC - 32GB〜2TBまで。exFATファイルシステムを使用。
ピン配列
次の図はSDメモリカードとmicroSDメモリカードのピン配列を表しています。

SD端子 | microSD端子 | 機能 | 説明 |
9 | 1 | DAT2 | 未使用 |
1 | 2 | DAT3/CS | チップセレクト |
2 | 3 | CMD/DI | データ入力 |
3 | VSS | グランド | |
4 | 4 | VDD | 電源 |
5 | 5 | CLK | シリアルクロック |
6 | 6 | VSS | グランド |
7 | 7 | DAT0/D0 | データ出力 |
8 | 8 | DAT1 | 未使用 |
SDカードにはSDモードとSPIモードとよばれる2つのモードがあります。SDモードはSDカードの速度を最大限にいかした転送を行うモードです。SPIモードはCS/DI/CLK/DOの4つの端子を使った転送モードです。低速なマイコンとの通信に使われます。SDライブラリはSPIモードでSDカードにアクセスします。
Arduinoに接続する
SDメモリカードとの接続にはサンハヤトのmicroSD変換基板を使いました。変換基板が手に入らない場合は、SDカードアダプタ(micorSD-SD)にヘッダピンやワイヤを直接半田付けすると良いでしょう。電圧変換には抵抗分圧回路を使いました。抵抗値は1.8KΩと3.3KΩ。

Arduino vs SDメモリカード
ピン11 - DI (MOSI)
ピン12 - DO (MISO)
ピン13 - CLK (SCK)
ピン4 - CS
シールドを使ってArduinoに接続する
もっとお手軽・簡単に使いたい場合は、SDメモリカードスロットを搭載したシールドを使うと良いでしょう。例えば、イーサネットシールドやワイヤレスSDシールド、マイクロSDシールドなどです。これらのシールドには電圧変換用にバッファICなどが使われています。
シールドによってSDカードのCSに接続されているピンが異なるので注意すること。

Arduino イーサネットシールド R3
CS -> 4

ワイヤレスSDシールド
CS -> 4

SparkFun マイクロSDシールド
CS -> 8
SDライブラリのインポート
Arduino IDE標準のSDライブラリを使います。ファイルメニューから"スケッチ→ライブラリを使用→SD"を選ぶと自動的にインポートされます。
Arduino - SD Library
http://arduino.cc/en/Reference/SD
Arduino IDE 1.0.x以降では、複数ファイルの読み書きが同時に行えるようになりました。
SDライブラリにはいくつか制限があります。
- ファイル名は8文字+3文字までです。例えば「filename.txt」はOKですが、「filename_2013.text」はNGです。
- ファイルシステムはFAT16またはFAT32のみ対応しています。
- SDとSDHCのみ対応しています。SDXCは非対応です。
サンプルスケッチ(書き込み)
1秒間隔でアナログ入力0の値を読み取り、SDカードに書き込むサンプルです。
SD.open() の引数に FILE_WRITE を指定するとファイルを読み書きモードでオープンします。ファイルが存在しない場合は新しいファイルが作成され、すでにファイルが存在する場合は追記モードでオープンします。
print() や println() で数値や文字が書き込めます。バイナリデータを書き込む場合は、write() を使います。書き込み速度は一度に沢山のデータを書き込んだ方が速くなります。seek(0) でファイルの先頭からデータを書き込めます。
#include <SD.h>
// この値は使用しているシールドや基板に合わせて変更すること。たとえば、
// イーサーネットシールドは 4
// Adafruit のSDシールドは 10
// Sparkfun のSDシールドは 8
const int chipSelect = 4;
void setup()
{
// シリアルポート初期化
Serial.begin(9600);
while (!Serial) {
; // USBケーブルが接続されるのを待つ。この待ちループは Leonardo のみ必要。
}
Serial.print(F("Initializing SD card..."));
// SSピン(Unoは10番、Megaは53番)は使わない場合でも出力にする必要があります。
// そうしないと、SPIがスレーブモードに移行し、SDライブラリが動作しなくなります。
pinMode(SS, OUTPUT);
// SDライブラリを初期化
if (!SD.begin(chipSelect)) {
Serial.println(F("Card failed, or not present"));
// 失敗、何もしない
while(1);
}
Serial.println(F("ok."));
// 日付と時刻を返す関数を登録
SdFile::dateTimeCallback( &dateTime );
}
void loop()
{
// ファイルを開く
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// もしファイルが開けたら値を書き込む
if (dataFile) {
int value = analogRead(0);
dataFile.println(value);
dataFile.close();
// シリアルポートにも出力
Serial.println(value);
}
// ファイルが開けなかったらエラーを出力
else {
Serial.println(F("error opening datalog.txt"));
}
// 一秒待つ
delay(1000);
}
void dateTime(uint16_t* date, uint16_t* time)
{
uint16_t year = 2013;
uint8_t month = 2, day = 3, hour = 9, minute = 0, second = 0;
// GPSやRTCから日付と時間を取得
// FAT_DATEマクロでフィールドを埋めて日付を返す
*date = FAT_DATE(year, month, day);
// FAT_TIMEマクロでフィールドを埋めて時間を返す
*time = FAT_TIME(hour, minute, second);
}
次のように日時を返す関数を登録することで、ファイルの作成日時や変更日時が記録できます。
// 日付と時刻を返す関数を登録
SdFile::dateTimeCallback( &dateTime );
サンプルスケッチ(読み込み)
ファイルに書き込まれている値をシリアルモニタに出力するサンプルスケッチです。
SD.open() の引数を省略すると読み込み専用モードでオープンします。引数を省略した場合は FILE_READ を指定したことと同じになります。
available() は現在の位置から何バイト読み込めるか返します。available() の戻り値は int 型で読み込めるバイト数が32767を超える場合、戻り値は常に32767になります。ファイルのサイズは size() で取得できます。
read() は1byte読み出します。read(buffer, length) とした場合、lengthバイト分のデータをbufferに読み込みます。
position() は現在の読み込み位置を返します。seek() で読み込み位置を移動できます。
#include <SD.h>
// この値は使用しているシールドや基板に合わせて変更すること。たとえば、
// イーサーネットシールドは 4
// Adafruit のSDシールドは 10
// Sparkfun のSDシールドは 8
const int chipSelect = 4;
void setup()
{
// シリアルポート初期化
Serial.begin(9600);
while (!Serial) {
; // USBケーブルが接続されるのを待つ。この待ちループは Leonardo のみ必要。
}
Serial.print(F("Initializing SD card..."));
// SSピン(Unoは10番、Megaは53番)は使わない場合でも出力にする必要があります。
// そうしないとSPIがスレーブモードに移行し、SDライブラリが動作しなくなります。
pinMode(SS, OUTPUT);
// SDライブラリを初期化
if (!SD.begin(chipSelect)) {
Serial.println(F("Card failed, or not present"));
// 失敗、何もしない
while(1);
}
Serial.println(F("ok."));
// ファイルを開く
File dataFile = SD.open("datalog.txt");
// もしファイルが開けたら値をシリアルポートに出力する
if (dataFile) {
// 64byte単位で読み出す
byte buffer[64];
while (dataFile.available()) {
int length = dataFile.available();
if(length > 64){
length = 64;
}
dataFile.read(buffer, length);
Serial.write(buffer, length);
}
// 1byte単位で読み出す
// while (dataFile.available()) {
// Serial.write(dataFile.read());
// }
dataFile.close();
}
// ファイルが開けなかったらエラーを出力する
else {
Serial.println(F("error opening datalog.txt"));
}
}
void loop()
{
}
参考リンク
SDメモリカード - Wikipedia
http://ja.wikipedia.org/wiki/SDSDメモリカード
ArduinoでマイクロSDカードを使う - ラジオペンチ
http://radiopench.blog96.fc2.com/blog-entry-332.html
売り上げランキング: 552
売り上げランキング: 477,896
Dotsduino(ドッツデュイーノ)ハンダづけ
Posted by arms22 on 2013年02月18日

2015/10/31
LEDマトリクスの取り付け方向について追記しました。
2013/2/18
Dotsduinoバージョン2.0に合わせてはんだづけ手順を更新しました。
目次
- Dotsduino(ドッツデュイーノ)ハンダづけ
- Dotsduino(ドッツデュイーノ)のスケッチと回路図
- ブラウザ上で動くDotsduino用パターンエディタ「Dotsduino Designer」
イントロダクション
Dotsduinoのはんだづけの手順を解説します。Dotsduinoにはいくつかのバージョン(1.2と2.0)がありますが、はんだづけの手順はほとんど同じです。
バージョン1.2では内蔵発振器を使っていたため、スケッチのアップロードに時々失敗することがありました。バージョン2.0からはセラミック発振子を採用し、スケッチのアップロードに失敗しないようになりました。
バージョン2.0ではセラミック発振子のはんだづけを忘れないでください。セラミック発振子のはんづけを忘れるとマイコンが動作せず、スケッチのアップロードに失敗してしまいます。
部品リスト
まずは足りない部品がないか確認しましょう。
IC1 | ATmega328P | 1個 |
R1 | カーボン抵抗 10KΩ | 1個 |
R2~R9 | カーボン抵抗 100Ω | 8個 |
C1~C3 | 積層セラミックコンデンサ 0.1uF | 3個 |
ピンヘッダ 6ピン | 1個 | |
8x8ドットLEDマトリクス | 1個 | |
Dotsduino基板 | 1枚 | |
タクトスイッチ※2 | 1個 | |
U1 | セラミック発振子 8MHz※1 | 1個 |
※1...セラミック発振子はバージョン2.0のみ付属します。バージョン1.2では内蔵発信器を使用しているのでセラミック発振子は付属しません。
※2...タクトスイッチはバージョン2.0のみ付属します。
ハンダづけ(バージョン1.2)

背の低いカーボン抵抗からハンダづけしていきましょう。R1は10KΩ、R2~R9は100Ωです。R1のみ10KΩですので間違えずハンダづけしましょう。抵抗の足はできるだけ短く切ってください。

次にICとコンデンサ、ピンヘッダをハンダづけします。ICの向きに注意しましょう。写真右側にICの凹みがくるようにしてはんだづけします。スケッチを書き換えるつもりの人はこの段階で、スケッチを書き込めるか確認しましょう(バージョン2.0をご購入の方はセラミック発振子のはんだづけを行ってからスケッチの書き込みを行ってください)。こちらも基板から飛び出す足の長さはできるだけ短くしてください。

LEDマトリクスのハンダづけの前に、LEDマトリクスの4辺のうち、凹んだ2辺の内側の凸をカッターナイフで切り取ります。こうすることでDotsduino基板がLEDマトリクスの内側にすっぽり収まるようになります。

最後にLEDマトリクスをハンダづけします。LEDマトリクスはDotsduino基板の裏側に描かれたシルクと向きを合わせてハンダづけしましょう。

完成です。
ハンダづけ(バージョン2.0)

はんだづけの手順はバージョン1.2とほとんど同じ。まずは抵抗から。

続いてセラミックコンデンサ。セラミック発振子も忘れずに!

ICとピンヘッダ、タクトスイッチも忘れずに!

LEDマトリクスの凹凸または半円のでっぱりを基板のシルクと合わせるように、基板の裏側に取り付けて、部品面からはんだづけします。

以上で完成です。
Dotsduino(ドッツデュイーノ)のスケッチと回路図
Posted by arms22 on 2013年02月18日

2015/10/31 Arduino 1.6.5に合わせてDotsライブラリのインストール方法・スケッチのアップロード方法の記述を修正しました。
2015/4/18 デモ用スケッチで新しいBounceライブラリを使った時にコンパイルエラーが発生する問題を修正しました。
2013/6/19 Dotsライブラリに点灯パターンが反転する不具合が見つかりました。6/18以前のライブラリをお使いの方は新しいバージョンをダウンロードしてお使いください。
2013/2/18 過去のバージョンの組立説明書と回路図を追加しました。
目次
- Dotsduino(ドッツデュイーノ)ハンダづけ
- Dotsduino(ドッツデュイーノ)のスケッチと回路図
- ブラウザ上で動くDotsduino用パターンエディタ「Dotsduino Designer」
イントロダクション

Dotsduino(ドッツデュイーノ)の組立説明書と回路図、ライブラリとサンプルスケッチを公開します。
Dotsduino組み立てキット説明書-1.2c.pdf
Dotsduino組み立てキット説明書-1.2d.pdf
Dotsduino組み立てキット説明書-1.2e.pdf
Dotsduino組み立てキット説明書-2.0a.pdf
回路図

Dotsduinoはその名通り、Arduino互換機として作られています。ArduinoシリーズだとArduino Pro 8MHz 3.3Vが一番近い回路構成になっています。Dotsduinoは電池駆動を想定しているので電圧レギュレータは搭載していません。凡そ2.7V~5Vの範囲で動作します。スケッチの書き込みには別途USBシリアルアダプタが必要です。
dotsduino-v1.2c.pdf
dotsduino-v1.2d.pdf
dotsduino-v1.2e.pdf
dotsduino-v2.0a.pdf
dotsduino-v2.0b.pdf
Arduino Software
Dotsduinoの点灯パターンははArduinoのスケッチとして作られています。DotsduinoはArduino互換機として動作するので、Arduinoのスケッチがそのまま動作します。Arduinoはバージョン1.0以降(1.6.5推奨)
をお使いください。Arduinoは以下のURLからダウンロードできます。
Download the Arduino Software
http://arduino.cc/en/Main/Software
Dotsライブラリ
Dotsduinoに搭載されている8x8LEDドットマトリクスをダイナミック点灯する為のライブラリ「Dots」を用意しました。ライブラリにはサンプルスケッチ(ハートとかインベーダなど)が含まれています。これらサンプルを少し修正することで好きなパターンを表示させることができます。
Dotsライブラリ
https://github.com/arms22/Dots/archive/master.zip
Arduinoのメニューからスケッチ > Include Library > Add .ZIP Libraryを選んで、ファイル選択が面が表示されたら「Dots-master.zip」ファイルを選んでください。
Arduino - Libraries - Importing a .zip Library
https://www.arduino.cc/en/Guide/Libraries#toc4
サンプルスケッチ
Dotsライブラリには次のサンプルスケッチが含まれています。
- Dotsduinoデモ(dotsduino_demo)
- フリップ(flip_animation)
- ♥ビート(heartbeat)
- Hello Matrix(hello_matrix)
- インベーダー(inverder)
- インベーダーUFO(inverder_ufo)
- インベーダーカニ(inverder_kani)
- スクロール(scroll_animation)
- 波(wave_animation)
ファイル > スケッチの例 > Dotsで上記サンプルスケッチが開けます。Dotsduinoデモを書き込む場合、Bounce2ライブラリを別途インストールしてください。
スケッチ > Include Library > Manage Librariesを選んで検索窓に「Bounce2」と入力します。Bounce2ライブラリが一覧に表示されたらInstallボタンをクリックしてください。
http://playground.arduino.cc/code/bounce
スケッチのアップロード
スケッチを作成したらアップロードします。USBシリアルアダプタをDotsduinoに接続します。コネクタの向きに注意してください。DotsduinoとUSBシリアルアダプタのコネクタ部分に書かれている文字が一致するよう差し込んでください。
ツール > ボード > Arduino Pro or Pro Mini
ツール > プロセッサ > ATmega328(3.3V, 8MHz)
ツール > ポート > USBシリアルアダプタが繫がっているポート
を選択してください。そしてスケッチ > マイコンボードに書き込むを選ぶとスケッチがアップロードされます。
おまけ

ユニバーサル基板で作ってみたい人は↑の実態配線図を参考にしてください。キットと違って電流制限用の抵抗は省略しています。
参考リンク
Arduino 日本語リファレンス
http://www.musashinodenpa.com/arduino/ref/
Arduinoチュートリアル 基礎編
http://www.musashinodenpa.com/arduino/ref/index.php?f=2
売り上げランキング: 2,036
とても見やすく分かりやすいArduinoボードのピン配列図
Posted by arms22 on 2013年02月14日

2013/2/13 追記
Arduino Leonardo、Esploraのピン配列図も公開されました!
とても見やすく分かりやすいArduinoボードのピン配列図がArduino Forumで公開されているよ。
この図を描いたのはイタリアのpighixxxさん。オーストラリアのGraynomadさんのArduino Dueのピン配列図に触発されて描いたみたい。
pighixxxさんはArduino Uno・MEGA・Nano・Miniの図や、ATTiny・ATmega328・mATmega640・ATmega1280などIC・パッケージ別の図も描いている。
ATmega328のQFPパッケージのピン配列図。MacBookのパームレレストに貼っておきたくなります。
ボードのピン配列図(PDFファイル)は次のURLからダウンロードできます。
Unofficial Arduino Micro Pinout Diagram
Unofficial Esplora Pinout Diagram
Unofficial Leonardo Pinout Diagram
Arduino UNO Pinout Diagram - Arduino Forum
Arduino MEGA Pinout Diagram - Arduino Forum
Arduino NANO Pinout Diagram - Arduino Forum
Arduino MINI Pinout Diagram - Arduino Forum
Due pinout diagram - Arduino Forum
秀和システム
売り上げランキング: 82,599
Arduinoボードの違いまとめ(Uno, MEGA 2560, Leonardo, Due)
Posted by arms22 on 2013年02月06日

2013/2/4
デジタル入出力として使えるピンについて追記しました。またソフトウェアシリアルの制限についても追記しました。
2013/2/10
Arduinoボードのピン配列図を見ながら確認すると分かりやすいよ。
Arduino公式ページによると、現在Arduinoボードは15種類ほど存在します。搭載されているマイコンや動作電圧、動作クロック、形状の違いはあるものの、マイコン別にみると次の4つに分類できます。
- ATmega328系
Arduino Uno, Duemilanove, Mini, LilyPad, Nano, Pro, Pro Mini, Fio - ATmega2560
Arduino MEGA 2560, Mega ADK - ATmega32u4
Arduino Leonardo, Micro, LilyPad USB - AT91SAM3X8E
Arduino Due
基本スペック
それぞれのマイコンを代表してUno, Leonardo, MEGA 2560, Dueの違いについてまとめました。まずはおさらいもかねて基本スペックの比較から。
Uno | Leonardo | MEGA 2560 | Due | |
マイクロコントローラ | ATmega328 | ATmega32u4 | ATmega2560 | AT91SAM3X8E |
動作電圧 | 5V | 5V | 5V | 3.3V |
デジタル入出力 ()内はPWM出力 | 20本(6本) | 24本(7本) | 70本(15本) | 70本(12本) |
アナログ出力(DAC) | - | - | - | 2本(12bit) |
アナログ入力 | 6本(10bit) | 12本(10bit) | 16本(10bit) | 12本 |
フラッシュメモリ | 32KB | 32KB | 256KB | 512KB |
SRAM | 2KB | 2.5KB | 8KB | 96KB |
EEPROM | 1KB | 1KB | 4KB | - |
クロック | 16MHz | 16MHz | 16MHz | 84MHz |
参考価格※1 | 2,520円 | 2,100円※2 | 4,910円 | 4,980円 |
※2...ピンソケットあり版の価格
デジタル入出力の本数がオフィシャルサイトと異なっていますが、これはアナログ入力をデジタル入出力として使った場合を考えて、この様に記載しています。
Dueの動作電圧は3.3V。既存のシールドを使う場合は動作電圧に注意する必要があります。
入出力ピン
次の表は各機能に対応するピンを表しています。
Uno | Leonardo | MEGA 2560 | Due | |
デジタル入出力 | 0〜13 14〜19(A0〜A5) | 0〜13 14(MISO) 15(SCK) 16(MOSI) 17(SS) 18〜23(A0〜A5) | 0〜53 54〜69(A0〜A15) | 0〜53 54〜65(A0〜A11) 66(DAC1) 67(DAC2) 68(CANRX) 69(CANTX) |
PWM出力 | 3, 5, 6, 9, 10, 11 | 3, 5, 6, 9, 10, 11, 13 | 2〜13 44〜46 | 2〜13 |
アナログ入力 | A0〜A5 | A0〜A5 A6〜A11(4, 6, 8, 9, 10, 12) | A0〜A15 | A0〜A11 |
DAC出力 | - | - | - | DAC1 DAC2 |
LED | 13 | 13 | 13 | 13 |
いくつかのアナログ入力ピンはデジタルピンとして使えます。例えばUnoのアナログ入力ピンA0〜A5はデジタルピンの14〜19として使えます。
Leonardoのアナログ入力ピンは12本あり、いくつかのデジタルピンはアナログ入力ピンとして使えます。括弧内はアナログ入力ピンとして使えるデジタルピンを表しています。
DueにはDAC出力が2本あり、音声出力用のライブラリが提供されています。
外部割り込み
次の表は割り込み番号に対応するピンを表しています。
ボード | INT0 | INT1 | INT2 | INT3 | INT4 | INT5 |
Uno | 2 | 3 | - | - | - | - |
Leonardo | 3 | 2 | 0 | 1 | - | - |
MEGA 2560 | 2 | 3 | 21 | 20 | 19 | 18 |
Due | ※1 | 下記を参照 |
INT0とINT1に対応するピンがUnoとLeonardoでは入れ替わっているので注意しましょう。
Dueの外部割り込みはすべてのデジタルピンで使えます。attachInterrupt()にピン番号を直接指定して使います。
ハードウェアシリアル
次の表はハードウェアシリアルの送信(TX)と受信(RX)のピンを表しています。
インスタンス | Uno | Leonardo | MEGA 2560 | Due |
Serial | 0 (RX), 1 (TX) | 下記参照 | 0 (RX), 1 (TX) | 0 (RX), 1 (TX) |
Serial1 | - | 0 (RX), 1 (TX) | 19 (RX), 18 (TX) | 19 (RX), 18 (TX) |
Serial2 | - | - | 17 (RX), 16 (TX) | 17 (RX), 16 (TX) |
Serial3 | - | - | 15 (RX), 14 (TX) | 15 (RX), 14 (TX) |
LeonardoのSerialはPCとのUSBシリアル通信に使われます。またDueにはUSBシリアル通信専用のSerialUSBがあります。
ソフトウェアシリアル
次の表はソフトウェアシリアルに使えるピンの一覧です。Leonardo・MEGA 2560では受信に使えるピンに制限があります。
受信(RX) | 送信(TX) | |
Uno | 0〜19 | 0〜19 |
Leonardo | 8, 9, 10, 11 14(MISO), 15(SCK), 16(MOSI) | 0〜23 |
MEGA 2560 | 10, 11, 12, 13, 50, 51, 52, 53 62, 63, 64, 65, 66, 67, 68, 69 | 0〜69 |
Due | 0〜69 | 0〜69 |
SPI
次の表はSPIのMOSI・MISO・SCK・SSのピンを表しています。
ボード | MOSI | MISO | SCK | SS (slave) | SS (master) |
Uno | 11 or ICSP-4 | 12 or ICSP-1 | 13 or ICSP-3 | 10 | - |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | - | - |
MEGA 2560 | 51 or ICSP-4 | 50 or ICSP-1 | 52 or ICSP-3 | 53 | - |
Due | ICSP-4 | ICSP-1 | ICSP-3 | - | 4, 10, 52 |
LeonardoとDueのMOSI・MISO・SCKピンはICSPヘッダにあります。

Wikipedia - Atmel AVRより抜粋
TWI(I2C)
次の表はTWI(I2C)のデータ(SDA)とクロック(SCL)のピンを表しています。
インスタンス | Uno | Leonardo | MEGA 2560 | Due |
Wire | A4 (SDA) A5 (SCL) | 2 (SDA) 3 (SCL) | 20 (SDA) 21 (SCL) | 20 (SDA) 21 (SCL) |
Wire1 | - | - | - | SDA1 SCL1 |
ArduinoボードのR3(リビジョン3)からAREFピンの隣にSDAピン、SCLピンが追加されました。DueにはTWI (I2C) インターフェースが2つ、AREFピンの隣にSDA1ピンとSCL1ピンがあります。
参考リンク
Arduino Board Uno
Arduino Board Leonardo
Arduino Board Mega 2560
Arduino Board Due
売り上げランキング: 43,796
目次:Arduino
Posted by arms22 on 2013年02月01日当ブログのArduinoに関する記事が増えてきましたので目次を作りました。ここではArduino関連の記事で特におすすめの記事を掲載していきます(すべての記事を読みたい方はサイドメニューのカテゴリ「Arduino」をクリックしてください)。
また、これだけは押さえておきたいArduino関連のサイト、ショップ、ブログのリンクも掲載していきます。