|
楼主 |
发表于 2016-10-6 21:02
|
显示全部楼层
本帖最后由 qshangwu 于 2016-10-7 18:11 编辑
问题解决,更新了一下代码。
主板程序:
- #include <SoftwareSerial.h>
- SoftwareSerial BlueTooth(8,9);//创建虚拟串口,Pin8 Rx,Pin9 Tx
- int P_Switch_info_1;//存储电位器T1时电压信息
- int P_Switch_info_2;//存储电位器T2时电压信息
- int P_ave;//将T1/T2电压信息取平均值,避免电压过频波动
- int M_angle; //存储舵机角度信息,并通过蓝牙传出
- void setup() {
- Serial.begin(9600);
- BlueTooth.begin(9600);
- P_Switch_info_1 = 0;
- P_Switch_info_2 =0;
- }
- void loop() {
- P_Switch_info_1 = analogRead(A4);//读取A4处电位器T1时电压值
- delay(50);
- P_Switch_info_2 = analogRead(A4);//读取A4处电位器T2(T1+50ms)时电压值
- P_ave = int((P_Switch_info_1 + P_Switch_info_2)/2);//取电压平均值
- M_angle = map(P_ave,0,1023,0,180);//将电压值换算为角度值
- delay(50);
- BlueTooth.write(byte(M_angle));//通过蓝牙传出角度字符,注意此处必须要设置传出数据为byte,否则接受时会因ASIC变为乱码
- }
复制代码
从板代码
- #include <SoftwareSerial.h>
- #include <Servo.h>
- SoftwareSerial BlueTooth(8,9); //接收蓝牙(从机)放到Pin8,9口
- Servo Motor; //创建servo实例
- int M_angle;//存储从蓝牙接收到的角度信息
- void setup() {
- BlueTooth.begin(9600);
- Serial.begin(9600);
- Motor.attach(4); //舵机放到Pin4口
- M_angle = 0;
- }
- void loop() {
- if (BlueTooth.available() > 0){ //当蓝牙有信息传入时开始接收数据
- M_angle = BlueTooth.read();
- Motor.write(M_angle); //将角度数据写入舵机
- delay(50);
- }
- //delay(50);
- }
复制代码
目前可以无线遥控舵机旋转,不过舵机还是有微弱的抖动问题。不过蓝牙传输的问题解决了。
|
|