基于Arduino的电位器无线控制舵机实验(2.4G透传模块、舵机、电位器)

1、概述

两个UNO板子,通过2.4G模块建立通信通道,一端读取电位器的模拟值,通过无线通道传输到另一端的UNO,另一端uno通过串口读取到的数据来控制连在D9上的舵机。

对于模块不了解的,可以先看一下我们的模块教程[传送门],了解掌握模块使用方法后,再尝试本小实验。因为综合实验一般涉及多个模块,我们仅对全部使用我司产品的客户做技术支持,若只是部分使用我司产品的,我们只对我司产品部分是否有故障进行排查。

2、所需材料

1、UNO主控板:官方板 或者 国产板
2、辅助配件:杜邦线
3、传感器和模块:2.4G无线透传模块B1K电位器舵机14500电池DC头两节装电池盒

3、接线

UNO-A:串口接2.4G模块,A0接电位器
UNO-B:串口接2.4G模块,D9接舵机
2.4模块需要预想配置成互相连接的模式,即模块A的发射ID对应模块B的接收ID,模块A的接收ID对应模块B的发射ID。如果不会配置可以先看2.4G透传模块的独立教程。

4、实验程序

电位器端:

int angle = analogRead(A0);
void setup(){
Serial.begin(9600);
}
void loop(){
int angle = analogRead(A0);
angle = map(angle, 0, 1023, 0, 180);
Serial.println(angle);
delay(10);
}

舵机端:

#include <Servo.h>//调用库文件
Servo myservo; // 创建一个伺服电机对象

char inByte = 0; //串口接收的数据
int angle = 0; //角度值
String temp = "";//临时字符变量,又或者说是缓存用的吧

void setup()
{
Serial.begin(9600);
myservo.attach(9);
}

void loop()
{
while(Serial.available()>0)
{
inByte=Serial.read();
temp += inByte;//把读到的字符存进临时变量里面缓存,
delay(2); //再继续判断串口还有没有数据,知道把所有数据都读取出来
}

angle = temp.toInt(); //把变量字符串类型转成整型
Serial.println(angle); //输出数据到串口上,以便观察
temp = "";//请看临时变量

myservo.write(angle); //控制舵机转动相应的角度。
delay(100);//延时100毫秒
}

效果如下:

1
分享到:

评论0

请先

原Arduino365.com域名更改为品牌域名ultirobot.com,承载内容要将更丰富,网站也进行了改版,改善阅读体验。
没有账号? 忘记密码?