현성 김 / Mbed 2 deprecated 181202_Castone_design_master

Dependencies:   mbed nRF24L01P

Committer:
hyunsungkim
Date:
Thu Nov 15 07:28:39 2018 +0000
Revision:
4:ae81aeeed069
Parent:
3:690740ab3394
Child:
5:ad66d64c3d33
Before changing buzzer pwm to softpwm

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 0:2dade6db4d3a 40 int main() {
hyunsungkim 4:ae81aeeed069 41 led_R=0.5;
hyunsungkim 4:ae81aeeed069 42 led_G=0.4;
hyunsungkim 0:2dade6db4d3a 43 led_B=1;
hyunsungkim 3:690740ab3394 44 beepStart();
hyunsungkim 0:2dade6db4d3a 45 pc.baud(115200);
hyunsungkim 3:690740ab3394 46 radio.begin();
hyunsungkim 3:690740ab3394 47 network.begin(/*channel*/ 90, /*node address*/ addr);
hyunsungkim 4:ae81aeeed069 48 wait(2.0f);
hyunsungkim 0:2dade6db4d3a 49
hyunsungkim 4:ae81aeeed069 50 // goForward();
hyunsungkim 4:ae81aeeed069 51
hyunsungkim 4:ae81aeeed069 52 // Display the (default) setup this node
hyunsungkim 3:690740ab3394 53 pc.printf("My ADDR : %d\r\n", NODE_ADDR);
hyunsungkim 4:ae81aeeed069 54 pc.printf("Complete Setting\r\n");
hyunsungkim 4:ae81aeeed069 55 // beepAfterset();
hyunsungkim 1:450bd5ee8cdc 56
hyunsungkim 4:ae81aeeed069 57 led_B.write(0.5);
hyunsungkim 0:2dade6db4d3a 58 while(1) {
hyunsungkim 4:ae81aeeed069 59 // Network should be updated regularly to keep layer going
hyunsungkim 3:690740ab3394 60 network.update();
hyunsungkim 3:690740ab3394 61
hyunsungkim 4:ae81aeeed069 62 while (network.available()) {
hyunsungkim 3:690740ab3394 63 RF24NetworkHeader header_rx;
hyunsungkim 3:690740ab3394 64 payload_t payload_rx;
hyunsungkim 3:690740ab3394 65 network.read(header_rx,&payload_rx,sizeof(payload_rx));
hyunsungkim 3:690740ab3394 66 pc.printf("Received packet # %d at %d ms\n",payload_rx.counter,payload_rx.ms);
hyunsungkim 3:690740ab3394 67 }
hyunsungkim 0:2dade6db4d3a 68 }
hyunsungkim 0:2dade6db4d3a 69 }
hyunsungkim 0:2dade6db4d3a 70
hyunsungkim 0:2dade6db4d3a 71
hyunsungkim 0:2dade6db4d3a 72 void goForward()
hyunsungkim 0:2dade6db4d3a 73 {
hyunsungkim 4:ae81aeeed069 74 motor_RA = 1;
hyunsungkim 0:2dade6db4d3a 75 motor_RB = 0;
hyunsungkim 0:2dade6db4d3a 76 motor_LA = 0;
hyunsungkim 4:ae81aeeed069 77 motor_LB = 1;
hyunsungkim 0:2dade6db4d3a 78 }
hyunsungkim 0:2dade6db4d3a 79
hyunsungkim 0:2dade6db4d3a 80 void onLED(int r, int g, int b)
hyunsungkim 0:2dade6db4d3a 81 {
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 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
hyunsungkim 0:2dade6db4d3a 89 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
hyunsungkim 0:2dade6db4d3a 90 // only handles 4 byte transfers in the ATMega code.
hyunsungkim 0:2dade6db4d3a 91 #define TRANSFER_SIZE 4
hyunsungkim 0:2dade6db4d3a 92
hyunsungkim 0:2dade6db4d3a 93 wait(2.0);
hyunsungkim 0:2dade6db4d3a 94
hyunsungkim 0:2dade6db4d3a 95 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
hyunsungkim 0:2dade6db4d3a 96 int txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 97 int rxDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 98
hyunsungkim 0:2dade6db4d3a 99 nrf.powerUp();
hyunsungkim 0:2dade6db4d3a 100 nrf.setTxAddress(0xE7E7E7EF, 4);
hyunsungkim 0:2dade6db4d3a 101
hyunsungkim 0:2dade6db4d3a 102 // Display the (default) setup of the nRF24L01+ chip
hyunsungkim 0:2dade6db4d3a 103 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", nrf.getRfFrequency() );
hyunsungkim 0:2dade6db4d3a 104 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getRfOutputPower() );
hyunsungkim 0:2dade6db4d3a 105 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getAirDataRate() );
hyunsungkim 0:2dade6db4d3a 106 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", nrf.getTxAddress() );
hyunsungkim 0:2dade6db4d3a 107 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", nrf.getRxAddress() );
hyunsungkim 0:2dade6db4d3a 108 pc.printf( "nRF24L01+ CRCWidth : %d \r\n", nrf.getCrcWidth() );
hyunsungkim 0:2dade6db4d3a 109
hyunsungkim 0:2dade6db4d3a 110 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 111
hyunsungkim 0:2dade6db4d3a 112 nrf.setTransferSize( TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 113
hyunsungkim 0:2dade6db4d3a 114 nrf.setReceiveMode();
hyunsungkim 0:2dade6db4d3a 115 nrf.enable();
hyunsungkim 0:2dade6db4d3a 116
hyunsungkim 0:2dade6db4d3a 117 while (1) {
hyunsungkim 0:2dade6db4d3a 118
hyunsungkim 0:2dade6db4d3a 119 // If we've received anything over the host serial link...
hyunsungkim 0:2dade6db4d3a 120 if ( pc.readable() ) {
hyunsungkim 0:2dade6db4d3a 121
hyunsungkim 0:2dade6db4d3a 122 // ...add it to the transmit buffer
hyunsungkim 0:2dade6db4d3a 123 txData[txDataCnt++] = pc.getc();
hyunsungkim 0:2dade6db4d3a 124
hyunsungkim 0:2dade6db4d3a 125 // If the transmit buffer is full
hyunsungkim 0:2dade6db4d3a 126 if ( txDataCnt >= sizeof( txData ) ) {
hyunsungkim 0:2dade6db4d3a 127
hyunsungkim 0:2dade6db4d3a 128 // Send the transmitbuffer via the nRF24L01+
hyunsungkim 0:2dade6db4d3a 129 nrf.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
hyunsungkim 0:2dade6db4d3a 130
hyunsungkim 0:2dade6db4d3a 131 txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 132 }
hyunsungkim 0:2dade6db4d3a 133 endBeep();
hyunsungkim 0:2dade6db4d3a 134 }
hyunsungkim 0:2dade6db4d3a 135
hyunsungkim 0:2dade6db4d3a 136 // If we've received anything in the nRF24L01+...
hyunsungkim 0:2dade6db4d3a 137 if ( nrf.readable() ) {
hyunsungkim 0:2dade6db4d3a 138
hyunsungkim 0:2dade6db4d3a 139 // ...read the data into the receive buffer
hyunsungkim 0:2dade6db4d3a 140 rxDataCnt = nrf.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
hyunsungkim 0:2dade6db4d3a 141
hyunsungkim 0:2dade6db4d3a 142 // Display the receive buffer contents via the host serial link
hyunsungkim 0:2dade6db4d3a 143 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
hyunsungkim 0:2dade6db4d3a 144 pc.putc( rxData[i] );
hyunsungkim 0:2dade6db4d3a 145 }
hyunsungkim 3:690740ab3394 146 beepStart();
hyunsungkim 0:2dade6db4d3a 147 }
hyunsungkim 0:2dade6db4d3a 148 }
hyunsungkim 0:2dade6db4d3a 149 */