p kj
/
MKS22-CubeFine
LPC824
Fork of CubeFine by
Diff: main.cpp
- Revision:
- 0:362c1482232c
- Child:
- 1:54a2d380f8c7
--- /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