현성 김 / Mbed 2 deprecated 181202_Castone_design_master

Dependencies:   mbed nRF24L01P

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?

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 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 */