RoadTest: Apply to Test the Arduino Nano R4!
Author: dougw
Creation date:
Evaluation Type: Connectors & Cable
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Arduino Nano, Arduino UNO R4 Minima
What were the biggest problems encountered?: There were no problems with the Nano R4. I had health issues that slowed down my work on the road test.
Detailed Review:

This is a road test of an Arduino Nano R4. I am very interested in exploring the capabilities of this product with the goal of assigning it to be a standardized platform for future projects. Once the footprint is in my CAD library and I have worked out firmware to handle all the I/O, it then becomes easy to use the module in new projects without going through all that initial development activity.
The Nano R4 represents a significant increase in power and capability in the attractive Nano form factor. A couple of features make it much more attractive to me than the original Nano:
The R4 has an extra I2C port on additional pins, which allows I2C devices to be used without using up analog channels.
The A/D converter can capture 14 bits of resolution.
The MCU is a 32 bit ARM Cortex M4 running at 48 MHz which provides much more real-time signal processing capability.
There are several other great features that may come in handy as well, such as 6 PWM channels, a DAC channel, an RGB LED, CANBUS pins, 256 KB flash, 32KB RAM, floating point unit, an OpAmp, HID emulation, USB C, reset button, a Qwiic connector, an RTC and backup battery input.
The Arduino IDE includes many generic code examples and a whole suite of examples specific to Renesas RA4M1 MCUs. This road test isn't going to review these examples since they have already been done, instead I want to show how to exploit the features I find most interesting about this module.
Specifically I want to use a custom PCB that includes the Nano R4, 10 switches, connectors for 8 analog inputs (potentiometers) and an LCD interface. I will design and build 3D printed housings for a control panel and the MCU with the liquid crystal display. I will figure out how to use a second I2C port to drive the LCD, how to make the A/D capture analog signals with 12 or 14 bit resolution and display all input data on the LCD.
This is the Arduino IDE menu of code examples for Nano R4

It took quite a while for me to get through this project, mostly due to health setbacks, but working on this project helped to take my mind off other problems.

The 3D printed case features a GoPro mount and 8 button extenders. (shown in blue)

The control panel has room for 4 rotary potentiometers and 4 slide pots. It uses popsicle sticks to retain the slide pots.

The assembly went smoothly although I had to dig deep into my stash to find enough bulkhead rotary pots.
The one with the different knob had a different shaft size.

Connections between the control panel and the display case are made using a breadboard as a patch panel.
Amazingly the slide pot pins work directly with Dupont jumpers.
The firmware demonstrates how to force the Nano R4 to use higher resolution on the A/D (12 bits or 14 bits)
It also indicates which LCD library I used to respond to a second I2C port.
/*
Arduino Nano R4
- 8 analog inputs (12bit resolution) on A0–A7
- 10 digital button inputs
- 4x20 I2C LCD on Wire1
by Doug Wong 2026
*/
#include <DIYables_LCD_I2C.h> // this LCD library supports 2 I2C channels
DIYables_LCD_I2C lcd(0x27, 20, 4, Wire1); // (setup: I2C address, columns, rows, port number)
// Analog inputs
const uint8_t AINPins[8] = {A0, A1, A2, A3, A4, A5, A6, A7};
float AVals[8];
int ARaw[8];
float AV;
int AIn;
int Row, Col;
// Digital pins
const uint8_t DINPins[10] = {D12, D4, D5, D8, D9, D13, D2, D3, D6, D7};
int DVals[8];
int DRaw;
// -------------------- SETUP --------------------
void setup() {
// Configure Digital Pins
for (int i = 0; i < 10; i++) {
pinMode(DINPins[i], INPUT_PULLUP);
}
// Configure analog resolution
analogReadResolution(12); // can also be set to 14 bits
// Initiallize LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NANO R4 Demo");
delay(1000);
lcd.clear();
for (int i = 0; i < 4; i++) {
AVals[i] = 2;
ARaw[i] = 2;
lcd.setCursor(i * 5, 0);
lcd.print (AVals[i]);
}
}
// -------------------- MAIN LOOP --------------------
void loop() {
// Read Analog Inputs
char abuf[4];
for (int j = 0; j < 8; j++) {
AIn = analogRead(AINPins[j]);
delay (10);
AIn = analogRead(AINPins[j]);
if (AIn != ARaw[j]) {
ARaw[j] = AIn;
AV = ARaw[j] * 5 / 4.096; // 1024;
AV = AV / 1000;
AVals[j] = AV;
if (j > 3) {
Row = 1;
Col = (j-4) * 5;
} else {
Row = 0;
Col = j * 5;
}
lcd.setCursor(Col, Row);
lcd.print(AVals[j], 2);
}
}
for (int k = 0; k < 10; k++) {
DRaw = digitalRead(DINPins[k]);
if (k > 4) {
Row = 3;
Col = (k-5) * 5;
} else {
Row = 2;
Col = k * 5;
}
lcd.setCursor(Col, Row);
lcd.print(DRaw);
if (k == 0) { // if this switch is on slow down polling
if (DRaw == 1) {
delay (500);
}
}
if (k == 5) { // if this switch is on slow down polling
if (DRaw == 1) {
delay (500);
}
}
}
delay (50);
}
I also liked all the other hardware features - they make this module suitable for a wide variety of applications.
The only quibble I have is that the code examples were mostly developed for other platforms such as UNO R4 or NIcla or Portenta, which have different resource mixes, however the examples are still very useful.
There is a lot to like about the Arduino Nano R4. I especially like its analog capabilities. It fills a gap by providing 8 high resolution analog channels in a small form factor, while still having enough resources to drive an I2C LCD. In addition, it includes a high speed 5V MCU with a very useful amount of memory.
I wanted to put together a demo that highlighted the analog capabilities in conjunction with an LCD and the platform didn't disappoint. I did have to scrounge around for an LCD library that could handle a second I2C port, but once I found one, everything went well.
I am very happy that I was chosen to road test this module. It has a great feature set for the type of project I often do and I fully expect to use it in upcoming projects. In fact I have one in the works right now.
Thank you element14 and Arduino for the opportunity to explore the Nano R4.