verylowfreq が 2023年06月28日21時01分34秒 に編集
初版
タイトルの変更
Arduino UNO R4 Minima!!! Arm CPUになった最新UNOでLチカする!
タグの変更
Arduino
Renesas
メイン画像の変更
記事種類の変更
セットアップや使用方法
Lチカの変更
本文の変更
とうとう! Aruduino UNO R4が販売開始されました! 引き継いだ部分、ガラッと変わった部分が多くあり、非常にワクワクします! Arduino UNO R4 is now on sale! It's very interesting! この記事は、以下の動画の補足記事です。VTuberもやってますので、なにとぞ、動画のほうも見ていってね! @[youtube](https://youtu.be/byOv0Ldph4s) ## 概要 Arduino UNO R4は、従来のArduino UNOとの互換性を考慮しつつ、チップがRenesas RA4M1 Arm Cortex-M4 CPUとなりました。 それでいて実売価格が3000円台と、昨今の事情を鑑みると、とても利用しやすい純正Arduinoボードです。 USBコネクタがType-Cになりました。Type-Bやmicro-Bを探し回らなくてもよいのはとてもうれしい。 ![USB Type-Cコネクタ](https://camo.elchika.com/32709beeddcb528c06fce2b16bfba4b88ee473c6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32376633303665652d656131352d343334662d626333342d6162343139336638333839392f38343363656234632d313337332d343361642d616539642d643762646561336331346562/) ## 準備 純正ボードなので、URLの追加はなく、ボードマネージャーから "Arduino UNO R4"をインストールすれば、利用できます。"renesas"で検索すると、出てきます。 ## Lチカ Blinkスケッチが利用できます! 以上! 最新ボード、48MHz Arm CPUでLチカする気分は最高です! ぜひ動画でご確認ください! ## USBキーボード マウスやキーボードになれます。プロダクトページではUSB-HIDにしか言及がないのですが、チップとしてそのような制限はないので、あくまでもライブラリが用意されているのがこれだけ、ということかと思います(あくまで推測ですが) Arduino公式のマウスやキーボードのライブラリが利用できます。 コードを掲示します。なおUSBデバイスを作るときは、ボタン操作で動作を停止できるようにしておくのがおすすめです。とくにキーボードデバイスが暴走すると、プログラムの再書き込みも難しくなる場合がありますので。(なおUNO R4については、リセットボタンの2回連続押しで強制書き込みモードに入れます) ``` #include <Keyboard.h> const uint8_t PIN_BTN = 12; void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); pinMode(PIN_BTN, INPUT_PULLUP); Serial.begin(115200); delay(1000); if (digitalRead(PIN_BTN) == LOW) { for (bool ledon = false; true; ledon = !ledon) { digitalWrite(LED_BUILTIN, ledon ? HIGH : LOW); delay(500); } } Keyboard.begin(); Serial.println("Ready."); } void loop() { // put your main code here, to run repeatedly: static bool led_on = false; static unsigned long ledtimer = 0; if (digitalRead(PIN_BTN) == LOW){ while (digitalRead(PIN_BTN) == LOW) { delay(10); } Keyboard.println("Hello from Arduino UNO R4!! "); } if (millis() - ledtimer > 500) { digitalWrite(LED_BUILTIN, led_on ? HIGH : LOW); led_on = !led_on; ledtimer = millis(); } } ``` ## 治安の悪いLチカ Arduino UNO R3はAVRチップでピン出力はわりと無茶ができたのですが、UNO R4はArduino公式仕様上はピン当たり8mA出力という控えめな数字になっています(R3は20mA表記)。 とはいえ、ワルいこと、やりたいですよね? 5Vレベルのピンで、ピンを2つセットでVccとGNDを分担して、Lチカしました。壊れなくてよかった。 動画のラストを見てね! 以下はそのコードです。 ``` const size_t LEDS_COUNT = 7; const int PIN_LEDS[LEDS_COUNT * 2] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; const size_t PIN_LEDS_COUNT = (sizeof(PIN_LEDS) / sizeof(PIN_LEDS[0])); void init_led(void) { for (size_t i = 0; i < PIN_LEDS_COUNT; i++) { pinMode(PIN_LEDS[i], OUTPUT); digitalWrite(PIN_LEDS[i], LOW); } } void set_led_on(uint8_t index) { index = index % LEDS_COUNT; init_led(); int pin_high_index = PIN_LEDS[index * 2]; digitalWrite(PIN_LEDS[pin_high_index], HIGH); } void setup() { // put your setup code here, to run once: init_led(); } void loop() { // put your main code here, to run repeatedly: static uint8_t counter = 0; set_led_on(counter); counter = (counter + 1) % LEDS_COUNT; delay(100); } ``` ## 雑記 トータルで見れば、悪くないんじゃないかなと思います。純正ボードでしかもUNOシリーズなので、なんだかんだでサポートは広まるでしょう。 もちろん、いまはまだ販売開始されたばかりなので、いろいろできないことが多いとは思いますが、むしろどんどんできるようになっていく過程が見れると思うと、楽しいですね。