该项目将从头开始构建电动滑板,并使用手机上应用程序中的滑块控制电动滑板。
所需零件:
Arduino Uno或Nano
蓝牙低能量(BLE)模块,例如只作为从机的HC-06,或者可以作为主/从机的HC-05。
L293D电机驱动集成威廉希尔官方网站 。这个16针双H桥电机驱动器将允许我们控制电机的旋转方向和速度;
12V 直流马达
12V电池组
arduino的电源
跳线和实验板
威廉希尔官方网站 :
HC-06将在从主蓝牙设备发出时接收串行数据,该数据将通过其接收/发送引脚RX/TX(连接到主板的引脚5和4)传输到Arduino。其GND和VCC引脚将分别连接到GND和+5V。
L293D中的H桥允许通过打开或关闭一对开关来控制电机的旋转方向,其中4个开关以H的形状排列。
该电机驱动器也能够驱动两个不同速度的电机,但本项目仅使用一个。
要启动电机,请连接“启用1,2“(pin1)和”Vcc1”(引脚16)至+5V。连接“Vcc2”(针脚8)连接到12V电池组的正极。将针脚4、5、12和13连接到GND。连接”输入1“(引脚2)至Arduino的引脚10,它将传输pwm2信号和”输入2”(引脚7)至引脚9,用于pwm1。在这些之间切换将允许我们切换旋转方向。最后,将DC电机连接到输出1和2(引脚3和6)。
连接好的试验板:
程序:
#include《SoftwareSerial.h》
SoftwareSerial bt_ser(4,5); //连接到用于串行数据通信的RX和TX引脚
char c[6];
int i=0,speed_value=0,send_value;
#define pwm1 9 //输入2
#define pwm2 10 //输入 1
boolean motor_dir = 0;
void setup()
{
Serial.begin(9600);
bt_ser.begin(9600);
pinMode(pwm1, OUTPUT);
pinMode(pwm2, OUTPUT);
}
void loop()
{
while(bt_ser.available()) //数据传输时
{
if(bt_ser.available()》0)
{
c[i] = bt_ser.read(); //读取从主设备发送的字符串
Serial.print(c[i]);
i++;
}
if(c[i-1]==‘N’) //如果按下按钮
{
motor_dir = !motor_dir; //切换方向变量
if(motor_dir) //设置方向,pwm1和pwm2是相反的
digitalWrite(pwm2, 0);
else
digitalWrite(pwm1, 0);
}
}
speed_value = (c[1]-48)*100+(c[2]-48)*10+(c[3]-48)*1; //从字符串解释速度
if(motor_dir) //对于给定的方向
{
if(c[i-1]==‘#’){ //如果数据已从滑块传输
analogWrite(pwm1, speed_value-100); //100,当滑块处于“0”位置时,速度为0
i=0;
}
}
else{ //相反方向
if(c[i-1]==‘#’){
analogWrite(pwm2, speed_value-100);
i=0;
}
}
}
pwm1和pwm2是相反的,并允许切换旋转方向。
应用发送的串行数据是字符串c,这是速度和方向数据所在的位置。为了使其工作,速度位于c[1],c[2]和c[3]。
定制滑块来发送100到255之间的数字。这可以在阿尔杜伊诺的[0:255]上用一个新的速度变量绘制出来,如下所示:
new_speed = map(speed_value,100,255,0,255)
应用程序:
Bluetooth Electronics:它提供了创建仪表板以及自定义仪表板上的组件发送的数据或它们如何交互的选项。
(创建的仪表板的屏幕)
为了创建此界面,需要编辑一个新的仪表板,然后从编辑菜单中选择一个滑块,一个按钮和一个文本框。
滑块将必须按以下方式进行编辑:
最低价值:100
最大值:255
在更改滑块时发送字符串
字符串开头:*
字符串以:结尾
应该对按钮进行编辑(释放文本为空白):
媒体文字:N
发布文字:
然后,就可以添加文本以澄清仪表板。
责任编辑:pj
全部0条评论
快来发表一下你的评论吧 !