After compiling I get this error:
> Arduino: 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Board: "Arduino Nano 33 BLE"
>
>
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:362:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
>
> #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
>
> ^~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'bool SoftwareSerial::listen()':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:418:23: error: 'SREG' was not declared in this scope
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:418:23: note: suggested alternative: 'SING'
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> SING
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:419:5: error: 'cli' was not declared in this scope
>
> cli();
>
> ^~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'void SoftwareSerial::setTX(uint8_t)':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:593:22: error: 'digitalPinToBitMask' was not declared in this scope
>
> _transmitBitMask = digitalPinToBitMask(tx);
>
> ^~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:593:22: note: suggested alternative: 'digitalPinToPinName'
>
> _transmitBitMask = digitalPinToBitMask(tx);
>
> ^~~~~~~~~~~~~~~~~~~
>
> digitalPinToPinName
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:595:27: error: 'portOutputRegister' was not declared in this scope
>
> _transmitPortRegister = portOutputRegister(port);
>
> ^~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:595:27: note: suggested alternative: '_transmitPortRegister'
>
> _transmitPortRegister = portOutputRegister(port);
>
> ^~~~~~~~~~~~~~~~~~
>
> _transmitPortRegister
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'void SoftwareSerial::setRX(uint8_t)':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:604:21: error: 'digitalPinToBitMask' was not declared in this scope
>
> _receiveBitMask = digitalPinToBitMask(rx);
>
> ^~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:604:21: note: suggested alternative: 'digitalPinToPinName'
>
> _receiveBitMask = digitalPinToBitMask(rx);
>
> ^~~~~~~~~~~~~~~~~~~
>
> digitalPinToPinName
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:606:26: error: 'portInputRegister' was not declared in this scope
>
> _receivePortRegister = portInputRegister(port);
>
> ^~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'void SoftwareSerial::begin(long int)':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:617:31: error: 'table' was not declared in this scope
>
> for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i)
>
> ^~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:617:31: note: suggested alternative: 'tanl'
>
> for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i)
>
> ^~~~~
>
> tanl
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:633:9: error: 'digitalPinToPCICR' was not declared in this scope
>
> if (digitalPinToPCICR(_receivePin))
>
> ^~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:633:9: note: suggested alternative: 'digitalPinToPort'
>
> if (digitalPinToPCICR(_receivePin))
>
> ^~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:635:46: error: 'digitalPinToPCICRbit' was not declared in this scope
>
> *digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:635:46: note: suggested alternative: 'digitalPinToPort'
>
> *digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:635:42: error: '_BV' was not declared in this scope
>
> *digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
>
> ^~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:635:42: note: suggested alternative: '_B'
>
> *digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));
>
> ^~~
>
> _B
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:636:8: error: 'digitalPinToPCMSK' was not declared in this scope
>
> *digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:636:8: note: suggested alternative: 'digitalPinToPort'
>
> *digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:636:46: error: 'digitalPinToPCMSKbit' was not declared in this scope
>
> *digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:636:46: note: suggested alternative: 'digitalPinToPort'
>
> *digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'void SoftwareSerial::end()':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:651:7: error: 'digitalPinToPCMSK' was not declared in this scope
>
> if (digitalPinToPCMSK(_receivePin))
>
> ^~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:651:7: note: suggested alternative: 'digitalPinToPort'
>
> if (digitalPinToPCMSK(_receivePin))
>
> ^~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:652:45: error: 'digitalPinToPCMSKbit' was not declared in this scope
>
> *digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:652:45: note: suggested alternative: 'digitalPinToPort'
>
> *digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~~~~~~~~~~~~~~~~~~
>
> digitalPinToPort
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:652:41: error: '_BV' was not declared in this scope
>
> *digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:652:41: note: suggested alternative: '_B'
>
> *digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));
>
> ^~~
>
> _B
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'virtual size_t SoftwareSerial::write(uint8_t)':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:687:21: error: 'SREG' was not declared in this scope
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:687:21: note: suggested alternative: 'SING'
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> SING
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:688:3: error: 'cli' was not declared in this scope
>
> cli(); // turn off interrupts for a clean txmit
>
> ^~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:692:26: error: 'XMIT_START_ADJUSTMENT' was not declared in this scope
>
> tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT);
>
> ^~~~~~~~~~~~~~~~~~~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp: In member function 'virtual void SoftwareSerial::flush()':
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:735:21: error: 'SREG' was not declared in this scope
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:735:21: note: suggested alternative: 'SING'
>
> uint8_t oldSREG = SREG;
>
> ^~~~
>
> SING
>
> C:\Users\KevB\Documents\Arduino\libraries\SoftwareSerial-master\SoftwareSerial.cpp:736:3: error: 'cli' was not declared in this scope
>
> cli();
>
> ^~~
>
> exit status 1
>
> Error compiling for board Arduino Nano 33 BLE.
Is it possible that this code won’t work on a Nano33BLE format. I found this earlier:
SoftwareSerial.h Library not found - Using Arduino / Installation & Troubleshooting - Arduino Forum
As you discovered, there is no SoftwareSerial library for the SAMD architecture of the Nano 33 IoT. However, there is no need for one. The Nano 33 IoT has an unused hardware serial port named Serial1 on pins 0 and 1, so just use that. It's also possible to get more if you need it, but you most likely don't so we won't worry about that.
Note that the Nano 33 IoT is different from the classic Nano because the serial port on pins 0 and 1 (Serial) on the classic Nano is also used for uploading sketches and other communication with the computer (e.g., Serial Monitor), so it's not really convenient to use Serial for other purposes on the classic Nano. This is why you will often see people using SoftwareSerial library with the Nano, Uno, Pro Mini, etc. But the Nano 33 IoT is different because the Serial1 serial port on pins 0 and 1 is not used for anything, so you are free to use those pins for your own purposes.
If so, I take it if I do as this guy was instructed?