현성 김 / Mbed 2 deprecated 181202_Castone_design_master

Dependencies:   mbed nRF24L01P

Committer:
hyunsungkim
Date:
Thu Nov 15 07:40:02 2018 +0000
Revision:
5:ad66d64c3d33
Parent:
4:ae81aeeed069
Child:
6:42ecdff5956a
fail

Who changed what in which revision?

UserRevisionLine numberNew 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 5:ad66d64c3d33 4 #include <SoftPWM.h>
hyunsungkim 3:690740ab3394 5 #include "beep.h"
hyunsungkim 3:690740ab3394 6
hyunsungkim 3:690740ab3394 7 /* Set */
hyunsungkim 3:690740ab3394 8 #define NODE_ADDR 00
hyunsungkim 3:690740ab3394 9
hyunsungkim 3:690740ab3394 10 #define nrf_CE D2
hyunsungkim 3:690740ab3394 11 #define nrf_CSN A3
hyunsungkim 3:690740ab3394 12 #define spi_SCK D13
hyunsungkim 3:690740ab3394 13 #define spi_MOSI D11
hyunsungkim 3:690740ab3394 14 #define spi_MISO D12
hyunsungkim 3:690740ab3394 15 RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN );
hyunsungkim 3:690740ab3394 16 RF24Network network(radio);
hyunsungkim 0:2dade6db4d3a 17
hyunsungkim 0:2dade6db4d3a 18 Serial pc(USBTX, USBRX);
hyunsungkim 0:2dade6db4d3a 19 Serial lidar(D1, D0);
hyunsungkim 0:2dade6db4d3a 20 PwmOut motor_RA(D9);
hyunsungkim 0:2dade6db4d3a 21 PwmOut motor_RB(D10);
hyunsungkim 0:2dade6db4d3a 22 PwmOut motor_LA(D3);
hyunsungkim 0:2dade6db4d3a 23 PwmOut motor_LB(D6);
hyunsungkim 4:ae81aeeed069 24 PwmOut led_B(A5);
hyunsungkim 0:2dade6db4d3a 25 PwmOut led_G(A2);
hyunsungkim 4:ae81aeeed069 26 PwmOut led_R(A1);
hyunsungkim 0:2dade6db4d3a 27 PwmOut buzzer(D5);
hyunsungkim 0:2dade6db4d3a 28 AnalogIn batteryCheck(A0);
hyunsungkim 0:2dade6db4d3a 29
hyunsungkim 3:690740ab3394 30 const uint16_t addr = NODE_ADDR;
hyunsungkim 3:690740ab3394 31 struct payload_t
hyunsungkim 3:690740ab3394 32 {
hyunsungkim 3:690740ab3394 33 unsigned long ms;
hyunsungkim 3:690740ab3394 34 unsigned long counter;
hyunsungkim 3:690740ab3394 35 };
hyunsungkim 3:690740ab3394 36
hyunsungkim 3:690740ab3394 37 void beepStart();
hyunsungkim 0:2dade6db4d3a 38 void endBeep();
hyunsungkim 0:2dade6db4d3a 39 void goForward();
hyunsungkim 0:2dade6db4d3a 40
hyunsungkim 0:2dade6db4d3a 41 int main() {
hyunsungkim 4:ae81aeeed069 42 led_R=0.5;
hyunsungkim 4:ae81aeeed069 43 led_G=0.4;
hyunsungkim 0:2dade6db4d3a 44 led_B=1;
hyunsungkim 3:690740ab3394 45 beepStart();
hyunsungkim 0:2dade6db4d3a 46 pc.baud(115200);
hyunsungkim 3:690740ab3394 47 radio.begin();
hyunsungkim 3:690740ab3394 48 network.begin(/*channel*/ 90, /*node address*/ addr);
hyunsungkim 4:ae81aeeed069 49 wait(2.0f);
hyunsungkim 0:2dade6db4d3a 50
hyunsungkim 4:ae81aeeed069 51 // goForward();
hyunsungkim 4:ae81aeeed069 52
hyunsungkim 4:ae81aeeed069 53 // Display the (default) setup this node
hyunsungkim 3:690740ab3394 54 pc.printf("My ADDR : %d\r\n", NODE_ADDR);
hyunsungkim 4:ae81aeeed069 55 pc.printf("Complete Setting\r\n");
hyunsungkim 4:ae81aeeed069 56 // beepAfterset();
hyunsungkim 1:450bd5ee8cdc 57
hyunsungkim 4:ae81aeeed069 58 led_B.write(0.5);
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 void onLED(int r, int g, int b)
hyunsungkim 0:2dade6db4d3a 82 {
hyunsungkim 0:2dade6db4d3a 83
hyunsungkim 0:2dade6db4d3a 84 }
hyunsungkim 0:2dade6db4d3a 85
hyunsungkim 0:2dade6db4d3a 86
hyunsungkim 0:2dade6db4d3a 87 /*
hyunsungkim 0:2dade6db4d3a 88
hyunsungkim 0:2dade6db4d3a 89 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
hyunsungkim 0:2dade6db4d3a 90 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
hyunsungkim 0:2dade6db4d3a 91 // only handles 4 byte transfers in the ATMega code.
hyunsungkim 0:2dade6db4d3a 92 #define TRANSFER_SIZE 4
hyunsungkim 0:2dade6db4d3a 93
hyunsungkim 0:2dade6db4d3a 94 wait(2.0);
hyunsungkim 0:2dade6db4d3a 95
hyunsungkim 0:2dade6db4d3a 96 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
hyunsungkim 0:2dade6db4d3a 97 int txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 98 int rxDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 99
hyunsungkim 0:2dade6db4d3a 100 nrf.powerUp();
hyunsungkim 0:2dade6db4d3a 101 nrf.setTxAddress(0xE7E7E7EF, 4);
hyunsungkim 0:2dade6db4d3a 102
hyunsungkim 0:2dade6db4d3a 103 // Display the (default) setup of the nRF24L01+ chip
hyunsungkim 0:2dade6db4d3a 104 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", nrf.getRfFrequency() );
hyunsungkim 0:2dade6db4d3a 105 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getRfOutputPower() );
hyunsungkim 0:2dade6db4d3a 106 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getAirDataRate() );
hyunsungkim 0:2dade6db4d3a 107 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", nrf.getTxAddress() );
hyunsungkim 0:2dade6db4d3a 108 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", nrf.getRxAddress() );
hyunsungkim 0:2dade6db4d3a 109 pc.printf( "nRF24L01+ CRCWidth : %d \r\n", nrf.getCrcWidth() );
hyunsungkim 0:2dade6db4d3a 110
hyunsungkim 0:2dade6db4d3a 111 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 112
hyunsungkim 0:2dade6db4d3a 113 nrf.setTransferSize( TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 114
hyunsungkim 0:2dade6db4d3a 115 nrf.setReceiveMode();
hyunsungkim 0:2dade6db4d3a 116 nrf.enable();
hyunsungkim 0:2dade6db4d3a 117
hyunsungkim 0:2dade6db4d3a 118 while (1) {
hyunsungkim 0:2dade6db4d3a 119
hyunsungkim 0:2dade6db4d3a 120 // If we've received anything over the host serial link...
hyunsungkim 0:2dade6db4d3a 121 if ( pc.readable() ) {
hyunsungkim 0:2dade6db4d3a 122
hyunsungkim 0:2dade6db4d3a 123 // ...add it to the transmit buffer
hyunsungkim 0:2dade6db4d3a 124 txData[txDataCnt++] = pc.getc();
hyunsungkim 0:2dade6db4d3a 125
hyunsungkim 0:2dade6db4d3a 126 // If the transmit buffer is full
hyunsungkim 0:2dade6db4d3a 127 if ( txDataCnt >= sizeof( txData ) ) {
hyunsungkim 0:2dade6db4d3a 128
hyunsungkim 0:2dade6db4d3a 129 // Send the transmitbuffer via the nRF24L01+
hyunsungkim 0:2dade6db4d3a 130 nrf.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
hyunsungkim 0:2dade6db4d3a 131
hyunsungkim 0:2dade6db4d3a 132 txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 133 }
hyunsungkim 0:2dade6db4d3a 134 endBeep();
hyunsungkim 0:2dade6db4d3a 135 }
hyunsungkim 0:2dade6db4d3a 136
hyunsungkim 0:2dade6db4d3a 137 // If we've received anything in the nRF24L01+...
hyunsungkim 0:2dade6db4d3a 138 if ( nrf.readable() ) {
hyunsungkim 0:2dade6db4d3a 139
hyunsungkim 0:2dade6db4d3a 140 // ...read the data into the receive buffer
hyunsungkim 0:2dade6db4d3a 141 rxDataCnt = nrf.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
hyunsungkim 0:2dade6db4d3a 142
hyunsungkim 0:2dade6db4d3a 143 // Display the receive buffer contents via the host serial link
hyunsungkim 0:2dade6db4d3a 144 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
hyunsungkim 0:2dade6db4d3a 145 pc.putc( rxData[i] );
hyunsungkim 0:2dade6db4d3a 146 }
hyunsungkim 3:690740ab3394 147 beepStart();
hyunsungkim 0:2dade6db4d3a 148 }
hyunsungkim 0:2dade6db4d3a 149 }
hyunsungkim 0:2dade6db4d3a 150 */