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@6:42ecdff5956a, 2018-11-21 (annotated)
- Committer:
- hyunsungkim
- Date:
- Wed Nov 21 08:27:33 2018 +0000
- Revision:
- 6:42ecdff5956a
- Parent:
- 5:ad66d64c3d33
- Child:
- 7:faf9014d2512
solve confliction btw buzzer and Blue led;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| hyunsungkim | 0:2dade6db4d3a | 1 | #include "mbed.h" |
| hyunsungkim | 3:690740ab3394 | 2 | #include <RF24Network.h> |
| hyunsungkim | 3:690740ab3394 | 3 | #include <RF24.h> |
| hyunsungkim | 3:690740ab3394 | 4 | #include "beep.h" |
| hyunsungkim | 3:690740ab3394 | 5 | |
| hyunsungkim | 3:690740ab3394 | 6 | /* Set */ |
| hyunsungkim | 3:690740ab3394 | 7 | #define NODE_ADDR 00 |
| hyunsungkim | 3:690740ab3394 | 8 | |
| hyunsungkim | 3:690740ab3394 | 9 | #define nrf_CE D2 |
| hyunsungkim | 3:690740ab3394 | 10 | #define nrf_CSN A3 |
| hyunsungkim | 3:690740ab3394 | 11 | #define spi_SCK D13 |
| hyunsungkim | 3:690740ab3394 | 12 | #define spi_MOSI D11 |
| hyunsungkim | 3:690740ab3394 | 13 | #define spi_MISO D12 |
| hyunsungkim | 3:690740ab3394 | 14 | RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN ); |
| hyunsungkim | 3:690740ab3394 | 15 | RF24Network network(radio); |
| hyunsungkim | 0:2dade6db4d3a | 16 | |
| hyunsungkim | 0:2dade6db4d3a | 17 | Serial pc(USBTX, USBRX); |
| hyunsungkim | 0:2dade6db4d3a | 18 | Serial lidar(D1, D0); |
| hyunsungkim | 0:2dade6db4d3a | 19 | PwmOut motor_RA(D9); |
| hyunsungkim | 0:2dade6db4d3a | 20 | PwmOut motor_RB(D10); |
| hyunsungkim | 0:2dade6db4d3a | 21 | PwmOut motor_LA(D3); |
| hyunsungkim | 0:2dade6db4d3a | 22 | PwmOut motor_LB(D6); |
| hyunsungkim | 4:ae81aeeed069 | 23 | PwmOut led_B(A5); |
| hyunsungkim | 0:2dade6db4d3a | 24 | PwmOut led_G(A2); |
| hyunsungkim | 4:ae81aeeed069 | 25 | PwmOut led_R(A1); |
| hyunsungkim | 0:2dade6db4d3a | 26 | PwmOut buzzer(D5); |
| hyunsungkim | 0:2dade6db4d3a | 27 | AnalogIn batteryCheck(A0); |
| hyunsungkim | 0:2dade6db4d3a | 28 | |
| hyunsungkim | 3:690740ab3394 | 29 | const uint16_t addr = NODE_ADDR; |
| hyunsungkim | 3:690740ab3394 | 30 | struct payload_t |
| hyunsungkim | 3:690740ab3394 | 31 | { |
| hyunsungkim | 3:690740ab3394 | 32 | unsigned long ms; |
| hyunsungkim | 3:690740ab3394 | 33 | unsigned long counter; |
| hyunsungkim | 3:690740ab3394 | 34 | }; |
| hyunsungkim | 3:690740ab3394 | 35 | |
| hyunsungkim | 3:690740ab3394 | 36 | void beepStart(); |
| hyunsungkim | 0:2dade6db4d3a | 37 | void endBeep(); |
| hyunsungkim | 0:2dade6db4d3a | 38 | void goForward(); |
| hyunsungkim | 0:2dade6db4d3a | 39 | |
| hyunsungkim | 6:42ecdff5956a | 40 | void initLED() { |
| hyunsungkim | 6:42ecdff5956a | 41 | led_R=1; |
| hyunsungkim | 6:42ecdff5956a | 42 | led_G=1; |
| hyunsungkim | 6:42ecdff5956a | 43 | led_B=1; |
| hyunsungkim | 6:42ecdff5956a | 44 | } |
| hyunsungkim | 6:42ecdff5956a | 45 | |
| hyunsungkim | 0:2dade6db4d3a | 46 | int main() { |
| hyunsungkim | 6:42ecdff5956a | 47 | |
| hyunsungkim | 6:42ecdff5956a | 48 | initLED(); |
| hyunsungkim | 3:690740ab3394 | 49 | beepStart(); |
| hyunsungkim | 0:2dade6db4d3a | 50 | pc.baud(115200); |
| hyunsungkim | 3:690740ab3394 | 51 | radio.begin(); |
| hyunsungkim | 3:690740ab3394 | 52 | network.begin(/*channel*/ 90, /*node address*/ addr); |
| hyunsungkim | 4:ae81aeeed069 | 53 | wait(2.0f); |
| hyunsungkim | 0:2dade6db4d3a | 54 | |
| hyunsungkim | 4:ae81aeeed069 | 55 | // Display the (default) setup this node |
| hyunsungkim | 3:690740ab3394 | 56 | pc.printf("My ADDR : %d\r\n", NODE_ADDR); |
| hyunsungkim | 4:ae81aeeed069 | 57 | pc.printf("Complete Setting\r\n"); |
| hyunsungkim | 1:450bd5ee8cdc | 58 | |
| hyunsungkim | 0:2dade6db4d3a | 59 | while(1) { |
| hyunsungkim | 4:ae81aeeed069 | 60 | // Network should be updated regularly to keep layer going |
| hyunsungkim | 3:690740ab3394 | 61 | network.update(); |
| hyunsungkim | 3:690740ab3394 | 62 | |
| hyunsungkim | 4:ae81aeeed069 | 63 | while (network.available()) { |
| hyunsungkim | 3:690740ab3394 | 64 | RF24NetworkHeader header_rx; |
| hyunsungkim | 3:690740ab3394 | 65 | payload_t payload_rx; |
| hyunsungkim | 3:690740ab3394 | 66 | network.read(header_rx,&payload_rx,sizeof(payload_rx)); |
| hyunsungkim | 3:690740ab3394 | 67 | pc.printf("Received packet # %d at %d ms\n",payload_rx.counter,payload_rx.ms); |
| hyunsungkim | 3:690740ab3394 | 68 | } |
| hyunsungkim | 0:2dade6db4d3a | 69 | } |
| hyunsungkim | 0:2dade6db4d3a | 70 | } |
| hyunsungkim | 0:2dade6db4d3a | 71 | |
| hyunsungkim | 0:2dade6db4d3a | 72 | |
| hyunsungkim | 0:2dade6db4d3a | 73 | void goForward() |
| hyunsungkim | 0:2dade6db4d3a | 74 | { |
| hyunsungkim | 4:ae81aeeed069 | 75 | motor_RA = 1; |
| hyunsungkim | 0:2dade6db4d3a | 76 | motor_RB = 0; |
| hyunsungkim | 0:2dade6db4d3a | 77 | motor_LA = 0; |
| hyunsungkim | 4:ae81aeeed069 | 78 | motor_LB = 1; |
| hyunsungkim | 0:2dade6db4d3a | 79 | } |
| hyunsungkim | 0:2dade6db4d3a | 80 | |
| hyunsungkim | 0:2dade6db4d3a | 81 | /* |
| hyunsungkim | 0:2dade6db4d3a | 82 | |
| hyunsungkim | 0:2dade6db4d3a | 83 | // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's |
| hyunsungkim | 0:2dade6db4d3a | 84 | // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019) |
| hyunsungkim | 0:2dade6db4d3a | 85 | // only handles 4 byte transfers in the ATMega code. |
| hyunsungkim | 0:2dade6db4d3a | 86 | #define TRANSFER_SIZE 4 |
| hyunsungkim | 0:2dade6db4d3a | 87 | |
| hyunsungkim | 0:2dade6db4d3a | 88 | wait(2.0); |
| hyunsungkim | 0:2dade6db4d3a | 89 | |
| hyunsungkim | 0:2dade6db4d3a | 90 | char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; |
| hyunsungkim | 0:2dade6db4d3a | 91 | int txDataCnt = 0; |
| hyunsungkim | 0:2dade6db4d3a | 92 | int rxDataCnt = 0; |
| hyunsungkim | 0:2dade6db4d3a | 93 | |
| hyunsungkim | 0:2dade6db4d3a | 94 | nrf.powerUp(); |
| hyunsungkim | 0:2dade6db4d3a | 95 | nrf.setTxAddress(0xE7E7E7EF, 4); |
| hyunsungkim | 0:2dade6db4d3a | 96 | |
| hyunsungkim | 0:2dade6db4d3a | 97 | // Display the (default) setup of the nRF24L01+ chip |
| hyunsungkim | 0:2dade6db4d3a | 98 | pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", nrf.getRfFrequency() ); |
| hyunsungkim | 0:2dade6db4d3a | 99 | pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getRfOutputPower() ); |
| hyunsungkim | 0:2dade6db4d3a | 100 | pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getAirDataRate() ); |
| hyunsungkim | 0:2dade6db4d3a | 101 | pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", nrf.getTxAddress() ); |
| hyunsungkim | 0:2dade6db4d3a | 102 | pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", nrf.getRxAddress() ); |
| hyunsungkim | 0:2dade6db4d3a | 103 | pc.printf( "nRF24L01+ CRCWidth : %d \r\n", nrf.getCrcWidth() ); |
| hyunsungkim | 0:2dade6db4d3a | 104 | |
| hyunsungkim | 0:2dade6db4d3a | 105 | pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE ); |
| hyunsungkim | 0:2dade6db4d3a | 106 | |
| hyunsungkim | 0:2dade6db4d3a | 107 | nrf.setTransferSize( TRANSFER_SIZE ); |
| hyunsungkim | 0:2dade6db4d3a | 108 | |
| hyunsungkim | 0:2dade6db4d3a | 109 | nrf.setReceiveMode(); |
| hyunsungkim | 0:2dade6db4d3a | 110 | nrf.enable(); |
| hyunsungkim | 0:2dade6db4d3a | 111 | |
| hyunsungkim | 0:2dade6db4d3a | 112 | while (1) { |
| hyunsungkim | 0:2dade6db4d3a | 113 | |
| hyunsungkim | 0:2dade6db4d3a | 114 | // If we've received anything over the host serial link... |
| hyunsungkim | 0:2dade6db4d3a | 115 | if ( pc.readable() ) { |
| hyunsungkim | 0:2dade6db4d3a | 116 | |
| hyunsungkim | 0:2dade6db4d3a | 117 | // ...add it to the transmit buffer |
| hyunsungkim | 0:2dade6db4d3a | 118 | txData[txDataCnt++] = pc.getc(); |
| hyunsungkim | 0:2dade6db4d3a | 119 | |
| hyunsungkim | 0:2dade6db4d3a | 120 | // If the transmit buffer is full |
| hyunsungkim | 0:2dade6db4d3a | 121 | if ( txDataCnt >= sizeof( txData ) ) { |
| hyunsungkim | 0:2dade6db4d3a | 122 | |
| hyunsungkim | 0:2dade6db4d3a | 123 | // Send the transmitbuffer via the nRF24L01+ |
| hyunsungkim | 0:2dade6db4d3a | 124 | nrf.write( NRF24L01P_PIPE_P0, txData, txDataCnt ); |
| hyunsungkim | 0:2dade6db4d3a | 125 | |
| hyunsungkim | 0:2dade6db4d3a | 126 | txDataCnt = 0; |
| hyunsungkim | 0:2dade6db4d3a | 127 | } |
| hyunsungkim | 0:2dade6db4d3a | 128 | endBeep(); |
| hyunsungkim | 0:2dade6db4d3a | 129 | } |
| hyunsungkim | 0:2dade6db4d3a | 130 | |
| hyunsungkim | 0:2dade6db4d3a | 131 | // If we've received anything in the nRF24L01+... |
| hyunsungkim | 0:2dade6db4d3a | 132 | if ( nrf.readable() ) { |
| hyunsungkim | 0:2dade6db4d3a | 133 | |
| hyunsungkim | 0:2dade6db4d3a | 134 | // ...read the data into the receive buffer |
| hyunsungkim | 0:2dade6db4d3a | 135 | rxDataCnt = nrf.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); |
| hyunsungkim | 0:2dade6db4d3a | 136 | |
| hyunsungkim | 0:2dade6db4d3a | 137 | // Display the receive buffer contents via the host serial link |
| hyunsungkim | 0:2dade6db4d3a | 138 | for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) { |
| hyunsungkim | 0:2dade6db4d3a | 139 | pc.putc( rxData[i] ); |
| hyunsungkim | 0:2dade6db4d3a | 140 | } |
| hyunsungkim | 3:690740ab3394 | 141 | beepStart(); |
| hyunsungkim | 0:2dade6db4d3a | 142 | } |
| hyunsungkim | 0:2dade6db4d3a | 143 | } |
| hyunsungkim | 0:2dade6db4d3a | 144 | */ |