LPC824

Dependencies:   mbed

Fork of CubeFine by wu le

Revision:
0:362c1482232c
Child:
1:54a2d380f8c7
diff -r 000000000000 -r 362c1482232c main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 02 04:03:31 2016 +0000
@@ -0,0 +1,107 @@
+#include "mbed.h"
+//#include "rtos.h"
+#include "MicroduinoPinNames.h"
+#include "userDef.h"
+#include "Protocol.h"
+#include "Microduino_Motor.h"
+
+Timer g_cubeTimer;
+Timeout g_cubeTimeout;
+#if 1
+Motor MotorLeft(motor_pin0A, motor_pin0B);
+Motor MotorRight(motor_pin1A, motor_pin1B);
+///////////////////////////////////////////////////////////
+#define CHANNEL_NUM 8
+uint16_t channalData[CHANNEL_NUM]; //8通道数据
+bool mode = 0; //nrf或者ble模式
+int16_t throttle = 0; //油门
+int16_t steering = 0; //转向
+int safe_ms = 0;
+DigitalOut myled(D13);
+InterruptIn wkp(D0);
+InterruptIn wkp1(D1);
+static long map(long x, long in_min, long in_max, long out_min, long out_max)
+{
+    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+}
+
+static void wake_up(void)
+{
+    //myled = 0;
+}
+
+int main()
+{
+#if 1// To test wake up from deepsleep(), failed....but wake up from sleep() work. sleep() will reduce 2mA.
+    wkp.fall(wake_up);
+    wkp.rise(&wake_up);
+    wkp1.fall(&wake_up);
+    wkp1.rise(&wake_up);
+#endif
+    //myled = 1;
+    g_cubeTimer.start();
+
+    mode = protocolSetup();  //遥控接收器初始化
+
+    MotorLeft.Fix(motor_fixL);
+    MotorRight.Fix(motor_fixR);
+    //mypc.baud(115200);
+    while (1) {
+        if (protocolRead(channalData, mode)) { //判断是否接收到遥控信号
+            throttle = map(channalData[CHANNEL_THROTTLE], 1000, 2000, -MAX_THROTTLE, MAX_THROTTLE);
+            steering = map(channalData[CHANNEL_STEERING], 1000, 2000, -MAX_STEERING, MAX_STEERING);
+
+            MotorLeft.Driver(MotorLeft.GetData(throttle, steering, CHAN_LEFT));
+            MotorRight.Driver(MotorRight.GetData(throttle, steering, CHAN_RIGHT));
+
+#ifdef _DEBUG
+            Serial.print("DATA OK :[");
+            for (int a = 0; a < CHANNEL_NUM; a++) {
+                Serial.print(channalData[a]);
+                Serial.print(" ");
+            }
+            Serial.print("],throttle:");
+            Serial.print(throttle);
+            Serial.print(",steering:");
+            Serial.println(steering);
+#endif
+            safe_ms = g_cubeTimer.read_ms();
+        }
+
+        if (safe_ms > g_cubeTimer.read_ms()) {
+            safe_ms = g_cubeTimer.read_ms();
+        }
+        if (g_cubeTimer.read_ms() - safe_ms > SAFE_TIME_OUT) {
+            MotorLeft.Free();
+            MotorRight.Free();
+            sleep();//待机待机电流可减少4mA左右
+            //deepsleep();
+        }
+    } // while
+}
+#else
+DigitalOut myled(D13);
+PwmOut PWM_A(motor_pin0A);
+PwmOut PWM_B(motor_pin0B);
+int pv = 0;
+int main()
+{
+    myled.write(1);
+    PWM_A.period_us(255);
+    PWM_B.period_us(255);
+
+    PWM_A.pulsewidth_us(200);
+    PWM_B.pulsewidth_us(0);
+    while (1) {
+#if 0
+        PWM_B.pulsewidth_us(pv);
+        pv++;
+#endif
+        wait(0.5);
+        myled = !myled;
+        if (pv >= 255) {
+            pv = 0;
+        }
+    }
+}
+#endif
\ No newline at end of file