适用于Arduino Nano 33 IoT的软件系列

SoftwareSerial for Arduino Nano 33 IoT(适用于Arduino Nano 33 IoT的软件系列)
本文介绍了适用于Arduino Nano 33 IoT的软件系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我计划从旧的5V Arduino Nano迁移到新的Arduino Nano 33 IoT。我已经使用Software Serial(SoftwareSerial.h)为旧的5V Arduino Nano编写了与Sim800L模块通信的功能代码。但是,当我将主板更改为新的Arduino Nano 33 IoT时,找不到软件串行库。

我尝试在"Sketch"下的"Include Library"菜单中找到它,但库就是不在那里。考虑到这个产品是如此新,我还没有找到任何有用的研究来帮助我做这件事。我的EEPROM库也有同样的问题。

#include <SoftwareSerial.h>
#include <EEPROM.h>

有没有人知道如何将SoftwareSerial.h和EEPROM.h库包含到新的Nano 33 IoT电路板中,或者是否知道用于新电路板的新库?

以下是我在编译时收到的错误信息:

Sim800L_V7.1:3:12: error: SoftwareSerial.h: No such file or directory

   #include <SoftwareSerial.h>

            ^~~~~~~~~~~~~~~~~~

compilation terminated.

exit status 1
SoftwareSerial.h: No such file or directory

如有任何帮助,我们将不胜感激 谢谢

推荐答案

没有SoftwareSerial.h可用于Arduino Nano 33 IoT,因为它不是必需的。此主板提供更多功能:可分配给不同引脚的硬件系列。

此功能由微控制器Atmel SAMD21G提供,称为I/O多路复用(详情请参见the data sheet Atmel SAM D21E / SAM D21G / SAM D21J第21页)。微控制器提供6个Sercom,您可以将其分配给(几乎)任何引脚。

Arduino Nano 33 IoT已经使用了一些Sercom:

  • SERCOM2 for SPI Nina
  • 用于MOSI/MISO的SERCOM3
  • I2C总线的SERCOM4
  • 用于串行调试(USB)的SERCOM5

我们还有SERCOM0和SERCOM1。

variant.cppvariant.h文件中描述了管脚分配的详细信息。由于Arduino是开源的,您可以在the GitHub repository for SAMD boards上轻松找到它们。

对于Arduino Nano 33 IoT,引脚分配说明如下:

  • variants/nano_33_iot/variant.cpp
  • variants/nano_33_iot/variant.h

通过阅读variant.cpp,我们了解了引脚分配,特别是SAMD引脚(PAxx或PBxx)和Arduino引脚之间的链接。

SAMD引脚对于连接the data sheet Atmel SAM D21E / SAM D21G / SAM D21J的端口功能复用非常重要。

Sercom可以是传统备用。在数据表中,经典位于C列,备用位于D列。Sercom由其索引和焊盘定义。例如:SERCOM0/PAD[3]也称为0.3

备注:RX的焊盘定义为0到3,但TX仅定义在0和2上。这是选择要使用的管脚时的重要注意事项。

For reference, see the table I used to select the SERCOM to assign.

理论讲够了,去找解决方案吧…

在Arduino Nano 33 IoT的5(RX)和6(TX)针脚上添加硬件系列:

#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom0, 5, 6, SERCOM_RX_PAD_1, UART_TX_PAD_0);

// Attach the interrupt handler to the SERCOM
void SERCOM0_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 5 and 6 to SERCOM alt
  pinPeripheral(5, PIO_SERCOM_ALT);
  pinPeripheral(6, PIO_SERCOM_ALT);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}

另一个示例,在Arduino Nano 33 IoT的13(RX)和8(TX)针脚上添加硬件系列

#include <Arduino.h>
#include "wiring_private.h"

Uart mySerial (&sercom1, 13, 8, SERCOM_RX_PAD_1, UART_TX_PAD_2);

// Attach the interrupt handler to the SERCOM
void SERCOM1_Handler()
{
    mySerial.IrqHandler();
}

void setup() {
  // Reassign pins 13 and 8 to SERCOM (not alt this time)
  pinPeripheral(13, PIO_SERCOM);
  pinPeripheral(8, PIO_SERCOM);

  // Start my new hardware serial
  mySerial.begin(9600);
}

void loop() {
  // Do something with mySerial...
}

这篇关于适用于Arduino Nano 33 IoT的软件系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

C++ find method not working(C++查找方法不起作用)
How to determine the offset of an element of a tuple at compile time?(如何在编译时确定元组元素的偏移量?)
Error: control Reaches end of non void function(错误:控件已到达非无效函数的末尾)
Error: Jump to case label in switch statement(错误:跳转到SWITCH语句中的CASE标签)
Order of elements in set of pointers(指针集中元素的顺序)
error while loading shared libraries: jvm.dll(加载共享库时出错:jvm.dll)