HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2023/09/24

【動画で解説】新型 Arduino UNO R4の TXと RXの LEDを超簡単に Lチカする方法!UNO R4のアレを光らせる方法! 【動画で解説】新型 Arduino UNO R4の TXと RXの LEDを超簡単に Lチカする方法!UNO R4のアレを光らせる方法!

(How to Blink Arduino UNO R4 Minima Tx and Rx LED)

Tags: [電子工作]




●新型 Arduino UNO R4用の board packageを ARDUINO IDEに追加する方法

2023/09/23
【動画で解説】新型 Arduino UNO R4用の board packageを ARDUINO IDEに追加する方法
【動画で解説】新型 Arduino UNO R4用の board packageを ARDUINO IDEに追加する方法

  How to Add Arduino UNO R4 board package to ARDUINO IDE


●新型 Arduino UNO R4の TXと RXの LEDを超簡単に Lチカする方法!

・前提条件
 ・Arduino UNO R4用の board packageは 1.0.4以上
 ・Arduino UNO R4 Minima限定(WiFiモデルは非対応)

・手順
 ・ARDUINO IDEの Blink(Lチカのサンプルプログラム)を開く
 ・UNO R4 Minimaの TXと RXの LEDの処理を追加する
 ・Uploadして実行する!

・ ARDUINO IDEの Blink(Lチカのサンプルプログラム)を開く

 ARDUINO IDEの
 File → Examples → 01.Basics → Blink
 を選択します。

Blink.inoの実装部分
// 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
}


・ UNO R4 Minimaの TXと RXの LEDの処理を追加する

 これを、下記の様に「黄色行を追加」します。
// 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);
  // TX and RX as OUTPUT
  pinMode(LED_TX, OUTPUT);
  pinMode(LED_RX, 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

  // TX LED
  digitalWrite(LED_TX, LOW);        // LED on
  delay(1000);                      // wait for a second
  digitalWrite(LED_TX, HIGH);       // LED off
  delay(1000);                      // wait for a second

  // RX LED
  digitalWrite(LED_RX, LOW);        // LED on
  delay(1000);                      // wait for a second
  digitalWrite(LED_RX, HIGH);       // LED off
  delay(1000);                      // wait for a second
}

・ Uploadして実行する!

 これを実行すると下記の様に元々の LEDの他に TX LEDと RX LEDが順番に光ります。
Arduino UNO R4のアレ!(TX、RX LED)を光らせる超簡単な方法



● Arduinoで一定時間を待つ方法 delay()関数
  delay(1000);                      // wait for a second
 ちなみに delay()の中の数字は待ち時間を意味しており、ms単位(1000分の 1秒単位)で指定します。
delay()の中の数字ms単位意味
6000060000ms60秒 = 1分
1000010000ms10秒
50005000ms5秒
10001000ms1秒
500500ms0.5秒
100100ms0.1秒
1010ms0.01秒
11ms0.001秒


●上記のプログラムの改善案(リファクタリング)

 LEDのオンやオフに HIGHや LOWを直接しているので「可読性」が悪いです。
 なので defineで定数を定義します。

 これで digitalWriteの行に「コメント」を記述する必要が無くなり、
 LEDを点灯する場合に
 「オンの時に指定するのは HIGHだっけ? LOWだっけ?」
 と言う迷いや間違いを無くせます!

 ※ 元の Exampleは「初心者を逆に混乱させるかも?」と言う懸念で直接 HIGHや LOWを書いているのだと思います

defineで定数を定義します
# 内蔵 LEDは正論理(HIGHで点灯)
#define LED_BUILTIN_ON  HIGH  // turn the LED on (HIGH is the voltage level)
#define LED_BUILTIN_OFF LOW   // turn the LED off by making the voltage LOW

# TX、RXの LEDは負論理(LOWで点灯)
#define LED_TXRX_ON  LOW      // LED on
#define LED_TXRX_OFF HIGH     // LED off

void loop() {
  digitalWrite(LED_BUILTIN, LED_BUILTIN_ON);
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LED_BUILTIN_OFF);
  delay(1000);                      // wait for a second

  // TX LED
  digitalWrite(LED_TX, LED_TXRX_ON);
  delay(1000);                      // wait for a second
  digitalWrite(LED_TX, LED_TXRX_OFF);
  delay(1000);                      // wait for a second

  // RX LED
  digitalWrite(LED_RX, LED_TXRX_ON);
  delay(1000);                      // wait for a second
  digitalWrite(LED_RX, LED_TXRX_OFF);
  delay(1000);                      // wait for a second


●新型 Arduino UNO R4 LED部分の回路図

 LEDの点灯回路の正論理と負論理の解説。

 WiFiモデルで本ページの内容が動かない理由も解説。

・Arduino UNO R4 Minimaの LED部分の回路図
Arduino UNO R4 Minimaの LED部分の回路図


Arduino UNO R4 Minimaの LED部分の回路図


 とりま上記の Arduino UNO R4 Minimaで解説すると下記の様になっています。
DL1黄色TX LEDP012負論理LOWで点灯
DL2黄色RX LEDP013負論理LOWで点灯
DL3緑色POWER LED電源直付け--常に点灯
DL4黄色内蔵 LED(L)P111正論理HIGHで点灯
 TXと RX LEDは GPIOが LOWの時に LEDに電流が流れるので点灯します。
 内蔵 LEDは GPIOが HIGHの時に LEDに電流が流れるので点灯します。

● UNO R4 WiFiモデルで本ページの内容が動かない理由

 LED部分の回路が Minimaと全く異なっており、また UNO R4用の board packageに WiFiモデル用の LED定義が存在していないから。

・Arduino UNO R4 WiFiの LED部分の回路図
Arduino UNO R4 WiFiの LED部分の回路図


Arduino UNO R4 WiFiの LED部分の回路図


Arduino UNO R4 WiFiの LED部分の回路図


 上記の Arduino UNO R4 WiFiは下記の様になっています。
DL1黄色TX LEDP109負論理LOWで点灯
DL2黄色RX LEDESP32 TXD0負論理LOWで点灯
DL3緑色POWER LED電源直付け--常に点灯
DL4黄色内蔵 LED(L)P102正論理HIGHで点灯
 RX LEDは ESP32の TXD0端子 = つまり UNO R4の RA4M1 MPUから直接制御できない。
 内蔵 LED(L)は Nch MOSFETを使用しています。GPIOを HIGHにして MOSFETの Gateを Highにすると MOSFETの Drainが Lowになり LEDが点灯します。(つまり LEDそのものの駆動回路は負論理だが、MPUから見た時の駆動方法は正論理になっている)

 ※ Minimaと WiFiモデルで LED部分の回路が異なっている理由は不明



● Arduino UNO R4用の board packageは 1.0.4以上の理由

 board packageの 1.0.4で TXと RXの LED定義が追加になりました!
 (但し Minimaだけ使える。WiFiモデルは上記の理由で LEDの配線が違うので使えない)
Comparing changes 1.0.2 to 1.0.4
variants/MINIMA/pins_arduino.h
// LEDs
// ----
#define PIN_LED     (13u)
#define LED_BUILTIN PIN_LED
#define LED_TX      (21u)
#define LED_RX      (22u)
・1.0.4で TXと RXの LED定義が追加になりました!
1.0.4で TXと RXの LED定義が追加になりました!
variants/MINIMA/variant.cpp
  { BSP_IO_PORT_00_PIN_12,    P012   }, /* (21) TX LED  */
  { BSP_IO_PORT_00_PIN_13,    P013   }, /* (22) RX LED  */

  { BSP_IO_PORT_05_PIN_01,    P501   }, /* (23) TX on SWD connector  */
  { BSP_IO_PORT_05_PIN_02,    P502   }, /* (24) RX on SWD connector  */
  { BSP_IO_PORT_01_PIN_08,    P108   }, /* (25) SWDIO  */
  { BSP_IO_PORT_03_PIN_00,    P300   }, /* (26) SWCLK  */

 なお、下記を見ると 1.0.2では I2Cのピン指定がバグっていた模様。
static const uint8_t SDA = WIRE_SDA_PIN;
static const uint8_t SCL = WIRE_SDA_PIN;
 SCLにも WIRE_SDA_PINの SDAを代入している。
・1.0.2では I2Cのピン指定がバグっていた
1.0.2では I2Cのピン指定がバグっていた




Arduino UNO R4 Minima [ABX00080] - Renesas RA4M1 - USB-C、CAN、DAC(12ビット)、OP AMP、SWDコネクタ
ASIN: B0C78K4CD4

waves XD-203 Arduino UNO用 多機能 I/O シールド センサーシールド 学習用
ASIN: B089KBC9GZ

KKHMF Duemilanove MEGA2560 MEGA1280 キーパッド シールド LCD 1602 Arduino用
ASIN: B0151EBB8O

KEYESTUDIO USBケーブル付きArduino UNO R3用 V4.0開発ボード
ASIN: B08H1RB61B
※ AVRです

Freenove ボード V4 を搭載したアルティメットスターターキット (Arduino IDE に対応)、274 ページの詳細なチュートリアル、217 アイテム、51 プロジェクト
ASIN: B08B4D5MV5
※ AVRです



Tags: [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

新型 Arduino UNO R4 Minimaのクローンを買った!!
新型 Arduino UNO R4 Minimaのクローンを買った!!

  Renesas RA4M1 Arduino UNO R4 Minima clone 无名科技Nologo Tech

【動画で解説】新型 Arduino UNO R4用の board packageを ARDUINO IDEに追加する方法
【動画で解説】新型 Arduino UNO R4用の board packageを ARDUINO IDEに追加する方法

  How to Add Arduino UNO R4 board package to ARDUINO IDE

Arduino IDEのプログラム内で新型 Arduino UNO R4や AVR、RP2040を判別する方法
Arduino IDEのプログラム内で新型 Arduino UNO R4や AVR、RP2040を判別する方法

  How to determine new Arduino UNO R4、AVR、RP2040、ESP32 in the Arduino IDE program

【動画で解説】新型 Arduino UNO R4を IDEが認識しない時の解決方法!
【動画で解説】新型 Arduino UNO R4を IDEが認識しない時の解決方法!

  Arduino UNO R4の COMポートを IDEが認識しない場合の解決方法

【UNO R4の闇】新型 Arduino UNO R4の目玉機能のひとつ RTCって使い物になるの?【コスト削減】
【UNO R4の闇】新型 Arduino UNO R4の目玉機能のひとつ RTCって使い物になるの?【コスト削減】

  One of the main features of the new Arduino UNO R4 Is RTC useful?

ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!
ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!

  ESP32で東方の Bad Apple!!の動画を再生する!実際にはパラパラ漫画です

LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方
LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方

  LoRaを使用した IoT郵便受け LoRa IoT Mailbox Sensor with LINE Messaging API

ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法
ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法

  Slackの勤怠チャンネルに毎日毎日毎日毎日 手動で投稿するのが馬鹿らしいので ESP32で作った

ESP8266で Python言語 MicroPythonを動かす方法
ESP8266で Python言語 MicroPythonを動かす方法

  Windows 10の WSL環境で ESP8266で Python言語 MicroPythonを動かします

ESP32で Python言語 MicroPythonを動かす方法
ESP32で Python言語 MicroPythonを動かす方法

  Windows 10の WSL環境で ESP32で Python言語 MicroPythonを動かします

LilyGO TTGO T-display ESP32/ RP2040/ GD32 GD32VF103CBT6を買ってみた
LilyGO TTGO T-display ESP32/ RP2040/ GD32 GD32VF103CBT6を買ってみた

  LilyGO TTGO T-display ESP32/ RP2040/ GD32 GD32VF103CBT6を買ってみた




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2023 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/arduino_uno_r4_blink_tx_rx_led/