Microduino的cube小车。

Dependencies:   mbed-rtos mbed

Committer:
lixianyu
Date:
Wed May 25 11:52:03 2016 +0000
Revision:
1:758ccab13947
Child:
3:e4ac7c1a14de
??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 1:758ccab13947 1 //#include "Arduino.h"
lixianyu 1:758ccab13947 2
lixianyu 1:758ccab13947 3 //BLE//////////////////////
lixianyu 1:758ccab13947 4 #ifdef BLE_SoftSerial
lixianyu 1:758ccab13947 5 #include <Microduino_Protocol_SoftSer.h>
lixianyu 1:758ccab13947 6 #include <SoftwareSerial.h>
lixianyu 1:758ccab13947 7 SoftwareSerial mySerial(4, -1); // RX, TX (D5与电机冲突 屏蔽 只用RX)
lixianyu 1:758ccab13947 8 Protocol bleProtocol(&mySerial, TYPE_NUM); //软串口,校验数据类
lixianyu 1:758ccab13947 9 #else
lixianyu 1:758ccab13947 10 #include <Microduino_Protocol_HardSer.h>
lixianyu 1:758ccab13947 11 Protocol bleProtocol(&BLE_HardSerial, TYPE_NUM); //软串口,校验数据类
lixianyu 1:758ccab13947 12 #endif
lixianyu 1:758ccab13947 13
lixianyu 1:758ccab13947 14 //nRF//////////////////////
lixianyu 1:758ccab13947 15 #include <RF24Network.h>
lixianyu 1:758ccab13947 16 #include <RF24.h>
lixianyu 1:758ccab13947 17 #include <SPI.h>
lixianyu 1:758ccab13947 18 RF24 radio(9, 10);
lixianyu 1:758ccab13947 19 RF24Network network(radio);
lixianyu 1:758ccab13947 20 #define this_node 1 //设置本机ID
lixianyu 1:758ccab13947 21 #define other_node 0
lixianyu 1:758ccab13947 22 struct send_a { //发送
lixianyu 1:758ccab13947 23 uint32_t node_ms; //节点运行时间
lixianyu 1:758ccab13947 24 };
lixianyu 1:758ccab13947 25 struct receive_a { //接收
lixianyu 1:758ccab13947 26 uint32_t ms;
lixianyu 1:758ccab13947 27 uint16_t rf_CH[CHANNEL_NUM];
lixianyu 1:758ccab13947 28 };
lixianyu 1:758ccab13947 29
lixianyu 1:758ccab13947 30 //Mode//////////////////////
lixianyu 1:758ccab13947 31 enum _Mode {
lixianyu 1:758ccab13947 32 NRF,
lixianyu 1:758ccab13947 33 BLE
lixianyu 1:758ccab13947 34 };
lixianyu 1:758ccab13947 35
lixianyu 1:758ccab13947 36 bool protocolSetup()
lixianyu 1:758ccab13947 37 {
lixianyu 1:758ccab13947 38 SPI.begin(); //初始化SPI总线
lixianyu 1:758ccab13947 39 radio.begin();
lixianyu 1:758ccab13947 40 if (radio.isPVariant()) {
lixianyu 1:758ccab13947 41 network.begin(NRF_CHANNEL, this_node);
lixianyu 1:758ccab13947 42 return NRF;
lixianyu 1:758ccab13947 43 } else {
lixianyu 1:758ccab13947 44 bleProtocol.begin(BLE_SPEED);
lixianyu 1:758ccab13947 45 return BLE;
lixianyu 1:758ccab13947 46 }
lixianyu 1:758ccab13947 47 }
lixianyu 1:758ccab13947 48
lixianyu 1:758ccab13947 49 bool protocolRead(uint16_t *_channel, bool _mode)
lixianyu 1:758ccab13947 50 {
lixianyu 1:758ccab13947 51 if (_mode == NRF) {
lixianyu 1:758ccab13947 52 network.update();
lixianyu 1:758ccab13947 53 while ( network.available() ) {
lixianyu 1:758ccab13947 54 RF24NetworkHeader header;
lixianyu 1:758ccab13947 55 receive_a rec;
lixianyu 1:758ccab13947 56 network.read(header, &rec, sizeof(rec));
lixianyu 1:758ccab13947 57 for (int a = 0; a < CHANNEL_NUM; a++) {
lixianyu 1:758ccab13947 58 _channel[a] = rec.rf_CH[a];
lixianyu 1:758ccab13947 59 }
lixianyu 1:758ccab13947 60
lixianyu 1:758ccab13947 61 {
lixianyu 1:758ccab13947 62 send_a sen = { millis() }; //把这些数据发送出去,对应前面的发送数组
lixianyu 1:758ccab13947 63 RF24NetworkHeader header(other_node);
lixianyu 1:758ccab13947 64 if (network.write(header, &sen, sizeof(sen))) {
lixianyu 1:758ccab13947 65 return true;
lixianyu 1:758ccab13947 66 }
lixianyu 1:758ccab13947 67 }
lixianyu 1:758ccab13947 68 }
lixianyu 1:758ccab13947 69 } else {
lixianyu 1:758ccab13947 70 switch (bleProtocol.parse(_channel, MODE_WHILE)) {
lixianyu 1:758ccab13947 71 case P_NONE: //DATA NONE
lixianyu 1:758ccab13947 72 break;
lixianyu 1:758ccab13947 73 case P_FINE: //DATA OK
lixianyu 1:758ccab13947 74 return true;
lixianyu 1:758ccab13947 75 break;
lixianyu 1:758ccab13947 76 case P_ERROR: //DATA ERROR
lixianyu 1:758ccab13947 77 #ifdef BLE_SoftSerial
lixianyu 1:758ccab13947 78 mySerial.stopListening();
lixianyu 1:758ccab13947 79 mySerial.listen();
lixianyu 1:758ccab13947 80 #endif
lixianyu 1:758ccab13947 81 break;
lixianyu 1:758ccab13947 82 case P_TIMEOUT: //DATA TIMEOUT
lixianyu 1:758ccab13947 83 #ifdef BLE_SoftSerial
lixianyu 1:758ccab13947 84 mySerial.stopListening();
lixianyu 1:758ccab13947 85 mySerial.listen();
lixianyu 1:758ccab13947 86 #endif
lixianyu 1:758ccab13947 87 break;
lixianyu 1:758ccab13947 88 }
lixianyu 1:758ccab13947 89 }
lixianyu 1:758ccab13947 90
lixianyu 1:758ccab13947 91 return false;
lixianyu 1:758ccab13947 92 }