第 1 步:-从AndroidPlay商店下载Roboremo应用程序并将其安装在智能手机中。安装后,您将看到如图1所示的应用程序窗口,通过单击“菜单”按钮,您将看到如下所示的图2所示窗口:
第 2步:-单击连接按钮,您将看到下面图3所示的窗口,您必须选择“蓝牙RFCOMM”,您将能够将HC-06蓝牙模块与Android应用程序“Roboremo”连接。
第 3 步:-连接到HC-06蓝牙模块后,返回图2窗口,单击“编辑ui”以根据需要创建用户界面。
当单击“编辑ui”时,您将看到图1所示的窗口,单击屏幕上的任意位置,您将看到如图4所示的应用程序窗口,选择“按钮”以获取按钮结构。
第 4步:-选择按钮后,您将在屏幕上看到一个按钮结构进行编辑。您可以调整结构的大小并将其移动到屏幕上的任意位置。现在,要设置通过蓝牙单击时发送的值,您有“设置按下操作”(如图6 所示)并键入要从该特定按钮发送的值。就像,我们正在发送“1”通过按 Roboremo android应用程序中的“开始”按钮来旋转伺服。
您可以在后面给出的表格中检查所有值,单击不同的按钮发送。
第 5 步:-Zui后,我们有用户界面来使用智能手机控制伺服电机。
代码和说明
Zui后给出了通过蓝牙的Arduino控制伺服电机的完整代码。
Arduino具有伺服电机库,它处理所有与PWM相关的东西来旋转伺服器,您只需要输入要旋转的角度,并且有功能servo1.write(angle);这会将伺服器旋转到所需的角度。
这里我们定义伺服电机的库,软件串行库用于定义Rx和Tx引脚。
#include
#include
在下面的代码中,我们正在初始化 Rx 和 Tx 的 Arduino 引脚,为伺服和其他东西定义变量。
Servo myServo; int TxD = 11; int RxD = 10; int servoposiTIon; intservopos; int new1; SoftwareSerial bluetooth(TxD, RxD);
现在,将所有变量和组件设置为初始阶段。在这里,我们将伺服器连接到9千Arduino的引脚,并使伺服的初始位置为0度。串行和蓝牙通信的波特率也已设置为 9600.
void setup() {
int pos=0;
myServo.attach(9);
myServo.write(0);
Serial.begin(9600); // start serialcommunicaTIon at 9600bps
bluetooth.begin(9600);
}
在空回路功能中,Arduino将一直检查输入的值,并根据从智能手机接收的值旋转伺服。所有值都将使用串行通信接收。
如果值为 0.则伺服将旋转到 0 度。同样,如果我们从蓝牙应用程序发送 45、90、135 和 180.则伺服将分别旋转到45、90、135 和 180 度角。
void loop() {
if (bluetooth.available()){
String value = bluetooth.readString();
servoposiTIon = value.toInt();
if (value.toInt() == 0){
Serial.println(servoposiTIon);
myServo.write(0);
}
if (value.toInt() == 45){
Serial.println(servoposition);
myServo.write(45);
}
if (value.toInt() == 90){
Serial.println(servoposition);
myServo.write(90);
}
if (value.toInt() == 135){
Serial.println(servoposition);
myServo.write(135);
}
if (value.toInt() == 180){
Serial.println(servoposition);
myServo.write(180);
}
如果我们通过按开始按钮发送值“1”,则伺服将连续旋转,直到按下停止按钮。在这里,我们在按下停止按钮时发送“2”,Arduino将读取该按钮,它将中断 while 循环并停止伺服。
while(value.toInt()==1){
if (bluetooth.available())
{
value = bluetooth.readString();
Serial.println(value);
if (value.toInt()==2)
{Serial.println("YYY"); break; }
}
servopos++;
delay(30);
Serial.println(servopos);
myServo.write(servopos);
if (servopos ==180 )
{servopos=0;break;}
}
}
}
使用蓝牙的伺服电机控制工作: