一张总括图
(寒假入坑Arduino一个月 想着做一个小东西练练手 便想出了这个小创意)
首先:介绍下本项目的实现内容:
Arduino控制舵机转动角度 ---> 舵机的角度转为机械爪的抓取角度 ---> 实现物品的抓取 ---> 抓取后喇叭发出声音,示意抓取完成 ---(手机利用蓝牙控制转动角度)
1. 机械爪的舵机驱动
首先了解舵机的三根线分别代表什么:
地线(GND)--->棕色或黑色
电源线(VCC)--->红色
信号线(IN)---->橙色或白色-->接9号io口
ps:电源线一定要用外接电源,arduino本身能力不足以驱动舵机
程序思路
1,我们需要引入舵机的库,#include
2,通过 Servo myservo 创建舵机对象
3,使用 myservo.attach(9); 定义引脚9为舵机
4,通过 myservo.write(angle) 函数控制舵机的角度
通过以下的代码可以实现串口控制舵机的转动角度
//机械爪的串口控制代码,下载到arduino后,打开串口监视器,输入想要的角度
//此代码只是简单串口控制,并未用到蓝牙控制
#include <Servo.h> //引入舵机库 下载ide时自带的,不用再次下载
Servo myservo; // 创建一个伺服电机对象
char inByte = 0; //串口接收的数据
int angle = 0; //角度值
String temp = "";//临时字符变量
void setup()
{
myservo.attach(9); //定义舵机的引脚为9
Serial.begin(9600); //设置波特率
}
void loop()
{
while (Serial.available() > 0) //判断串口是否有数据
{
inByte = Serial.read();//读取数据,串口一次只能读1个字符
temp += inByte;//把读到的字符存进临时变量里面缓存,
//再继续判断串口还有没有数据,知道把所有数据都读取出来
}
if(temp != "") //判断临时变量是否为空
{
angle = temp.toInt(); //把变量字符串类型转成整型
Serial.println(angle); //输出数据到串口上,以便观察
}
temp = "";//请看临时变量
myservo.write(angle); //控制舵机转动相应的角度。
delay(100);//延时100毫秒
}
2.蓝牙控制转动角度
- HC系列蓝牙与Arduino的连接
- 进入 AT 模式进行蓝牙基本参数设置
- 利用 Andorid 蓝牙串口小程序测试功能
- 手机小程序 控制舵机转动