Arduino UNO R4 Minima!!! Arm CPUになった最新UNOでLチカする!
とうとう! Aruduino UNO R4が販売開始されました! 引き継いだ部分、ガラッと変わった部分が多くあり、非常にワクワクします!
Arduino UNO R4 is now on sale! It's very interesting!
この記事は、以下の動画の補足記事です。VTuberもやってますので、なにとぞ、動画のほうも見ていってね!
概要
Arduino UNO R4は、従来のArduino UNOとの互換性を考慮しつつ、チップがRenesas RA4M1 Arm Cortex-M4 CPUとなりました。
それでいて実売価格が3000円台と、昨今の事情を鑑みると、とても利用しやすい純正Arduinoボードです。
USBコネクタがType-Cになりました。Type-Bやmicro-Bを探し回らなくてもよいのはとてもうれしい。
準備
純正ボードなので、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レベルのピンで、デジタルI/Oピンを2つセットでLEDのV+と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シリーズなので、なんだかんだでサポートは広まるでしょう。
もちろん、いまはまだ販売開始されたばかりなので、いろいろできないことが多いとは思いますが、むしろどんどんできるようになっていく過程が見れると思うと、楽しいですね。
投稿者の人気記事
-
verylowfreq
さんが
2023/06/28
に
編集
をしました。
(メッセージ: 初版)
-
verylowfreq
さんが
2023/06/28
に
編集
をしました。
-
verylowfreq
さんが
2023/06/29
に
編集
をしました。
ログインしてコメントを投稿する