![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Microduino的cube小车。
main.cpp@3:e4ac7c1a14de, 2016-05-27 (annotated)
- Committer:
- lixianyu
- Date:
- Fri May 27 01:44:31 2016 +0000
- Revision:
- 3:e4ac7c1a14de
- Parent:
- 1:758ccab13947
- Child:
- 4:0670023d3f36
???????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lixianyu | 0:403ac413a86d | 1 | #include "mbed.h" |
lixianyu | 0:403ac413a86d | 2 | #include "rtos.h" |
lixianyu | 0:403ac413a86d | 3 | #include "MicroduinoPinNames.h" |
lixianyu | 3:e4ac7c1a14de | 4 | #include "userDef.h" |
lixianyu | 3:e4ac7c1a14de | 5 | #include "Protocol.h" |
lixianyu | 3:e4ac7c1a14de | 6 | #include "Microduino_Motor.h" |
lixianyu | 3:e4ac7c1a14de | 7 | |
lixianyu | 3:e4ac7c1a14de | 8 | Motor MotorLeft(motor_pin0A, motor_pin0B); |
lixianyu | 3:e4ac7c1a14de | 9 | Motor MotorRight(motor_pin1A, motor_pin1B); |
lixianyu | 3:e4ac7c1a14de | 10 | /////////////////////////////////////////////////////////// |
lixianyu | 3:e4ac7c1a14de | 11 | #define CHANNEL_NUM 8 |
lixianyu | 3:e4ac7c1a14de | 12 | uint16_t channalData[CHANNEL_NUM]; //8通道数据 |
lixianyu | 3:e4ac7c1a14de | 13 | bool mode = 0; //nrf或者ble模式 |
lixianyu | 3:e4ac7c1a14de | 14 | int16_t throttle = 0; //油门 |
lixianyu | 3:e4ac7c1a14de | 15 | int16_t steering = 0; //转向 |
lixianyu | 3:e4ac7c1a14de | 16 | unsigned long safe_ms; |
lixianyu | 0:403ac413a86d | 17 | |
lixianyu | 1:758ccab13947 | 18 | DigitalOut myled(D11); |
lixianyu | 3:e4ac7c1a14de | 19 | Timer g_cubeTimer; |
lixianyu | 0:403ac413a86d | 20 | //Serial pc(P0_4,P0_0); |
lixianyu | 3:e4ac7c1a14de | 21 | |
lixianyu | 3:e4ac7c1a14de | 22 | static long map(long x, long in_min, long in_max, long out_min, long out_max) |
lixianyu | 3:e4ac7c1a14de | 23 | { |
lixianyu | 3:e4ac7c1a14de | 24 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; |
lixianyu | 3:e4ac7c1a14de | 25 | } |
lixianyu | 3:e4ac7c1a14de | 26 | |
lixianyu | 0:403ac413a86d | 27 | int main() |
lixianyu | 0:403ac413a86d | 28 | { |
lixianyu | 3:e4ac7c1a14de | 29 | g_cubeTimer.start(); |
lixianyu | 3:e4ac7c1a14de | 30 | mode = protocolSetup(); //遥控接收器初始化 |
lixianyu | 3:e4ac7c1a14de | 31 | |
lixianyu | 3:e4ac7c1a14de | 32 | MotorLeft.Fix(motor_fixL); |
lixianyu | 3:e4ac7c1a14de | 33 | MotorRight.Fix(motor_fixR); |
lixianyu | 0:403ac413a86d | 34 | //pc.baud(115200); |
lixianyu | 0:403ac413a86d | 35 | while(1) { |
lixianyu | 3:e4ac7c1a14de | 36 | if (protocolRead(channalData, mode)) { //判断是否接收到遥控信号 |
lixianyu | 3:e4ac7c1a14de | 37 | throttle = map(channalData[CHANNEL_THROTTLE], 1000, 2000, -MAX_THROTTLE, MAX_THROTTLE); |
lixianyu | 3:e4ac7c1a14de | 38 | steering = map(channalData[CHANNEL_STEERING], 1000, 2000, -MAX_STEERING, MAX_STEERING); |
lixianyu | 3:e4ac7c1a14de | 39 | |
lixianyu | 3:e4ac7c1a14de | 40 | MotorLeft.Driver(MotorLeft.GetData(throttle, steering, CHAN_LEFT)); |
lixianyu | 3:e4ac7c1a14de | 41 | MotorRight.Driver(MotorRight.GetData(throttle, steering, CHAN_RIGHT)); |
lixianyu | 3:e4ac7c1a14de | 42 | |
lixianyu | 3:e4ac7c1a14de | 43 | #ifdef _DEBUG |
lixianyu | 3:e4ac7c1a14de | 44 | Serial.print("DATA OK :["); |
lixianyu | 3:e4ac7c1a14de | 45 | for (int a = 0; a < CHANNEL_NUM; a++) { |
lixianyu | 3:e4ac7c1a14de | 46 | Serial.print(channalData[a]); |
lixianyu | 3:e4ac7c1a14de | 47 | Serial.print(" "); |
lixianyu | 3:e4ac7c1a14de | 48 | } |
lixianyu | 3:e4ac7c1a14de | 49 | Serial.print("],throttle:"); |
lixianyu | 3:e4ac7c1a14de | 50 | Serial.print(throttle); |
lixianyu | 3:e4ac7c1a14de | 51 | Serial.print(",steering:"); |
lixianyu | 3:e4ac7c1a14de | 52 | Serial.println(steering); |
lixianyu | 3:e4ac7c1a14de | 53 | #endif |
lixianyu | 3:e4ac7c1a14de | 54 | safe_ms = g_cubeTimer.read_ms(); |
lixianyu | 3:e4ac7c1a14de | 55 | } |
lixianyu | 3:e4ac7c1a14de | 56 | |
lixianyu | 3:e4ac7c1a14de | 57 | if (safe_ms > g_cubeTimer.read_ms()) { |
lixianyu | 3:e4ac7c1a14de | 58 | safe_ms = g_cubeTimer.read_ms(); |
lixianyu | 3:e4ac7c1a14de | 59 | } |
lixianyu | 3:e4ac7c1a14de | 60 | if (g_cubeTimer.read_ms() - safe_ms > SAFE_TIME_OUT) { |
lixianyu | 3:e4ac7c1a14de | 61 | MotorLeft.Free(); |
lixianyu | 3:e4ac7c1a14de | 62 | MotorRight.Free(); |
lixianyu | 3:e4ac7c1a14de | 63 | //MotorLeft.Brake(); |
lixianyu | 3:e4ac7c1a14de | 64 | //MotorRight.Brake(); |
lixianyu | 3:e4ac7c1a14de | 65 | } |
lixianyu | 0:403ac413a86d | 66 | //pc.printf("Hello world\r\n"); |
lixianyu | 0:403ac413a86d | 67 | //sleep(); |
lixianyu | 0:403ac413a86d | 68 | } |
lixianyu | 0:403ac413a86d | 69 | } |