差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
gimmickkouza:electronic_basic:7:3-r3-r4 [2024/06/21 00:14] – [プログラムの違い] matsuhachigimmickkouza:electronic_basic:7:3-r3-r4 [2024/06/21 13:55] (現在) – [マイコンのbit数の違い] matsuhachi
行 1: 行 1:
 ====== 7-3 Arduino Uno R4とR3の違い ====== ====== 7-3 Arduino Uno R4とR3の違い ======
-Arduino UNO R4と、そのひとつ前のバージョンである、Arduino UNO R3には様々な違いがあり注意が必要です+Arduino UNO R4と、そのひとつ前のバージョンである、Arduino UNO R3には様々な違いがあり注意が必要です。 
 +それらの違いについてまつはちさんが詳しくまとめてくださいましたので掲載します(感謝!!) 
 +  
 ===== 初心者向けの話 ===== ===== 初心者向けの話 =====
 +<panel type="success" title="るためすたメモ">
 +ちなみにですが、2024/6現在Arduino公式から出ているマイコンは…
 +  * R4系のArduino → Arduino Uno R4 Minima と Arduino Uno R4 WiFi の二機だけが該当します
 +  * R3系のArduino → それ以外のだいたいのArduino(Uno R3はもちろん、小型機のNanoやNano Every等、大半のArduino)
 +であることを頭の隅に置いておくといいかと思います。
 +(たぶんこれからR4系の小型Arduinoも出てくるのかな…)
 +</panel>
 ==== ハードウェアシリアルポートの違い ==== ==== ハードウェアシリアルポートの違い ====
   * ソフトウェアシリアルも通信速度の速いハードウェアシリアルですが、R4とR3では数が違います。   * ソフトウェアシリアルも通信速度の速いハードウェアシリアルですが、R4とR3では数が違います。
行 10: 行 19:
  
   * R3は、**USBポートと0番&1番ソケットのUARTがどちらもSerialで共用**になっています。   * R3は、**USBポートと0番&1番ソケットのUARTがどちらもSerialで共用**になっています。
-    * プログラムの書き込み時に何かが繋いでいると、書き込みに失敗することもあります。+    * プログラムの書き込み時に0番&1番ソケットに部品を繋いでいると、書き込みに失敗することもあります。
  
 +<panel type="success" title="るためすたメモ">このシリアルポートの違いにより、[[gimmickkouza:electronic_basic:6:2_dfplayer_uart#6-2-2_DFPlayer_UART_SoftwareSerial|]]ではR3とR4では異なる対応を求められましたね…</panel>
 +  
 ==== ソケットに流せる電流の違い ==== ==== ソケットに流せる電流の違い ====
   * I/Oソケットで流せる電流容量が、**R3では、20mA**でしたが、**R4では8mA**とかなり少なくなっています。   * I/Oソケットで流せる電流容量が、**R3では、20mA**でしたが、**R4では8mA**とかなり少なくなっています。
行 18: 行 29:
   * LEDやトランジスタを介して電流を増幅するタイプの回路は特に注意が必要です。**最悪焼けます。**   * LEDやトランジスタを介して電流を増幅するタイプの回路は特に注意が必要です。**最悪焼けます。**
     * モータードライバや、FET、トランジスタなどをいれましょう     * モータードライバや、FET、トランジスタなどをいれましょう
 +
 +<panel type="success" title="るためすたメモ">[[gimmickkouza:electronic_basic:5:1_digitalwrite|]]で出てきました</panel>
 +  
 ==== 入力電圧の違い ==== ==== 入力電圧の違い ====
   * DCジャックやVinソケットへの入力電圧が異なります   * DCジャックやVinソケットへの入力電圧が異なります
   * **R4では、6~24V**ですが、**R3では、7~12V** とかなり小さくなります。   * **R4では、6~24V**ですが、**R3では、7~12V** とかなり小さくなります。
   * もしR4向けに電源を買って、R3にも使う場合は、**電源の電圧をよく確認してから繋ぎましょう**   * もしR4向けに電源を買って、R3にも使う場合は、**電源の電圧をよく確認してから繋ぎましょう**
 +  
 ==== プログラムの違い ==== ==== プログラムの違い ====
   * 2024/6月現在、R4はまだ登場したばかりのマイコンです   * 2024/6月現在、R4はまだ登場したばかりのマイコンです
行 29: 行 43:
   *** R4でサンプルコードですらコンパイルが通らない場合は、ボードをR3に変えてみて、コンパイルが通るか試してみましょう**   *** R4でサンプルコードですらコンパイルが通らない場合は、ボードをR3に変えてみて、コンパイルが通るか試してみましょう**
  
 +<panel type="success" title="るためすたメモ">[[gimmickkouza:electronic_basic:6:4_lcd_spi|]]とか[[gimmickkouza:electronic_basic:8:3_ledstrip|]]で盛大に煮え湯を飲まされましたね……(しろめ)
 +**2024/6現在、R4についてはとにかくまだまだネット上に情報がない**ことを念頭に置いて、ライブラリを使っていてエラーが出るようであれば、R4未対応である可能性を疑ってみていいと思います</panel>
 +  
 ==== 嬉しい話 ==== ==== 嬉しい話 ====
   * R3よりR4のほうが安いです!   * R3よりR4のほうが安いです!
   * プログラム書き込み用のUSBポートが、R3ではType-Bだったのが、R4ではType-Cになっています   * プログラム書き込み用のUSBポートが、R3ではType-Bだったのが、R4ではType-Cになっています
   * R3に比べて、書き込み容量や、スペックなどが、大幅に向上しています!   * R3に比べて、書き込み容量や、スペックなどが、大幅に向上しています!
 +  
 +<panel type="success" title="るためすたメモ">これは本当にそう。
 +講師も今回の資料作成で両方とも触りましたが、R4はR3から正当にアップグレードされていると感じました。
 +ただ繰り返しですが、現時点ではR4はまだネットに情報が少ない(R3が名機すぎてネット上に情報があふれかえっており、相対的にR4の情報にたどり着きにくいという事情もありそう…)ので、その辺りはちょっと頑張る必要があるかなと思います。</panel>
 +  
 ===== 中級者以上向けの話 ===== ===== 中級者以上向けの話 =====
 ==== マイコンのbit数の違い ==== ==== マイコンのbit数の違い ====
   * R3のMCUは、8bitマイコンのATMega328Pですが、R4では32bitマイコンのRA4M1が採用されています   * R3のMCUは、8bitマイコンのATMega328Pですが、R4では32bitマイコンのRA4M1が採用されています
   * これにより、R3のint型が2byteなのに対し、R4のint型では4byteとなっています   * これにより、R3のint型が2byteなのに対し、R4のint型では4byteとなっています
 +  * 2byteと4byteで何が違うの?というと、**格納できる値の最大値・最小値**が違います
 +    * 2byteだと-32768~32767
 +    * 4byteだと-2147483648~2147483647
 +    * めちゃくちゃ違います
 +    * このため、R4前提のint型で最大値最小値を扱うと、R3に移植した際に、上手く動かなくなります。
 +  * また、加速度センサのような、I2C通信でデータを読み出し、シフト演算で整形するようなプログラムの場合に、上手く動かなくなります。こちらの記事がわかりやすいです。
 +  https://note.com/electric_mecha60/n/nc5a69a06959e
 +
 +<panel type="success" title="るためすたメモ">[[gimmickkouza:electronic_basic:3:5_variable#変数のデータ型について|]]でちょっと書いていますが、これによりR4ではintで扱える数値の桁数が増大しています。
 +便利ではありますが、__実際にきぐるみの実装に使うマイコンはNanoやNano Every等のR3系である可能性が高い__です。
 +なので互換性の観点から、個人的には当面はR4でもR3と同じ基準でintを使った方が無難かな…と思います。
 +</panel>
 +  
 ==== スペックの向上 ==== ==== スペックの向上 ====
   * R3からR4では、様々な部分のスペックが向上しています   * R3からR4では、様々な部分のスペックが向上しています
   * 動作周波数、PWMやADコンバータの解像度、メモリ容量の向上、消費電流の低下…などなど。   * 動作周波数、PWMやADコンバータの解像度、メモリ容量の向上、消費電流の低下…などなど。
 +  
 ==== 機能の追加 ==== ==== 機能の追加 ====
   * R4はR3に比べてできることがかなり増えています。   * R4はR3に比べてできることがかなり増えています。
-  * HID機能の追加 +=== HID機能の追加 === 
-  * SWD/JTAGデバッグが可能に +  * Arduinoをキーボードやマウスといった、USB接続のコントローラとして扱うことができる機能です 
-  * DACの追加疑似的アナログ電圧から、連続的なアナログ電圧+  * HIDはHuman Interface Deviceの略です 
 +  * Keyboard.hをインクルードすれば使えるのでお手軽に試せます 
 +   
 +=== SWD/JTAGデバッグが可能に === 
 +  * 高度な開発になってくると、1行ずつ挙動を見たり、プログラムの実行を止める箇所を作ったりして、どこでトラブルが起きているのかを調べる必要が出てきます。 
 +  * これにはデバッガというものをつないで行うのですが、R4にはそのデバッガをつなぐためのピンが生えているのです。 
 +  * 正直めちゃくちゃ待ってた機能です 
 +   
 +=== DACの追加 === 
 +  * R4のA0ソケットには、デジタルをアナログに変換する機能が入っています 
 +  * DACはDigital-to-analog Converterの略です 
 +  * それ以外のピンや、R3では、PWMで疑似的アナログ電圧が出ています 
 +  * 精密なアナログ出力ができるようなるので、サイン波のような滑らかで連続性のある波形を出せたり、音楽を鳴らせるようになったりします 
 +  * こちらのサイトのサンプルを見てみると面白いと思います 
 +  https://garretlab.web.fc2.com/arduino.cc/docs/tutorials/uno-r4-wifi/dac/ 
 +  https://docs.sunfounder.com/projects/elite-explorer-kit/ja/latest/new_feature_projects/07_dac.html 
 + 
 +<panel type="success" title="るためすたメモ">[[gimmickkouza:electronic_basic:6:1_servo_pwm#6-1-2_Servo_library|]]で出現しました</panel>