本帖最后由 邓文饼 于 2019-2-13 17:30 编辑
五自由度机械臂WiFi版(原创)
在学习arduino时,接触过蓝牙控制机械臂,后来想一下弄一个高级点,蓝牙相对WiFi 有点low.
在学习蓝牙控制机械臂时,还接触过app inventor2,这个挺好玩的。蓝牙的软件还能做出来(电气生),但是要用到Mqtt实在没办法搞定。还有一本厚厚的自控书要看。 这时候 BLINKER 拯救了我,我是十分感谢它的,实在太好用了。
在学习BLINKER之前,我看了一些大神的帖子,将nodemcu当成是服务端,将手机当成是客户端,然后用tcp协议 进行传输数据,这个方法也是OK的,也是简洁明了。
材料清单
1.................伺服电机xx90 5个(按照那副人类肩膀的图,机械臂最好有七个自由度,听起来很赞)
2.................nodemcu(esp8266) (这个实在太厉害,真的佩服发明的人)
电脑软件
Arduino ide
手机软件
BLINKER (应用市场可以下载)https://doc.blinker.app/?file=home-%E9%A6%96%E9%A1%B5 这个网址是Blinker 的官网 里面的文件很详细地讲述。
话不多说上代码
#include <Servo.h>
Servo s1;
Servo s2;
Servo s3;
Servo s4;
Servo s5;
#define BLINKER_WIFI
int s1pos, s2pos, s3pos, s4pos, s5pos;
int32_t s1ppos, s2ppos, s3ppos, s4ppos, s5ppos;
#include <Blinker.h>
char auth[] = "521b80a5b79f";
char ssid[] = "Daniel handsome";
char pswd[] = "15975618512dwb";
BlinkerSlider Slider1("a");
BlinkerSlider Slider2("b");
BlinkerSlider Slider3("c");
BlinkerSlider Slider4("d");
BlinkerSlider Slider5("e");
//number 1
void slider1_callback(int32_t value1)
{
BLINKER_LOG("get slider value: ", value1);
s1ppos=value1;
if(s1ppos>s1pos)
{
for(int i1=s1ppos;i1>=s1pos;i1--){
s1.write(i1);
delay(20);}
}
if(s1ppos<s1pos)
{
for(int i1=s1ppos;i1<=s1pos;i1++){
s1.write(i1);
delay(20);}
}
s1pos=s1ppos;
}
//number 2
void slider2_callback(int32_t value2)
{
BLINKER_LOG("get slider value: ", value2);
s2ppos=value2;
if(s2ppos>s2pos)
{
for(int i2=s2ppos;i2>=s2pos;i2--){
s2.write(i2);
delay(20);}
}
if(s2ppos<s2pos)
{
for(int i2=s2ppos;i2<=s2pos;i2++){
s2.write(i2);
delay(20);}
}
s2pos=s2ppos;
}
void slider3_callback(int32_t value3)
{
BLINKER_LOG("get slider value: ", value3);
s3ppos=value3;
if(s3ppos>s3pos)
{
for(int i3=s3ppos;i3>=s3pos;i3--){
s3.write(i3);
delay(20);}
}
if(s3ppos<s3pos)
{
for(int i3=s3ppos;i3<=s3pos;i3++){
s1.write(i3);
delay(20);}
}
s3pos=s3ppos;
}
void slider4_callback(int32_t value4)
{
BLINKER_LOG("get slider value: ", value4);
s4ppos=value4;
if(s4ppos>s4pos)
{
for(int i4=s4ppos;i4>=s4pos;i4--){
s4.write(i4);
delay(20);}
}
if(s4ppos<s4pos)
{
for(int i4=s4ppos;i4<=s4pos;i4++){
s4.write(i4);
delay(20);}
}
s4pos=s4ppos;
}
void slider5_callback(int32_t value5)
{
BLINKER_LOG("get slider value: ", value5);
s5ppos=value5;
if(s5ppos>s5pos)
{
for(int i5=s5ppos;i5>=s5pos;i5--){
s5.write(i5);
delay(20);}
}
if(s5ppos<s5pos)
{
for(int i5=s5ppos;i5<=s5pos;i5++){
s5.write(i5);
delay(20);}
}
s5pos=s5ppos;
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd);
Slider1.attach(slider1_callback);
Slider2.attach(slider2_callback);
Slider3.attach(slider3_callback);
Slider4.attach(slider4_callback);
Slider5.attach(slider5_callback);
s1.attach(D2);
s2.attach(D3);
s3.attach(D4);
s4.attach(D5);
s4.attach(D6);
s1pos = 90;
s1.write(s1pos);
s2pos = 0;
s2.write(s2pos);
s3pos = 0;
s3.write(s3pos);
s4pos = 0;
s4.write(s4pos);
s5pos = 0;
s5.write(s5pos);
}
void loop()
{
Blinker.run();
}
经检验,代码ok
原创 来自邓文饼 转贴 请把我的名字带上
|