Dominic Naples / Mbed 2 deprecated Final_project_Dom_2TOMS_addChannel1234

Dependencies:   BSP_DISCO_L476VG LCD_DISCO_L476VG mbed nRF24L01P

Fork of Final_project_Dom_2TOMS_addChannel123 by Dominic Naples

Committer:
jblackann
Date:
Fri Apr 20 20:10:03 2018 +0000
Revision:
5:8d2188479eec
Parent:
4:dcee65c6cebf
Child:
6:5c8300551004
Added Channel code function and help menu

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Owen 0:a51a6e7da590 1 #include "mbed.h"
Owen 0:a51a6e7da590 2 #include "nRF24L01P.h"
dnaples02 3:2544ec35c76f 3 #include "LCD_DISCO_L476VG.h"
Owen 0:a51a6e7da590 4
Owen 0:a51a6e7da590 5 Serial pc(USBTX, USBRX); // tx, rx
Owen 0:a51a6e7da590 6
dnaples02 2:9ecf15bfb0b4 7 nRF24L01P my_nrf24l01p(PE_15, PE_14, PE_13, PE_12, PE_10, PE_11); // mosi, miso, sck, csn, ce, irq
Owen 0:a51a6e7da590 8
Owen 0:a51a6e7da590 9 DigitalOut myled1(LED1);
Owen 0:a51a6e7da590 10 DigitalOut myled2(LED2);
dnaples02 3:2544ec35c76f 11 LCD_DISCO_L476VG lcd;
Owen 0:a51a6e7da590 12
jblackann 5:8d2188479eec 13 void channelChangeMode (void)
jblackann 5:8d2188479eec 14 {
jblackann 5:8d2188479eec 15 char stayInWhile = 1;
jblackann 5:8d2188479eec 16 char receivedChannelCharacter;
jblackann 5:8d2188479eec 17 int rf_channel = 2400;
jblackann 5:8d2188479eec 18 pc.printf("Channel menu\n\r");
jblackann 5:8d2188479eec 19 pc.printf("select channel\n\r");
jblackann 5:8d2188479eec 20 while(stayInWhile)
jblackann 5:8d2188479eec 21 {
jblackann 5:8d2188479eec 22 pc.printf("waiting for Channel\n\r");
jblackann 5:8d2188479eec 23 if ( pc.readable() )
jblackann 5:8d2188479eec 24 {
jblackann 5:8d2188479eec 25
jblackann 5:8d2188479eec 26 receivedChannelCharacter = pc.getc();
jblackann 5:8d2188479eec 27
jblackann 5:8d2188479eec 28 if (receivedChannelCharacter >= '1' && receivedChannelCharacter <= '9') // if received 0 through 9 load transmit buffer
jblackann 5:8d2188479eec 29 k {
jblackann 5:8d2188479eec 30 pc.printf("received valid number\n\r");
jblackann 5:8d2188479eec 31 receivedChannelCharacter = receivedChannelCharacter - 0x30;
jblackann 5:8d2188479eec 32 rf_channel = rf_channel + receivedChannelCharacter;
jblackann 5:8d2188479eec 33 pc.printf("new channel, %d\n\r", rf_channel);
jblackann 5:8d2188479eec 34 my_nrf24l01p.setRfFrequency(rf_channel);
jblackann 5:8d2188479eec 35 wait(1);
jblackann 5:8d2188479eec 36 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
jblackann 5:8d2188479eec 37 stayInWhile = 0;
jblackann 5:8d2188479eec 38 }
jblackann 5:8d2188479eec 39 else
jblackann 5:8d2188479eec 40 {
jblackann 5:8d2188479eec 41 pc.printf(" invalid number\n\r");
jblackann 5:8d2188479eec 42 }
jblackann 5:8d2188479eec 43 }
jblackann 5:8d2188479eec 44 wait(1);
jblackann 5:8d2188479eec 45 }
jblackann 5:8d2188479eec 46 pc.printf("exiting Channel change mode\n\r");
jblackann 5:8d2188479eec 47
jblackann 5:8d2188479eec 48 }
jblackann 5:8d2188479eec 49
Owen 0:a51a6e7da590 50 int main() {
Owen 0:a51a6e7da590 51
Owen 0:a51a6e7da590 52 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
Owen 0:a51a6e7da590 53 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
Owen 0:a51a6e7da590 54 // only handles 4 byte transfers in the ATMega code.
Owen 0:a51a6e7da590 55 #define TRANSFER_SIZE 4
Owen 0:a51a6e7da590 56
Owen 0:a51a6e7da590 57 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
Owen 0:a51a6e7da590 58 int txDataCnt = 0;
Owen 0:a51a6e7da590 59 int rxDataCnt = 0;
jblackann 5:8d2188479eec 60 char receivedTerminalCharacter;
jblackann 5:8d2188479eec 61
dnaples02 3:2544ec35c76f 62 uint32_t temp = 0;
dnaples02 3:2544ec35c76f 63 uint8_t stemp[7] = {0};
dnaples02 3:2544ec35c76f 64 //uint8_t title[] = " DISCOVERY STM32L476";
Owen 0:a51a6e7da590 65 my_nrf24l01p.powerUp();
dnaples02 3:2544ec35c76f 66
Owen 0:a51a6e7da590 67
Owen 0:a51a6e7da590 68 // Display the (default) setup of the nRF24L01+ chip
Owen 0:a51a6e7da590 69 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
Owen 0:a51a6e7da590 70 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
Owen 0:a51a6e7da590 71 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
Owen 0:a51a6e7da590 72 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
Owen 0:a51a6e7da590 73 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
Owen 0:a51a6e7da590 74
Owen 0:a51a6e7da590 75 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
Owen 0:a51a6e7da590 76
Owen 0:a51a6e7da590 77 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
Owen 0:a51a6e7da590 78
Owen 0:a51a6e7da590 79 my_nrf24l01p.setReceiveMode();
Owen 0:a51a6e7da590 80 my_nrf24l01p.enable();
dnaples02 3:2544ec35c76f 81
dnaples02 3:2544ec35c76f 82 printf("Hello\n");
dnaples02 3:2544ec35c76f 83 //led_green = 1;
dnaples02 3:2544ec35c76f 84 lcd.Clear();
dnaples02 3:2544ec35c76f 85 lcd.DisplayString((uint8_t *)"HELLO");
dnaples02 4:dcee65c6cebf 86 wait(5);
dnaples02 4:dcee65c6cebf 87 lcd.Clear();
dnaples02 4:dcee65c6cebf 88
Owen 0:a51a6e7da590 89 while (1) {
Owen 0:a51a6e7da590 90
Owen 0:a51a6e7da590 91 // If we've received anything over the host serial link...
Owen 0:a51a6e7da590 92 if ( pc.readable() ) {
jblackann 5:8d2188479eec 93
jblackann 5:8d2188479eec 94 receivedTerminalCharacter = pc.getc();
Owen 0:a51a6e7da590 95
jblackann 5:8d2188479eec 96 if (receivedTerminalCharacter >= '0' && receivedTerminalCharacter <= '9') // if received 0 through 9 load transmit buffer
jblackann 5:8d2188479eec 97 {
jblackann 5:8d2188479eec 98 pc.printf("Loading TX buffer");
jblackann 5:8d2188479eec 99 // ...add it to the transmit buffer
jblackann 5:8d2188479eec 100 txData[txDataCnt++] = pc.getc();
jblackann 5:8d2188479eec 101
Owen 0:a51a6e7da590 102
jblackann 5:8d2188479eec 103 // If the transmit buffer is full
jblackann 5:8d2188479eec 104 if ( txDataCnt >= sizeof( txData ) ) {
jblackann 5:8d2188479eec 105
jblackann 5:8d2188479eec 106 // Send the transmitbuffer via the nRF24L01+
jblackann 5:8d2188479eec 107 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
jblackann 5:8d2188479eec 108
jblackann 5:8d2188479eec 109 txDataCnt = 0;
jblackann 5:8d2188479eec 110
Owen 0:a51a6e7da590 111
jblackann 5:8d2188479eec 112 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
jblackann 5:8d2188479eec 113 myled1 = !myled1;
jblackann 5:8d2188479eec 114 }
jblackann 5:8d2188479eec 115 }
dnaples02 3:2544ec35c76f 116
jblackann 5:8d2188479eec 117 else if (receivedTerminalCharacter == 'h')
jblackann 5:8d2188479eec 118 {
jblackann 5:8d2188479eec 119 pc.printf("Radio help menu\n\r");
jblackann 5:8d2188479eec 120 pc.printf("Press c for channel: \n\r");
jblackann 5:8d2188479eec 121 pc.printf("Press t for TX Power: \n\r");
jblackann 5:8d2188479eec 122 pc.printf("Press d for datarate: \n\r");
jblackann 5:8d2188479eec 123 }
jblackann 5:8d2188479eec 124 else if (receivedTerminalCharacter == 'c')
jblackann 5:8d2188479eec 125 {
jblackann 5:8d2188479eec 126
jblackann 5:8d2188479eec 127 channelChangeMode();
jblackann 5:8d2188479eec 128
jblackann 5:8d2188479eec 129 }
jblackann 5:8d2188479eec 130
Owen 0:a51a6e7da590 131 }
Owen 0:a51a6e7da590 132
Owen 0:a51a6e7da590 133 // If we've received anything in the nRF24L01+...
Owen 0:a51a6e7da590 134 if ( my_nrf24l01p.readable() ) {
Owen 0:a51a6e7da590 135
Owen 0:a51a6e7da590 136 // ...read the data into the receive buffer
Owen 0:a51a6e7da590 137 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
Owen 0:a51a6e7da590 138 // Display the receive buffer contents via the host serial link
Owen 0:a51a6e7da590 139 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
Owen 0:a51a6e7da590 140
Owen 0:a51a6e7da590 141 pc.putc( rxData[i] );
dnaples02 4:dcee65c6cebf 142
Owen 0:a51a6e7da590 143 }
dnaples02 4:dcee65c6cebf 144 lcd.Clear();
dnaples02 4:dcee65c6cebf 145 lcd.DisplayString((uint8_t *)"REC");
dnaples02 4:dcee65c6cebf 146 wait(5);
dnaples02 4:dcee65c6cebf 147 lcd.Clear();
dnaples02 3:2544ec35c76f 148 }
dnaples02 3:2544ec35c76f 149
dnaples02 3:2544ec35c76f 150
dnaples02 3:2544ec35c76f 151
dnaples02 3:2544ec35c76f 152 // printf("Scroll sequence\n");
dnaples02 3:2544ec35c76f 153 //led_green = 0;
dnaples02 3:2544ec35c76f 154 //lcd.Clear();
dnaples02 4:dcee65c6cebf 155
Owen 0:a51a6e7da590 156 // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
Owen 0:a51a6e7da590 157 myled2 = !myled2;
Owen 0:a51a6e7da590 158 }
Owen 0:a51a6e7da590 159 }
dnaples02 3:2544ec35c76f 160