현성 김 / Mbed 2 deprecated 181202_Castone_design_master

Dependencies:   mbed nRF24L01P

Committer:
hyunsungkim
Date:
Sat Nov 03 13:16:17 2018 +0000
Revision:
0:2dade6db4d3a
Child:
1:450bd5ee8cdc
[id]

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hyunsungkim 0:2dade6db4d3a 1 #include "mbed.h"
hyunsungkim 0:2dade6db4d3a 2 #include "RF24.h"
hyunsungkim 0:2dade6db4d3a 3 #include "tone.h"
hyunsungkim 0:2dade6db4d3a 4
hyunsungkim 0:2dade6db4d3a 5 Serial pc(USBTX, USBRX);
hyunsungkim 0:2dade6db4d3a 6 Serial lidar(D1, D0);
hyunsungkim 0:2dade6db4d3a 7 PwmOut motor_RA(D9);
hyunsungkim 0:2dade6db4d3a 8 PwmOut motor_RB(D10);
hyunsungkim 0:2dade6db4d3a 9 PwmOut motor_LA(D3);
hyunsungkim 0:2dade6db4d3a 10 PwmOut motor_LB(D6);
hyunsungkim 0:2dade6db4d3a 11 PwmOut led_B(A1);
hyunsungkim 0:2dade6db4d3a 12 PwmOut led_G(A2);
hyunsungkim 0:2dade6db4d3a 13 PwmOut led_R(A5);
hyunsungkim 0:2dade6db4d3a 14 PwmOut buzzer(D5);
hyunsungkim 0:2dade6db4d3a 15 RF24 nrf(D11,D12,D13,D2,A3);
hyunsungkim 0:2dade6db4d3a 16 AnalogIn batteryCheck(A0);
hyunsungkim 0:2dade6db4d3a 17
hyunsungkim 0:2dade6db4d3a 18 void startBeep();
hyunsungkim 0:2dade6db4d3a 19 void endBeep();
hyunsungkim 0:2dade6db4d3a 20 void goForward();
hyunsungkim 0:2dade6db4d3a 21
hyunsungkim 0:2dade6db4d3a 22 uint8_t id = 0;
hyunsungkim 0:2dade6db4d3a 23 uint8_t rxAddr[10][6] = {"BOT0R","BOT1R","BOT2R","BOT3R","BOT4R","BOT5R","BOT6R","BOT7R","BOT8R","BOT9R"};
hyunsungkim 0:2dade6db4d3a 24 uint8_t txAddr[10][6] = {"BOT0T","BOT1T","BOT2T","BOT3T","BOT4T","BOT5T","BOT6T","BOT7T","BOT8T","BOT9T"};
hyunsungkim 0:2dade6db4d3a 25
hyunsungkim 0:2dade6db4d3a 26 int main() {
hyunsungkim 0:2dade6db4d3a 27 led_R=1;
hyunsungkim 0:2dade6db4d3a 28 led_G=1;
hyunsungkim 0:2dade6db4d3a 29 led_B=1;
hyunsungkim 0:2dade6db4d3a 30 startBeep();
hyunsungkim 0:2dade6db4d3a 31 pc.baud(115200);
hyunsungkim 0:2dade6db4d3a 32
hyunsungkim 0:2dade6db4d3a 33 nrf.begin();
hyunsungkim 0:2dade6db4d3a 34 nrf.stopListening();
hyunsungkim 0:2dade6db4d3a 35 nrf.openWritingPipe(txAddr[id]);
hyunsungkim 0:2dade6db4d3a 36 nrf.openReadingPipe(1,rxAddr[id]);
hyunsungkim 0:2dade6db4d3a 37 nrf.setChannel(101);
hyunsungkim 0:2dade6db4d3a 38
hyunsungkim 0:2dade6db4d3a 39 // Display the (default) setup of the nRF24L01+ chip
hyunsungkim 0:2dade6db4d3a 40 pc.printf( "My ID : %d", id);
hyunsungkim 0:2dade6db4d3a 41 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", 2000+nrf.getChannel() );
hyunsungkim 0:2dade6db4d3a 42 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getPALevel() );
hyunsungkim 0:2dade6db4d3a 43 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getDataRate() );
hyunsungkim 0:2dade6db4d3a 44 pc.printf( "nRF24L01+ TX Address : 0x%X%X%X%X%X\r\n", rxAddr[id][0], rxAddr[id][1], rxAddr[id][2], rxAddr[id][3], rxAddr[id][4]);
hyunsungkim 0:2dade6db4d3a 45 pc.printf( "nRF24L01+ RX Address : 0x%X%X%X%X%X\r\n", txAddr[id][0], txAddr[id][1], txAddr[id][2], txAddr[id][3], txAddr[id][4]);
hyunsungkim 0:2dade6db4d3a 46 pc.printf( "nRF24L01+ CRCWidth : %d Byte\r\n", nrf.getCRCLength() );
hyunsungkim 0:2dade6db4d3a 47
hyunsungkim 0:2dade6db4d3a 48 //goForward();
hyunsungkim 0:2dade6db4d3a 49
hyunsungkim 0:2dade6db4d3a 50 while(1) {
hyunsungkim 0:2dade6db4d3a 51 pc.printf("%f\r\n", batteryCheck.read());
hyunsungkim 0:2dade6db4d3a 52 wait(0.3);
hyunsungkim 0:2dade6db4d3a 53 }
hyunsungkim 0:2dade6db4d3a 54 }
hyunsungkim 0:2dade6db4d3a 55
hyunsungkim 0:2dade6db4d3a 56 void startBeep()
hyunsungkim 0:2dade6db4d3a 57 {
hyunsungkim 0:2dade6db4d3a 58 buzzer.write(0.5);
hyunsungkim 0:2dade6db4d3a 59 buzzer.period_us(1000000/Do5);
hyunsungkim 0:2dade6db4d3a 60 wait(0.1);
hyunsungkim 0:2dade6db4d3a 61 buzzer.period_us(1000000/Mi5);
hyunsungkim 0:2dade6db4d3a 62 wait(0.1);
hyunsungkim 0:2dade6db4d3a 63 buzzer.period_us(1000000/So5);
hyunsungkim 0:2dade6db4d3a 64 wait(0.1);
hyunsungkim 0:2dade6db4d3a 65 buzzer.write(0);
hyunsungkim 0:2dade6db4d3a 66 }
hyunsungkim 0:2dade6db4d3a 67
hyunsungkim 0:2dade6db4d3a 68 void endBeep()
hyunsungkim 0:2dade6db4d3a 69 {
hyunsungkim 0:2dade6db4d3a 70 buzzer.write(0.5);
hyunsungkim 0:2dade6db4d3a 71 buzzer.period_us(1000000/So5);
hyunsungkim 0:2dade6db4d3a 72 wait(0.1);
hyunsungkim 0:2dade6db4d3a 73 buzzer.period_us(1000000/Mi5);
hyunsungkim 0:2dade6db4d3a 74 wait(0.1);
hyunsungkim 0:2dade6db4d3a 75 buzzer.period_us(1000000/Do5);
hyunsungkim 0:2dade6db4d3a 76 wait(0.1);
hyunsungkim 0:2dade6db4d3a 77 buzzer.write(0);
hyunsungkim 0:2dade6db4d3a 78 }
hyunsungkim 0:2dade6db4d3a 79
hyunsungkim 0:2dade6db4d3a 80 void goForward()
hyunsungkim 0:2dade6db4d3a 81 {
hyunsungkim 0:2dade6db4d3a 82 motor_RA = 0.5;
hyunsungkim 0:2dade6db4d3a 83 motor_RB = 0;
hyunsungkim 0:2dade6db4d3a 84 motor_LA = 0;
hyunsungkim 0:2dade6db4d3a 85 motor_LB = 0.5;
hyunsungkim 0:2dade6db4d3a 86 }
hyunsungkim 0:2dade6db4d3a 87
hyunsungkim 0:2dade6db4d3a 88 void onLED(int r, int g, int b)
hyunsungkim 0:2dade6db4d3a 89 {
hyunsungkim 0:2dade6db4d3a 90
hyunsungkim 0:2dade6db4d3a 91 }
hyunsungkim 0:2dade6db4d3a 92
hyunsungkim 0:2dade6db4d3a 93
hyunsungkim 0:2dade6db4d3a 94 /*
hyunsungkim 0:2dade6db4d3a 95
hyunsungkim 0:2dade6db4d3a 96 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
hyunsungkim 0:2dade6db4d3a 97 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
hyunsungkim 0:2dade6db4d3a 98 // only handles 4 byte transfers in the ATMega code.
hyunsungkim 0:2dade6db4d3a 99 #define TRANSFER_SIZE 4
hyunsungkim 0:2dade6db4d3a 100
hyunsungkim 0:2dade6db4d3a 101 wait(2.0);
hyunsungkim 0:2dade6db4d3a 102
hyunsungkim 0:2dade6db4d3a 103 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
hyunsungkim 0:2dade6db4d3a 104 int txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 105 int rxDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 106
hyunsungkim 0:2dade6db4d3a 107 nrf.powerUp();
hyunsungkim 0:2dade6db4d3a 108 nrf.setTxAddress(0xE7E7E7EF, 4);
hyunsungkim 0:2dade6db4d3a 109
hyunsungkim 0:2dade6db4d3a 110 // Display the (default) setup of the nRF24L01+ chip
hyunsungkim 0:2dade6db4d3a 111 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", nrf.getRfFrequency() );
hyunsungkim 0:2dade6db4d3a 112 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getRfOutputPower() );
hyunsungkim 0:2dade6db4d3a 113 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getAirDataRate() );
hyunsungkim 0:2dade6db4d3a 114 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", nrf.getTxAddress() );
hyunsungkim 0:2dade6db4d3a 115 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", nrf.getRxAddress() );
hyunsungkim 0:2dade6db4d3a 116 pc.printf( "nRF24L01+ CRCWidth : %d \r\n", nrf.getCrcWidth() );
hyunsungkim 0:2dade6db4d3a 117
hyunsungkim 0:2dade6db4d3a 118 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 119
hyunsungkim 0:2dade6db4d3a 120 nrf.setTransferSize( TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 121
hyunsungkim 0:2dade6db4d3a 122 nrf.setReceiveMode();
hyunsungkim 0:2dade6db4d3a 123 nrf.enable();
hyunsungkim 0:2dade6db4d3a 124
hyunsungkim 0:2dade6db4d3a 125 while (1) {
hyunsungkim 0:2dade6db4d3a 126
hyunsungkim 0:2dade6db4d3a 127 // If we've received anything over the host serial link...
hyunsungkim 0:2dade6db4d3a 128 if ( pc.readable() ) {
hyunsungkim 0:2dade6db4d3a 129
hyunsungkim 0:2dade6db4d3a 130 // ...add it to the transmit buffer
hyunsungkim 0:2dade6db4d3a 131 txData[txDataCnt++] = pc.getc();
hyunsungkim 0:2dade6db4d3a 132
hyunsungkim 0:2dade6db4d3a 133 // If the transmit buffer is full
hyunsungkim 0:2dade6db4d3a 134 if ( txDataCnt >= sizeof( txData ) ) {
hyunsungkim 0:2dade6db4d3a 135
hyunsungkim 0:2dade6db4d3a 136 // Send the transmitbuffer via the nRF24L01+
hyunsungkim 0:2dade6db4d3a 137 nrf.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
hyunsungkim 0:2dade6db4d3a 138
hyunsungkim 0:2dade6db4d3a 139 txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 140 }
hyunsungkim 0:2dade6db4d3a 141 endBeep();
hyunsungkim 0:2dade6db4d3a 142 }
hyunsungkim 0:2dade6db4d3a 143
hyunsungkim 0:2dade6db4d3a 144 // If we've received anything in the nRF24L01+...
hyunsungkim 0:2dade6db4d3a 145 if ( nrf.readable() ) {
hyunsungkim 0:2dade6db4d3a 146
hyunsungkim 0:2dade6db4d3a 147 // ...read the data into the receive buffer
hyunsungkim 0:2dade6db4d3a 148 rxDataCnt = nrf.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
hyunsungkim 0:2dade6db4d3a 149
hyunsungkim 0:2dade6db4d3a 150 // Display the receive buffer contents via the host serial link
hyunsungkim 0:2dade6db4d3a 151 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
hyunsungkim 0:2dade6db4d3a 152 pc.putc( rxData[i] );
hyunsungkim 0:2dade6db4d3a 153 }
hyunsungkim 0:2dade6db4d3a 154 startBeep();
hyunsungkim 0:2dade6db4d3a 155 }
hyunsungkim 0:2dade6db4d3a 156 }
hyunsungkim 0:2dade6db4d3a 157 */