简介
NodeMCU与Arduino通信有多种方法,例如:SPI,IIC,串口。该教程会讲解如何使用NodeMCU通过串口通信来控制Arduino上6号引脚的舵机,该例程中,我们将使用串口对NoduMCU发送信息,最后让Arduino上面的舵机工作。
软串口
除HardwareSerial外,Arduino还提供了SoftwareSerial类库,它可以将你的其他数字引脚通过程序模拟成串口通信引脚。通常我们将Arduino UNO上自带的串口称为硬件串口,而使用SoftwareSerial类库模拟成的串口,称为软件模拟串口(简称软串口)。软串口的函数和硬件串口的基本相同,用法上也基本相同,只要定义出一个软串口就可以当做硬件串口来使用了。
运行环境
Arduino IDE
接线方式
Arduino | SG90舵机 |
---|---|
5V | 红线 |
GND | 棕线/黑线 |
PIN6 | 黄线 |
Arduino | NoddeMCU |
---|---|
PIN3(TX) | D5(RX) |
PIN2(RX) | D6(TX) |
代码部分
提示:记得切换芯片包
Arduino部分
/* 以太网控制舵机
* 目的:该例程为NoduMCU通过软串口控制Arduino舵机中Arduino部分的代码
* 作者:Zeeland
* 最后修改时间:2021年11月28日 21:53:52
* https://gitee.com/zeeland/projects
*/
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial mySerial(2, 3); //RX=2,TX=3
Servo myServo; //创建Servo对象myServo
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
myServo.attach(6);
}
void loop() {
// 判断软串口是否传输数据进来,如有则进行分析
if ( mySerial.available()>0 ) {
int pos = mySerial.parseInt(); // 解析软串口数据中的整数信息并赋值给变量pos
Serial.print("[info] Set servo position: ");
Serial.println(pos); // 通过串口监视器显示变量pos数值
myServo.write(pos); // 使用pos变量数值设置伺服电机
delay(15);
}
}
NodeMCU部分
/* 以太网控制舵机
* 目的:该例程为NoduMCU通过软串口控制Arduino舵机中NodeMCU部分的代码
* 作者:Zeeland
* 最后修改时间:2021年11月28日 21:53:49
* https://gitee.com/zeeland/projects
*/
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
SoftwareSerial myserial(14,12);//RX=d5,TX=d6
void setup(){
myserial.begin(9600);
Serial.begin(9600);
}
void loop(){
// 判断软串口是否传输数据进来,如有则进行分析
if ( Serial.available()>0 ) {
int pos = Serial.parseInt(); // 解析软串口数据中的整数信息并赋值给变量pos
Serial.print("[info] Set servo position: ");
Serial.println(pos); // 通过串口监视器显示变量pos数值
myserial.println(pos); // 使用pos变量数值设置伺服电机
delay(15);
}
}
版权声明:本文为CSDN博主「帅气的黑桃J」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linZinan_/article/details/121642624
暂无评论