ddd

Dependencies:   a4998ss mbed

Fork of whouse by Keegan Hu

Committer:
glintligo
Date:
Sun Jun 03 10:18:11 2018 +0000
Revision:
4:d66b6f331b74
Parent:
3:09f6061e6e5d
ddd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bilybill 0:2e00b81c9137 1 #include "mbed.h"
Bilybill 0:2e00b81c9137 2 #include "Stepper_motor.h"
glintligo 4:d66b6f331b74 3 #include "esp8266.h"
glintligo 4:d66b6f331b74 4 #include <cstdarg>
glintligo 4:d66b6f331b74 5 #include <cstring>
glintligo 4:d66b6f331b74 6
glintligo 2:ecf401a37aa3 7 // en step dir button 减速比 细分数 初始方向
glintligo 4:d66b6f331b74 8 Stepper_motor s1(PB_9,PB_0,PB_7,PC_15,10,16,1);
glintligo 4:d66b6f331b74 9 Stepper_motor s2(PB_6,PA_7,PB_4,PB_13,10,16,1);
glintligo 4:d66b6f331b74 10 Stepper_motor s3(PB_3,PA_6,PA_12,PB_5,10,16,0);
glintligo 4:d66b6f331b74 11 DigitalOut air(PC_13);
glintligo 4:d66b6f331b74 12 Serial ser2usb(PB_10, PB_11, 115200);
glintligo 4:d66b6f331b74 13 int stepok = 0;
glintligo 4:d66b6f331b74 14 int actionok = 0;
glintligo 4:d66b6f331b74 15 int state;
glintligo 4:d66b6f331b74 16 int high;
Bilybill 0:2e00b81c9137 17 int main()
glintligo 3:09f6061e6e5d 18 {
glintligo 3:09f6061e6e5d 19 s1.Init();
glintligo 3:09f6061e6e5d 20 wait(5);
glintligo 3:09f6061e6e5d 21 s2.Init();
glintligo 3:09f6061e6e5d 22 wait(5);
glintligo 3:09f6061e6e5d 23 s3.Init();
glintligo 3:09f6061e6e5d 24 wait(5);
glintligo 4:d66b6f331b74 25 ser2usb.printf("starting\r\n");
glintligo 3:09f6061e6e5d 26
glintligo 4:d66b6f331b74 27 // 选定与 esp8266 相连接的串口,WiFi 名称和密码
glintligo 4:d66b6f331b74 28 Esp8266 client(PA_9, PA_10, "iot_b827ebd838be", "ab087c9e");// 参数分别为 TX pin / RX pin / SSID / Password
glintligo 4:d66b6f331b74 29
glintligo 4:d66b6f331b74 30 //声明所有的传感器,每行一个,每个由名字、单位两部分组成,最后一行必须为空指针作为结尾
glintligo 4:d66b6f331b74 31 const char* sensors[][2] = {
glintligo 4:d66b6f331b74 32 "actionok", "",
glintligo 4:d66b6f331b74 33 NULL, NULL //最后一行以空指针作为结束标记
glintligo 4:d66b6f331b74 34 };
glintligo 4:d66b6f331b74 35
glintligo 4:d66b6f331b74 36 //声明所有的执行器,每行一个,每个由名字、参数类型两部分组成,最后一行必须为空指针作为结尾
glintligo 4:d66b6f331b74 37 const char* actuators[][2] = {
glintligo 4:d66b6f331b74 38 "do", "int",
glintligo 4:d66b6f331b74 39 "high","int",
glintligo 4:d66b6f331b74 40 NULL, NULL //最后一行以空指针作为结束标记
glintligo 4:d66b6f331b74 41 };
glintligo 4:d66b6f331b74 42 ser2usb.printf("connecting...\r\n");
glintligo 4:d66b6f331b74 43
glintligo 4:d66b6f331b74 44 //连接到服务器
glintligo 4:d66b6f331b74 45 client.connect_mqtt_broker("192.168.12.1", "warehouse", sensors, actuators);
glintligo 4:d66b6f331b74 46
glintligo 4:d66b6f331b74 47 ser2usb.printf("Initialization done.\r\n");
glintligo 4:d66b6f331b74 48
glintligo 4:d66b6f331b74 49 char actuator_name[32], control_value[32];
glintligo 4:d66b6f331b74 50 while(1) {
glintligo 4:d66b6f331b74 51 //检查有没有收到新的执行器控制指令
glintligo 4:d66b6f331b74 52 if(client.get_control_cmd(actuator_name, control_value)){
glintligo 4:d66b6f331b74 53 ser2usb.printf("Received CMD %s %s\r\n", actuator_name, control_value);
glintligo 4:d66b6f331b74 54 //判断哪个执行器收到命令
glintligo 4:d66b6f331b74 55 if (actuator_name == "high")
glintligo 4:d66b6f331b74 56 {
glintligo 4:d66b6f331b74 57 high = atoi(control_value);
glintligo 4:d66b6f331b74 58 }
glintligo 4:d66b6f331b74 59 else if(actuator_name == "do")
glintligo 4:d66b6f331b74 60 {
glintligo 4:d66b6f331b74 61 state = atoi(control_value);
glintligo 4:d66b6f331b74 62 switch (state)
glintligo 4:d66b6f331b74 63 {
glintligo 4:d66b6f331b74 64 case 1: //forward1
glintligo 4:d66b6f331b74 65 s2.Config(10,10);
glintligo 4:d66b6f331b74 66 break;
glintligo 4:d66b6f331b74 67 case 2: //back1
glintligo 4:d66b6f331b74 68 s2.Config(-10,10);
glintligo 4:d66b6f331b74 69 case 3: //forward2
glintligo 4:d66b6f331b74 70 s2.Config(10,20);
glintligo 4:d66b6f331b74 71 case 4: //back2
glintligo 4:d66b6f331b74 72 s2.Config(-10,20);
glintligo 4:d66b6f331b74 73 case 5:
glintligo 4:d66b6f331b74 74 s3.Config(10,20); //到方块上方
glintligo 4:d66b6f331b74 75 wait(3);
glintligo 4:d66b6f331b74 76 // s1.Config(high,30); //下降
glintligo 4:d66b6f331b74 77 // wait(4);
glintligo 4:d66b6f331b74 78 // air = 1; //开气泵
glintligo 4:d66b6f331b74 79 // s1.Config(-high,30);//上升
glintligo 4:d66b6f331b74 80 // wait(3);
glintligo 4:d66b6f331b74 81 // s3.Config(-10,20); //到小车上方
glintligo 4:d66b6f331b74 82 // wait(3);
glintligo 4:d66b6f331b74 83 // s1.Config(20,20); //下降
glintligo 4:d66b6f331b74 84 // wait(3);
glintligo 4:d66b6f331b74 85 // air = 0; //关气泵
glintligo 4:d66b6f331b74 86 // wait(2);
glintligo 4:d66b6f331b74 87 // s1.Config(-20,20); //上升
glintligo 4:d66b6f331b74 88 client.publish_value("actionok", "0");
glintligo 4:d66b6f331b74 89 case 6:
glintligo 4:d66b6f331b74 90 s1.Config(20,20); //下降
glintligo 4:d66b6f331b74 91 wait(3);
glintligo 4:d66b6f331b74 92 // air = 1; //开气泵
glintligo 4:d66b6f331b74 93 // wait(2);
glintligo 4:d66b6f331b74 94 // s1.Config(-20,20); //上升
glintligo 4:d66b6f331b74 95 // wait(3);
glintligo 4:d66b6f331b74 96 // s3.Config(10,20); //到方块上方
glintligo 4:d66b6f331b74 97 // wait(3);
glintligo 4:d66b6f331b74 98 // s1.Config(high,30); //下降
glintligo 4:d66b6f331b74 99 // wait(4);
glintligo 4:d66b6f331b74 100 // air = 0; //关气泵
glintligo 4:d66b6f331b74 101 // s1.Config(-high,30);//上升
glintligo 4:d66b6f331b74 102 // wait(3);
glintligo 4:d66b6f331b74 103 // s3.Config(-10,20); //到小车上方
glintligo 4:d66b6f331b74 104 client.publish_value("actionok", "0");
glintligo 4:d66b6f331b74 105 default:
glintligo 4:d66b6f331b74 106 break;
glintligo 4:d66b6f331b74 107
glintligo 4:d66b6f331b74 108 }
glintligo 4:d66b6f331b74 109 }
glintligo 3:09f6061e6e5d 110 }
glintligo 4:d66b6f331b74 111 if (stepok == 1)
glintligo 4:d66b6f331b74 112 {
glintligo 4:d66b6f331b74 113 switch (state)
glintligo 4:d66b6f331b74 114 {
glintligo 4:d66b6f331b74 115 case 1:
glintligo 4:d66b6f331b74 116 case 2:
glintligo 4:d66b6f331b74 117 case 3:
glintligo 4:d66b6f331b74 118 case 4:
glintligo 4:d66b6f331b74 119 client.publish_value("actionok", "0");
glintligo 4:d66b6f331b74 120 stepok = 0;
glintligo 4:d66b6f331b74 121 break;
glintligo 4:d66b6f331b74 122 default:
glintligo 4:d66b6f331b74 123 break;
glintligo 4:d66b6f331b74 124
glintligo 4:d66b6f331b74 125 }
glintligo 4:d66b6f331b74 126 actionok = 0;
glintligo 4:d66b6f331b74 127 }
Bilybill 0:2e00b81c9137 128 }
glintligo 4:d66b6f331b74 129 }