Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:2dade6db4d3a, 2018-11-03 (annotated)
- Committer:
- hyunsungkim
- Date:
- Sat Nov 03 13:16:17 2018 +0000
- Revision:
- 0:2dade6db4d3a
- Child:
- 1:450bd5ee8cdc
[id]
Who changed what in which revision?
| User | Revision | Line number | New 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 | */ |