年末にルネサスさんの「Arduinoで学ぶ、はじめてのLチカ(オンデマンドセミナー)」(動画を見るタイプのもの)の申し込みを行ってArduino UNO R4 Minima
(以下ArduinoR4
とする)を入手しました。好評だったようですでに、ArduinoR4
の配布は終了しているようです。
せっかく頂いたので動画を見ながらLチカを行いました。最近は、ArduinoR4
よりRaspberryPi
というような事が多いので、久しぶりのArduinoになります。大きくは変わってはいないとは思いますが、IDEも2系にバージョンアップして結構時間が経っているので、リハビリを兼ねて使用のメモを残そうと思います。
Arduino IDEのダウンロードとインストール
久しぶりにArduino
のサイトにアクセスを行ったところ、デザインがガラッと変わってしまってダウンロードどこだ🫠?って感じになってました。メニューにもダウンロードはないし、ソフトエアも表示されておらず、迷いましたがようやくボタンを見つけました。一番わかりやすいところにありますが、ボタンだとは…
ボタンを押すと、ようやくARDUINO SOFTWARE
の文字が出てきます。下にある、ダウンロード先のリンクをクリックします。
ここからの画面は以前にもあったところなのでわかりやすいです。使用するOSのパッケージのリンクをクリックします。自分はWindowsなのでインストーラー付きバイナリ(MSIではない方)を選択してダウンロードしました。
あとはダウンロードをしていけばOKです。
ダウンロードすると以下のファイルが入手できます。
あとはインストールを行うだけです。
インストール後はパッケージやサンプルなどのダウンロードが行われるので、しばらくまちます。ひとしきり処理が終わったら言語を日本語しておきましょう。
これでダウンロードとインストールは完了です。
ArduinoR4を接続し、Lチカを行う
ArduinoR4
をUSBケーブルで接続し、ウインドウ上部のプルダウンから接続ボードとシリアルポートを選択すると、自動的にArduinoR4
のドライバがインストールされます。特にこのあたりの作業では苦労はしません。
ここまでくれば、あとはスケッチファイルを編集してLチカを行います。
参考
/* Blink Turns an LED on for one second, then off for one second, repeatedly. (中略) This example code is in the public domain. https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
ArduinoR4
も本体にLEDがあり、D13ポートにLEDが接続をしているようです。上記のコードをコンパイルしてダウンロードすれば無事にLチカ完成です。このあたりはおなじみの作業です。
USBのHIDデバイスエミュレートのサンプルコードにもチャレンジ
動画セミナーの中ではUSBのHIDデバイス
の動作についての言及がありました。以前から対応していると知っていたのですが、使ったことがなかったので今回はLチカの応用としてこちらも動作させてみました。
ところが、ここでハマります😭
メニューの【ファイル】>【スケッチ例】>【09.USB】>【KeyboardAndMouseControl】を選択してスケッチ例を開きます。このコードはシリアルポートから文字(u,d,l,r,m)を送信するとそれに合わせて、マウスを上下左右に動かす、マウスの左ボタンをクリックし、加えてデジタルPinにボタンをつけて、キーボード入力をすることもできるようです。
ただ今回はタクトスイッチなどのデバイスがなかったので、回路は作成していません。
セミナー動画ではそのまま動きますというような話だったのですが、そのままで動作しませんでした。回路を組んでいないのが原因?かなと思ったのですが、ポートの接続を行っていなければ電圧はLOWになっているはず(コードでは確認してみた)なのでそのままでも大丈夫と思っていたのですが。
ネットで調べると以下の情報がありました。知り合いだった😊
こちらで紹介されている中でも回路部分の処理はオミットされていました😭
※ とりあえずのお試しに、電子工作パーツを取り出してくるのが面倒だったとも言う...
そこから、いろいろ調べて見た結果、D6の入力処理(digitalRead(mouseButton)
の判定処理)のON/OFF時の処理のみをコメントアウトするとうまく動くようになりました。ArduinoR4
ではまだ対応されていない部分があるのかもしれません。
/* KeyboardAndMouseControl Controls the mouse from five pushbuttons on an Arduino Leonardo, Micro or Due. (中略) This example code is in the public domain. https://www.arduino.cc/en/Tutorial/BuiltInExamples/KeyboardAndMouseControl */ #include "Keyboard.h" #include "Mouse.h" // set pin numbers for the five buttons: const int upButton = 2; const int downButton = 3; const int leftButton = 4; const int rightButton = 5; const int mouseButton = 6; void setup() { // initialize the buttons' inputs: pinMode(upButton, INPUT); pinMode(downButton, INPUT); pinMode(leftButton, INPUT); pinMode(rightButton, INPUT); pinMode(mouseButton, INPUT); Serial.begin(9600); // initialize mouse control: Mouse.begin(); Keyboard.begin(); } void loop() { // use serial input to control the mouse: if (Serial.available() > 0) { char inChar = Serial.read(); switch (inChar) { case 'u': // move mouse up Mouse.move(0, -40); break; case 'd': // move mouse down Mouse.move(0, 40); break; case 'l': // move mouse left Mouse.move(-40, 0); break; case 'r': // move mouse right Mouse.move(40, 0); break; case 'm': // perform mouse left click Mouse.click(MOUSE_LEFT); break; } } // use the pushbuttons to control the keyboard: if (digitalRead(upButton) == HIGH) { Keyboard.write('u'); } if (digitalRead(downButton) == HIGH) { Keyboard.write('d'); } if (digitalRead(leftButton) == HIGH) { Keyboard.write('l'); } if (digitalRead(rightButton) == HIGH) { Keyboard.write('r'); } if (digitalRead(mouseButton) == HIGH) { //Keyboard.write('m'); // この行をコメントアウトするとうまく動く } }
それ以外の箇所をコメントアウトしても動作に変化はなかったのですが、なぜかこの部分をコメントアウトすると動作するようになりました。原因知りたい…
おわりに
積み基板になりそうだったArduinoR4
をようやく使用することができた(Lチカしたぐらいで解消といえるのか…)感じですが、今回はArduino
でもUSBのHIDデバイス
のエミュレートができることがわかったのが今回の収穫でしょうか。
ルネサスさんArduino UNO MINIMA
いただきまして、ありがとうございました!