とあるモノのプロトタイピングに3本のシリアルポートを使いたかったので、シリアルを4本持っていて安価な新しいArduinoの仲間、Nano Everyを購入。ソフトシリアルでもいいっちゃいいんだけどなんかキモイしね。
とりあえずArduino IDEで使ってみたところ、SerialとSerial1の2本が使える様になっていた。よしよし。
しかしですよ、同様にSerial2とSerial3を追加してコンパイルしたところエラー。。
Serialが4本あるって何処で聞いたんだっけ??もしかして勘違い???
使用しているマイコン Atmega4809のデータシート確認したところ、ちゃんと4チャンネルありました。よかった~

ということで、要はArduino IDEで読み込むファイルに書かれていないんだろうと推測。C:\Users\ryo\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.5\ 以下で”Serial”でgrepしたらそれっぽいヘッダーファイルがありました。そいつは、
C:\Users\ryo\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.5\variants\nona4809\pins_arduino.h

ピンアサインでHWSERIAL2と3がNONEなのでそいつの記述の追加。HWSERIAL0の真似でOK。以下その部分の修正後

//#define HWSERIAL2_MUX (PORTMUX_USART0_NONE_gc)
#define HWSERIAL2 (&USART0)
#define HWSERIAL2_DRE_VECTOR (USART0_DRE_vect)
#define HWSERIAL2_DRE_VECTOR_NUM (USART0_DRE_vect_num)
#define HWSERIAL2_RXC_VECTOR (USART0_RXC_vect)
#define HWSERIAL2_MUX (PORTMUX_USART0_DEFAULT_gc)
#define PIN_WIRE_HWSERIAL2_RX (7)
#define PIN_WIRE_HWSERIAL2_TX (2)

//#define HWSERIAL3_MUX (PORTMUX_USART2_NONE_gc)
#define HWSERIAL3 (&USART2)
#define HWSERIAL3_DRE_VECTOR (USART2_DRE_vect)
#define HWSERIAL3_DRE_VECTOR_NUM (USART2_DRE_vect_num)
#define HWSERIAL3_RXC_VECTOR (USART2_RXC_vect)
#define HWSERIAL3_MUX (PORTMUX_USART2_ALT1_gc)
#define PIN_WIRE_HWSERIAL3_RX (3)
#define PIN_WIRE_HWSERIAL3_TX (6)

同じファイルの最後辺りにdefineもあるので追加しておく

#define SERIAL_PORT_MONITOR       Serial
#define SERIAL_PORT_HARDWARE      Serial1
#define SERIAL_PORT_HARDWARE1     Serial2
#define SERIAL_PORT_HARDWARE2     Serial3
#define SERIAL_PORT_USBVIRTUAL    Serial
#define SERIAL_PORT_HARDWARE_OPEN   Serial1
#define SERIAL_PORT_HARDWARE_OPEN1  Serial2
#define SERIAL_PORT_HARDWARE_OPEN2  Serial3

以上でArduino IDEでSerial2とSerial3が使えました!やったー

ちなみにピンアサインは、

Serial2 TX=D2, RX=D7
Serial3 TX=D6, RX=D3

としています。

Serial2にCO2センサ(MH-Z14A)、Serial1にRS485、SerialはUSB接続でデバッグプリント。
というわけで無事にSerial3本使えてます~