(同じ利用者による、間の10版が非表示)
1行目: 1行目:
== ピン配置 ==
==== Arduino UNO R3 ====
下表に、Arduino UNO R3の全IOピンの機能を示す。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ Arduino UNO R3のピン配置
! style="background-color:#66CCFF;" | ピン
! style="background-color:#66CCFF;" | 種類
! style="background-color:#66CCFF;" | 説明
|-
| D0 || デジタル || UART受信 (RX)
|-
| D1 || デジタル || UART送信 (TX)
|-
| D2 || デジタル || デジタル入出力
|-
| D3 || デジタル || デジタル入出力, PWM (~)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D4 || デジタル || デジタル入出力
|-
| D5 || デジタル || デジタル入出力, PWM (~)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D6 || デジタル || デジタル入出力, PWM (~)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D7 || デジタル || デジタル入出力
|-
| D8 || デジタル || デジタル入出力
|-
| D9 || デジタル || デジタル入出力, PWM (~)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D10 || デジタル || デジタル入出力, PWM (~), SPI (SS)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D11 || デジタル || デジタル入出力, PWM (~), SPI (MOSI)<br><br>(~)は、デジタルのON / OFF (0 / 1) だけでなく、PWMによる擬似的なアナログ出力が可能であることを示している。<br>Arduino UNO R3では、0-255の範囲で出力の強さを制御できる。
|-
| D12 || デジタル || デジタル入出力, SPI (MISO)
|-
| D13 || デジタル || デジタル入出力, SPI (SCK), 内蔵LED
|-
| A0 || アナログ入力 || アナログ入力
|-
| A1 || アナログ入力 || アナログ入力
|-
| A2 || アナログ入力 || アナログ入力
|-
| A3 || アナログ入力 || アナログ入力
|-
| A4 || アナログ入力 || アナログ入力, I2C (SDA)
|-
| A5 || アナログ入力 || アナログ入力, I2C (SCL)
|}
</center>
<br>
==== Arduino UNO R4 WiFi ====
下表に、Arduino UNO R4 WiFiの全IOピンの機能を示す。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ Arduino UNO R4 WiFiのピン配置
! style="background-color:#66CCFF;" | ピン
! style="background-color:#66CCFF;" | 種類
! style="background-color:#66CCFF;" | 説明
|-
| D0 || デジタル || UART受信
|-
| D1 || デジタル || UART送信
|-
| D2 || デジタル || GPIOピン, 割り込み
|-
| D3 || デジタル || GPIOピン, 割り込み, PWM
|-
| D4 || デジタル || GPIOピン
|-
| D5 || デジタル || GPIOピン, PWM
|-
| D6 || デジタル || GPIOピン, PWM
|-
| D7 || デジタル || GPIOピン
|-
| D8 || デジタル || GPIOピン
|-
| D9 || デジタル || GPIOピン, PWM
|-
| D10 || デジタル || SPI (CS), GPIOピン, PWM
|-
| D11 || デジタル || SPI (COPI), GPIOピン, PWM
|-
| D12 || デジタル || SPI (CIPO), GPIOピン
|-
| D13 || デジタル || SPI (SCK), GPIOピン, ビルトインLED
|-
| A0 || アナログ || Analog入力, DAC出力<br><br>UNO R4 WiFiは、最大12ビットの分解能を持つDACを搭載しており、PWMピンよりも高性能なアナログ出力ピンとして機能する。
|-
| A1 || アナログ入力 || Analog入力, OPアンプ +<br><br>RA4M1には内蔵OPAMPがある。
|-
| A2 || アナログ入力 || Analog入力, OPアンプ -<br><br>RA4M1には内蔵OPAMPがある。
|-
| A3 || アナログ入出力 || Analog入力, OPアンプ出力<br><br>RA4M1には内蔵OPAMPがある。
|-
| A4 || アナログ入力 || Analog入力, SDA<br><br>A4ピンとA5ピンは同じI2Cバスに接続されている。
|-
| A5 || アナログ入力 || Analog入力, SCL<br><br>A4ピンとA5ピンは同じI2Cバスに接続されている。
|}
</center>
<br><br>
== 各部詳細 ==
== 各部詳細 ==
Arduino UNO R3の各部詳細は下図の通りである。<br>
Arduino UNO R3の各部詳細は下図の通りである。<br>
27行目: 133行目:
USB電源、ACアダプタ等を電源として使用できる。(ACアダプタは9[V] 2.1[mm]センタープラス型を推奨)<br>
USB電源、ACアダプタ等を電源として使用できる。(ACアダプタは9[V] 2.1[mm]センタープラス型を推奨)<br>
ACアダプタとUSB電源を同時に接続しても構わないが、その場合は、ACアダプタが電源となる。<br>
ACアダプタとUSB電源を同時に接続しても構わないが、その場合は、ACアダプタが電源となる。<br>
<br><br>
== UART ==
UARTは、R4ボードがR3ボードと異なる部分の1つである。<br>
<br>
* Arduino UNO R3
*: UARTは1つでUSBコネクタとD0およびD1ピンの両方に接続されている。
* Arduino UNO R4
*: 2つのハードウェアシリアルポートを使用しており、1つはUSB、もう1つはD0とD1に接続されている。
<br>
そのため、Arduino UNO R4でD0とD1を介してシリアル通信を行う場合は、Serialオブジェクトの代わりにSerial1オブジェクトを使用する必要がある。<br>
<br>
* D0 (TX)
*: TXD1 出力
* D1 (RX)
*: RXD1 入力
<br><br>
<br><br>


== SPI ==
== SPI ==
SPI用のピンは、D10 - D13である。<br>
Arduino UNO R3 / R4のSPI用のピンは、D10 - D13である。<br>
ICSP端子を使えば、他ボードとピン互換にできる。(SSは除く)<br>
ICSP端子を使えば、他ボードとピン互換にできる。(SSは除く)<br>
<br>
[[ファイル:Arduino UNO R3 03.jpg|フレームなし|中央]]
[[ファイル:Arduino UNO R3 03.jpg|フレームなし|中央]]
<br>
<center>
<center>
{| class="wikitable"
{| class="wikitable"
|-
|-
!  !! UNO !! LEONARDO !! MEGA 2560
!  !! UNO R3 /R4 !! LEONARDO !! MEGA 2560
|-
|-
| SCL || D13 / ICSP3 || ICSP3 || D52 / ICSP3
| SCL (SSLA0) || D13 / ICSP3 || ICSP3 || D52 / ICSP3
|-
|-
| MISO || D12 / ICSP1 || ICSP1 || D50 / ICSP1
| MISO (CIPOA) || D12 / ICSP1 || ICSP1 || D50 / ICSP1
|-
|-
| MOSI || D11 / ICSP4 || ICSP4 || D51 / ICSP4
| MOSI (COPIA) || D11 / ICSP4 || ICSP4 || D51 / ICSP4
|-
|-
| SS || D10 || (TX LED) || D53
| SS (SSLA0) || D10 || (TX LED) || D53
|}
|}
</center>
</center>
54行目: 178行目:
{| class="wikitable"
{| class="wikitable"
|-
|-
! I<sup>2</sup>C !! UNO !! LEONARDO !! MEGA 2560
! I<sup>2</sup>C !! UNO R3 / R4 !! LEONARDO !! MEGA 2560
|-
|-
| SCL || A5 / SCL || D3 / SCL || D21 / SCL
| SCL || A5 / SCL || D3 / SCL || D21 / SCL
73行目: 197行目:
|}
|}
<br>
<br>
Timerを使用する関数やライブラリを使用すると、思わぬ落とし穴に遭遇する事がある。<br>
<u>Timerを使用する関数やサードパーティ製ライブラリを使用する場合は、以下に示す事柄に注意する必要がある。</u><br>
・delay(), millis(), micros() 等の関数でTimer0を利用しており、D5, D6をPWMに使用するとデューティ比が高めになる。<br>
* delay関数、millis関数、micros関数等を使用する場合、Timer0およびDピン、D6ピンをPWMに使用するとデューティ比が高めになる。
・ServoライブラリはTimer1を利用しており、D9およびD10でPWMが使用できなくなる。<br>
* ServoライブラリはTimer1を使用するため、D9ピンおよびD10ピンでPWMが使用できない。
・ToneライブラリはTimer2を利用しており、D3およびD11でPWMが使用できなくなる。<br>
* ToneライブラリはTimer2を使用するため、D3ピンおよびD11ピンでPWMが使用できない。
・SPIを利用する場合、D11でPWMが使用できなくなる。<br>
* SPIを使用する場合は、D11ピンでPWMが使用できない。
<br><br>
 
== DAC (Arduino UNO R4のみ) ==
Arduino UNO R4 WiFiのDACピンのデフォルトの書き込み分解能は8ビットである。<br>
これは、このピンに書き込まれる値が0~255の間であることを意味する。<br>
<br>
ただし、この書き込み分解能を12ビットまで変更することができ、ピンに書き込まれる値は0~4096の間となる。<br>
<br>
<syntaxhighlight lang="c++">
analogWriteResolution(12);
</syntaxhighlight>
<br><br>
 
== OPアンプ ==
ルネサスのRA4M1マイコンには4つのオペアンプが内蔵されており、そのうちの1つがUNO R4ボードのピンに出力されている。<br>
<br>
このOPアンプはプログラム制御が可能であり、ADCで使用する。<br>
ADCの入力感度を上げることができるため、オーディオ設計に有効である。<br>
<br>
* A1
*: OPアンプの正入力
* A2
*: OPアンプの負入力
* A3
*: OPアンプの出力
<br><br>
 
== RTC (Arduino UNO R4のみ) ==
リアルタイムクロック (RTC) は、時刻を計測するために使用される。<br>
これは、時刻追跡アプリケーション等に使用することが多い。<br>
<br>
Arduino UNO R4 WiFiにはVRTCピンがあり、電源が遮断されてもオンボードRTCを動作させ続けることができる。<br>
<br>
これを使用するには、VRTCピンに1.6~3.6[V]の範囲の電圧を印加する必要がある。<br>
バックアップ用の電池ホルダ (CR1220電池) も基板上に実装済みである。<br>
<br>
以下の例では、RTCから日付と時刻を取得している。<br>
<syntaxhighlight lang="c++">
#include "RTC.h"
void setup()
{
    Serial.begin(9600);
    RTC.begin();
    RTCTime mytime(30, Month::JUNE, 2023, 13, 37, 00, DayOfWeek::WEDNESDAY, SaveLight::SAVING_TIME_ACTIVE);
    RTC.setTime(mytime);
}
void loop()
{
    RTCTime currenttime;
    // RTCを使用して現在時刻を取得
    RTC.getTime(currenttime);
    // DD/MM//YYYY形式で出力する場合
    Serial.print(currenttime.getDayOfMonth());
    Serial.print("/");
    Serial.print(Month2int(currenttime.getMonth()));
    Serial.print("/");
    Serial.print(currenttime.getYear());
    Serial.print(" - ");
    // HH/MM/SS形式で出力する場合
    Serial.print(currenttime.getHour());
    Serial.print(":");
    Serial.print(currenttime.getMinutes());
    Serial.print(":");
    Serial.println(currenttime.getSeconds());
    delay(1000);
}
</syntaxhighlight>
<br>
Arduinio UNO R4 WiFiのRTC機能の詳細を知りたい場合は、[https://docs.arduino.cc/tutorials/uno-r4-wifi/rtc 公式ドキュメント]を参照すること。<br>
<br><br>
 
== QWIIC (Arduino UNO R4 WiFiのみ) ==
QUIICコネクタは、互換性のある周辺機器を接続することができる。<br>
I2C接続であるため、それぞれが固有のI2Cアドレスを持っている限り、複数のデバイスを接続することができる。<br>
<br>
QUIICコネクタを使用する場合の注意点が2つある。<br>
* 3.3[V]のI2Cバスである。そのため、5[V]のペリフェラルには接続してはならない。
* QUIIC接続は2番目のI2Cポートを使用するため、QUIICデバイスを使用する場合は、既存のスケッチを修正する必要がある。
<br><br>
 
== CAN通信 (Arduino UNO R4のみ) ==
コントローラエリアネットワーク (CAN通信) は、マイコンとデバイスが相互に通信できるように設計された車両バス規格である。<br>
<br>
Arduino Uno R4には、CANバス接続が1つある。<br>
これは、物理的に直接CANバスに接続することはできないが、ロジックレベルの信号をCAN通信互換の信号に変換するトランシーバが必要になる。<br>
Arduino UNO R4のハードウェアおよびライブラリが、バスプロトコルとデータフォーマットの処理を担当する。<br>
<br>
<u>※注意</u><br>
<u>MinimaとWiFiのCANバス接続が異なることに注意する。</u><br>
<br>
* Minima
** D4
**: CAN TX – CAN通信の送信
** D5
**: CAN RX – CAN通信の受信
*: <br>
* WiFi
** D10
**: CAN TX – CAN通信の送信
** D13
**: CAN RX – CAN通信の受信
<br><br>
 
== ESP32 Header (Arduino UNO R4 WiFiのみ) ==
ESPヘッダを使用する場合、基板上のESP32-S3の一部のGPIOピンに直接アクセスすることができる。<br>
このヘッダ、あるいは、基板裏面のパッドを使用することにより、RA4M1マイコンとは独立してESP32をプログラミングすることが可能である。<br>
<br><br>
 
== LED Matrix (Arduino UNO R4 WiFiのみ) ==
Arduino UNO R4 WiFiを他のボードと区別するには、ワイヤレス機能の他に基板面積の約4分の1を占める12×8のLEDディスプレイマトリックスの存在である。<br>
<br><br>
 
== ブート / リセット ==
ブートプロセスに関連するピンが存在する。<br>
<br>
* BOOT
*: BOOTピンはマイコンのブートモードを変更するために使用されていたが、Arduino Uno R4ボードでは接続されていない。
* IOREF
*: IOREFピンは出力となっており、5[V]に接続されている。
*: このピンの目的は、ボードのロジックレベルの電圧基準を提供することである。
* RESET
*: RESETピンは、LOWに保持するとマイクロコントローラをリセットする。
<br><br>
<br><br>