0

经验级别 = 初学者

我正在做一个个人项目,最初是按照 arduino 项目页面中的本教程通过按钮开关发送短信:

https://create.arduino.cc/projecthub/SurtrTech/send-sms-text-from-arduino-using-sim800l-gsm-gprs-module-228975

从那以后,我不得不从使用我的 5V Arduino UNO 切换到 Nano 33 BLE,但现在仍然想实现相同的目标(通过按钮开关发送短信)。由于SoftwareSerial.h该板不可用,我尝试遵循解决方案SoftwareSerial for Arduino Nano 33 IoT,以及在同一个线程中更进一步的解决方案,但无法以我目前的经验水平理解实现。这是我上传到 Nano 的代码

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

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

#define button1 7 //Button pin, on the other pin it's wired with GND

bool button_State; //Button state

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

void setup() {
  // Reassign pins 5 and 6 to SERCOM alt
  pinMode(button1, INPUT_PULLUP); //The button is always on HIGH level, when pressed it goes LOW
  pinPeripheral(5, PIO_SERCOM_ALT);
  pinPeripheral(6, PIO_SERCOM_ALT);

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

void loop() {
  // Do something with mySerial...
  if (button_State == LOW) {
    Serial.println("Button pressed");
    delay(200);

    SendSMS();
  }

  if (mySerial.available()){
    Serial.write(mySerial.read());
  }
}


void SendSMS(){
  Serial.println("Sending SMS...");
  mySerial.print("AT+CMGF=1\r"); 
  delay(100);
  mySerial.print("AT+CMGS=\"+insert phone num\"\r");
  delay(500);
  mySerial.print("Beehive under Attack!");
  delay(500);
  mySerial.print((char)26);
  delay(500);
  mySerial.println();
  Serial.println("Text Sent.");
  delay(500);
  
} 

我得到的错误是“sercom0 没有在这个范围内声明”。我不明白如何分配硬件串行引脚来实现相同的功能。

我的项目目标涉及使用 GSM 模块做更多事情,但首先我需要对初始实现有更具体的了解。任何帮助表示赞赏

4

0 回答 0