Nano RP2040 with Encoder.h does not work

I use Encoder KY-040 with library PaulStoffregen. I get numerous error messages. Can someone help me please.

https://funduino.de/nr-32-der-rotary-encoder-ky-040

Processing nanorp2040connect (platform: raspberrypi; board: nanorp2040connect; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/raspberrypi/nanorp2040connect.html
PLATFORM: Raspberry Pi RP2040 (1.9.0) > Arduino Nano RP2040 Connect
HARDWARE: RP2040 133MHz, 264KB RAM, 2MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, jlink, raspberrypi-swd)
PACKAGES:
 - framework-arduino-mbed @ 4.0.2
 - tool-openocd-raspberrypi @ 2.1100.0 (11.0)
 - tool-rp2040tools @ 1.0.2
 - toolchain-gccarmnoneeabi @ 1.90201.191206 (9.2.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 43 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Encoder @ 1.4.2
Building in release mode
Compiling .pio\build\nanorp2040connect\src\main.cpp.o
Compiling .pio\build\nanorp2040connect\libff7\Encoder\Encoder.cpp.o
Archiving .pio\build\nanorp2040connect\libFrameworkArduinoVariant.a
Compiling .pio\build\nanorp2040connect\FrameworkArduino\Serial.cpp.o
Compiling .pio\build\nanorp2040connect\FrameworkArduino\Tone.cpp.o
In file included from .pio\libdeps\nanorp2040connect\Encoder\Encoder.h:46,
                 from .pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:2:
.pio\libdeps\nanorp2040connect\Encoder\utility/interrupt_pins.h:334:2: error: #error "Interrupts are unknown for this board, please add to this code"
  334 | #error "Interrupts are unknown for this board, please add to this code"
      |  ^~~~~
.pio\libdeps\nanorp2040connect\Encoder\utility/interrupt_pins.h:337:2: error: #error "Encoder requires interrupt pins, but this board does not have any :("
  337 | #error "Encoder requires interrupt pins, but this board does not have any :("
      |  ^~~~~
.pio\libdeps\nanorp2040connect\Encoder\utility/interrupt_pins.h:338:2: error: #error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."
  338 | #error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."
      |  ^~~~~
In file included from .pio\libdeps\nanorp2040connect\Encoder/Encoder.h:46,
                 from src\main.cpp:3:
.pio\libdeps\nanorp2040connect\Encoder/utility/interrupt_pins.h:334:2: error: #error "Interrupts are unknown for this board, please add to this code"
  334 | #error "Interrupts are unknown for this board, please add to this code"
      |  ^~~~~
.pio\libdeps\nanorp2040connect\Encoder/utility/interrupt_pins.h:337:2: error: #error "Encoder requires interrupt pins, but this board does not have any :("
  337 | #error "Encoder requires interrupt pins, but this board does not have any :("
      |  ^~~~~
.pio\libdeps\nanorp2040connect\Encoder/utility/interrupt_pins.h:338:2: error: #error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."
  338 | #error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."
      |  ^~~~~
In file included from .pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:2:
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:61:11: error: 'IO_REG_TYPE' does not name a type
   61 |  volatile IO_REG_TYPE * pin1_register;
      |           ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:62:11: error: 'IO_REG_TYPE' does not name a type
   62 |  volatile IO_REG_TYPE * pin2_register;
      |           ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:63:2: error: 'IO_REG_TYPE' does not name a type
   63 |  IO_REG_TYPE            pin1_bitmask;
      |  ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:64:2: error: 'IO_REG_TYPE' does not name a type
   64 |  IO_REG_TYPE            pin2_bitmask;
      |  ^~~~~~~~~~~
In file included from .pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:2:
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:45:30: error: 'CORE_NUM_INTERRUPT' was not declared in this scope; did you mean 'NOT_AN_INTERRUPT'?
   45 | #define ENCODER_ARGLIST_SIZE CORE_NUM_INTERRUPT
      |                              ^~~~~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:153:50: note: in expansion of macro 'ENCODER_ARGLIST_SIZE'
  153 |  static Encoder_internal_state_t * interruptArgs[ENCODER_ARGLIST_SIZE];
      |                                                  ^~~~~~~~~~~~~~~~~~~~
In file included from .pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:2:
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h: In constructor 'Encoder::Encoder(uint8_t, uint8_t)':
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:82:11: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
   82 |   encoder.pin1_register = PIN_TO_BASEREG(pin1);
      |           ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:82:27: error: 'PIN_TO_BASEREG' was not declared in this scope
   82 |   encoder.pin1_register = PIN_TO_BASEREG(pin1);
      |                           ^~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:83:11: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
   83 |   encoder.pin1_bitmask = PIN_TO_BITMASK(pin1);
      |           ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:83:26: error: 'PIN_TO_BITMASK' was not declared in this scope
   83 |   encoder.pin1_bitmask = PIN_TO_BITMASK(pin1);
      |                          ^~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:84:11: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
   84 |   encoder.pin2_register = PIN_TO_BASEREG(pin2);
      |           ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:85:11: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
   85 |   encoder.pin2_bitmask = PIN_TO_BITMASK(pin2);
      |           ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:92:31: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |                               ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:92:54: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |                                                      ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:92:7: error: 'DIRECT_PIN_READ' was not declared in this scope
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |       ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:93:31: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |                               ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:93:54: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |                                                      ^~~~~~~~~~~~
In file included from src\main.cpp:3:
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:61:11: error: 'IO_REG_TYPE' does not name a type
   61 |  volatile IO_REG_TYPE * pin1_register;
      |           ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:62:11: error: 'IO_REG_TYPE' does not name a type
   62 |  volatile IO_REG_TYPE * pin2_register;
      |           ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:63:2: error: 'IO_REG_TYPE' does not name a type
   63 |  IO_REG_TYPE            pin1_bitmask;
      |  ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:64:2: error: 'IO_REG_TYPE' does not name a type
   64 |  IO_REG_TYPE            pin2_bitmask;
      |  ^~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:93:7: error: 'DIRECT_PIN_READ' was not declared in this scope
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |       ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h: In static member function 'static void Encoder::update(Encoder_internal_state_t*)':
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:292:40: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                                        ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:292:60: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                                                            ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:292:19: error: 'DIRECT_PIN_READ' was not declared in this scope
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                   ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:293:40: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
  293 |   uint8_t p2val = DIRECT_PIN_READ(arg->pin2_register, arg->pin2_bitmask);
      |                                        ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.h:293:60: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
  293 |   uint8_t p2val = DIRECT_PIN_READ(arg->pin2_register, arg->pin2_bitmask);
      |                                                            ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp: At global scope:
.pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:8:28: error: 'Encoder_internal_state_t* Encoder::interruptArgs []' is not a static data member 
of 'class Encoder'
    8 | Encoder_internal_state_t * Encoder::interruptArgs[];
      |                            ^~~~~~~
.pio\libdeps\nanorp2040connect\Encoder\Encoder.cpp:8:28: error: storage size of 'Encoder::interruptArgs' isn't known
In file included from src\main.cpp:3:
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:45:30: error: 'CORE_NUM_INTERRUPT' was not declared in this scope; did you mean 'NOT_AN_INTERRUPT'?
   45 | #define ENCODER_ARGLIST_SIZE CORE_NUM_INTERRUPT
      |                              ^~~~~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:153:50: note: in expansion of macro 'ENCODER_ARGLIST_SIZE'
  153 |  static Encoder_internal_state_t * interruptArgs[ENCODER_ARGLIST_SIZE];
      |                                                  ^~~~~~~~~~~~~~~~~~~~
In file included from src\main.cpp:3:
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h: In constructor 'Encoder::Encoder(uint8_t, uint8_t)':
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:82:11: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
   82 |   encoder.pin1_register = PIN_TO_BASEREG(pin1);
      |           ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:82:27: error: 'PIN_TO_BASEREG' was not declared in this scope
   82 |   encoder.pin1_register = PIN_TO_BASEREG(pin1);
      |                           ^~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:83:11: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
   83 |   encoder.pin1_bitmask = PIN_TO_BITMASK(pin1);
      |           ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:83:26: error: 'PIN_TO_BITMASK' was not declared in this scope
   83 |   encoder.pin1_bitmask = PIN_TO_BITMASK(pin1);
      |                          ^~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:84:11: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
   84 |   encoder.pin2_register = PIN_TO_BASEREG(pin2);
      |           ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:85:11: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
   85 |   encoder.pin2_bitmask = PIN_TO_BITMASK(pin2);
      |           ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:92:31: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |                               ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:92:54: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |                                                      ^~~~~~~~~~~~
*** [.pio\build\nanorp2040connect\libff7\Encoder\Encoder.cpp.o] Error 1
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:92:7: error: 'DIRECT_PIN_READ' was not declared in this scope
   92 |   if (DIRECT_PIN_READ(encoder.pin1_register, encoder.pin1_bitmask)) s |= 1;
      |       ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:93:31: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |                               ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:93:54: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |                                                      ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:93:7: error: 'DIRECT_PIN_READ' was not declared in this scope
   93 |   if (DIRECT_PIN_READ(encoder.pin2_register, encoder.pin2_bitmask)) s |= 2;
      |       ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h: In static member function 'static void Encoder::update(Encoder_internal_state_t*)':
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:292:40: error: 'struct Encoder_internal_state_t' has no member named 'pin1_register'
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                                        ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:292:60: error: 'struct Encoder_internal_state_t' has no member named 'pin1_bitmask'
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                                                            ^~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:292:19: error: 'DIRECT_PIN_READ' was not declared in this scope
  292 |   uint8_t p1val = DIRECT_PIN_READ(arg->pin1_register, arg->pin1_bitmask);
      |                   ^~~~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:293:40: error: 'struct Encoder_internal_state_t' has no member named 'pin2_register'
  293 |   uint8_t p2val = DIRECT_PIN_READ(arg->pin2_register, arg->pin2_bitmask);
      |                                        ^~~~~~~~~~~~~
.pio\libdeps\nanorp2040connect\Encoder/Encoder.h:293:60: error: 'struct Encoder_internal_state_t' has no member named 'pin2_bitmask'
  293 |   uint8_t p2val = DIRECT_PIN_READ(arg->pin2_register, arg->pin2_bitmask);
      |                                                            ^~~~~~~~~~~~
*** [.pio\build\nanorp2040connect\src\main.cpp.o] Error 1
========================================================== [FAILED] Took 25.21 seconds ==========================================================

 *  Der Terminalprozess "C:\Users\CarstenTower\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload'" wurde mit folgendem Exitcode beendet: 1. 

platform.ini

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:nanorp2040connect]
platform = raspberrypi
board = nanorp2040connect

; change microcontroller
board_build.mcu = rp2040

; change MCU frequency
board_build.f_cpu = 133000000L

upload_protocol = picotool

framework = arduino

monitor_speed = 115200

lib_deps =
  paulstoffregen/Encoder @ ^1.4.2

See No support for Arduino nano rp2040 connect · Issue #79 · PaulStoffregen/Encoder · GitHub.

1.4.2 directly is too old, and while this semver expression allows for 1.4.3 which would have this issue fixed, PlatformIO’s registry doesn’t have that version: See PlatformIO Registry vs releases (cc @ivankravets?)

So just use

lib_deps =
   https://github.com/PaulStoffregen/Encoder/archive/refs/tags/1.4.3.zip

instead.

Oh, that was quick! Thanks very much!