![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ddd
Fork of whouse by
main.cpp@4:d66b6f331b74, 2018-06-03 (annotated)
- Committer:
- glintligo
- Date:
- Sun Jun 03 10:18:11 2018 +0000
- Revision:
- 4:d66b6f331b74
- Parent:
- 3:09f6061e6e5d
ddd
Who changed what in which revision?
User | Revision | Line number | New 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 | } |