編集履歴一覧に戻る
verylowfreqのアイコン画像

verylowfreq が 2023年06月28日21時01分34秒 に編集

初版

タイトルの変更

+

Arduino UNO R4 Minima!!! Arm CPUになった最新UNOでLチカする!

タグの変更

+

Arduino

+

Renesas

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

セットアップや使用方法

Lチカの変更

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シリーズなので、なんだかんだでサポートは広まるでしょう。 もちろん、いまはまだ販売開始されたばかりなので、いろいろできないことが多いとは思いますが、むしろどんどんできるようになっていく過程が見れると思うと、楽しいですね。