小车 走

Dependencies:   mbed

Revision:
1:d89a943c462e
Child:
2:4a9ba34cd90a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mainwmx.cpp	Fri Jul 20 07:08:51 2018 +0000
@@ -0,0 +1,127 @@
+/*-----------------------------------------------------
+ File Name : main.cpp
+ Purpose : For esp8266 mbed porting
+ Creation Date : 22-06-2017
+ Last Modified :
+ Created By : Jeasine Ma [jeasinema[at]gmail[dot]com]
+-----------------------------------------------------*/
+#include <cstdarg>
+#include <cstring>
+#include "mbed.h"
+#include "esp8266.h"
+
+Serial ser2usb(PA_2, PA_3, 115200);  
+//DigitalIn ref(PA_12);
+DigitalOut LED(PC_13);
+DigitalOut IN1(PB_0);
+DigitalOut IN2(PB_1);
+DigitalOut IN3(PB_10);
+DigitalOut IN4(PB_11);
+//PwmOut ENA(PB_1);
+//PwmOut ENB(PB_0);
+//InterruptIn switch1(PB_6);
+int state = 0;
+int actionok = 0;
+void run_forwoard();
+void run_backwoard();
+void stop();
+void init();
+void after_irq();
+int switch_trigger;
+int main(void) {
+    for(int i =0;i<4;i++)
+    {
+    	LED=1;
+    	wait(1.0);
+    	LED=0;
+    	wait(1.0);
+    }
+    IN1 = 0;
+    IN2 = 0;
+    IN3 = 0;
+    IN4 = 0;
+   // ENA.period_ms(10);
+  //  ENB.period_ms(10);
+   // ENA.pulsewidth_ms(5);
+   // ENB.pulsewidth_ms(5);
+	
+	
+    ser2usb.printf("starting\r\n");
+    
+    // 选定与 esp8266 相连接的串口,WiFi 名称和密码
+    Esp8266 client(PA_9, PA_10, "iot_b827eb8fb527", "7c02b50b");// 参数分别为 TX pin / RX pin / SSID / Password//"iot_b827eb8fb527", "7c02b50b"
+
+    //声明所有的传感器,每行一个,每个由名字、单位两部分组成,最后一行必须为空指针作为结尾
+    const char* sensors[][2] = {
+        "actionok", "",
+        NULL, NULL //最后一行以空指针作为结束标记
+    };
+
+    //声明所有的执行器,每行一个,每个由名字、参数类型两部分组成,最后一行必须为空指针作为结尾
+    const char* actuators[][2] = {
+        "sudo", "int",
+        NULL, NULL //最后一行以空指针作为结束标记
+    };
+    ser2usb.printf("connecting...\r\n");
+
+    //连接到服务器
+    client.connect_mqtt_broker("192.168.12.1", "car", sensors, actuators);
+
+    ser2usb.printf("Initialization done.\r\n");
+    char actuator_name[32], control_value[32];
+    Timer t;// 定时器用于计量发送传感器数据的时间
+    t.start();
+		client.publish_value("sudo", "carinit");
+    while(1) {
+        //检查有没有收到新的执行器控制指令
+        if(client.get_control_cmd(actuator_name, control_value)){
+            ser2usb.printf("Received CMD %s %s\r\n", actuator_name, control_value);
+            //判断哪个执行器收到命令
+            state = atoi(control_value);
+            switch (state)
+            {
+                case 1:  // white to black
+                    run_forwoard();
+                    wait(1);
+                    stop();
+					client.publish_value("sudo", "carfinish");
+                    break;
+                    
+                case 2:
+                	run_backwoard();
+                	wait(1);
+                    stop();
+					client.publish_value("sudo", "carfinish");
+                    break;
+                    
+                default:
+                    break;
+                
+            }
+        }
+    }
+}
+
+
+void run_forwoard()
+{     IN1 = 1;
+      IN2 = 0;
+      IN3 = 1;
+      IN4 = 0;
+}
+
+void run_backwoard()
+{
+    IN1 = 0;
+    IN2 = 1;
+    IN3 = 0;
+    IN4 = 1;
+}
+
+void stop()
+{
+    IN1 = 0;
+    IN2 = 0;
+    IN3 = 0;
+    IN4 = 0;
+}