Wireless / Mbed 2 deprecated spi_buttons_leds

Dependencies:   mbed nRF24L01P

Committer:
jeroenkoster
Date:
Tue Dec 04 13:36:13 2018 +0000
Revision:
4:ae1520241a90
Parent:
3:74f042e3ec10
Child:
5:7891519b8809
publish with rf code (not functioning properly);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jeroenkoster 0:c2ab34dc9018 1 #include "mbed.h"
jeroenkoster 3:74f042e3ec10 2 #include "nRF24L01P.h"
jeroenkoster 0:c2ab34dc9018 3
jeroenkoster 0:c2ab34dc9018 4 //Init Pins
jeroenkoster 0:c2ab34dc9018 5 SPI spi(D11, D12, D13);
jeroenkoster 0:c2ab34dc9018 6 DigitalOut cs(D10, 1);
jeroenkoster 3:74f042e3ec10 7 nRF24L01P my_nrf24l01p(D11, D12, D13, D8, D9, D7); // mosi, miso, sck, csn, ce, irq
jeroenkoster 0:c2ab34dc9018 8
jeroenkoster 3:74f042e3ec10 9
jeroenkoster 3:74f042e3ec10 10 #define TRANSFER_SIZE 4
jeroenkoster 3:74f042e3ec10 11 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
jeroenkoster 3:74f042e3ec10 12 int txDataCnt = 0;
jeroenkoster 3:74f042e3ec10 13 int rxDataCnt = 0;
jeroenkoster 3:74f042e3ec10 14
jeroenkoster 1:cedd9360f5c7 15 void init() {
jeroenkoster 0:c2ab34dc9018 16 cs = 0;
jeroenkoster 0:c2ab34dc9018 17
jeroenkoster 1:cedd9360f5c7 18 spi.write(0x46); // Select IODIR
jeroenkoster 1:cedd9360f5c7 19 spi.write(0x00); // 0000 = Set all to output
jeroenkoster 0:c2ab34dc9018 20 spi.write(0x00);
jeroenkoster 0:c2ab34dc9018 21
jeroenkoster 0:c2ab34dc9018 22 // Deselect the device
jeroenkoster 0:c2ab34dc9018 23 cs = 1;
jeroenkoster 3:74f042e3ec10 24
jeroenkoster 3:74f042e3ec10 25 my_nrf24l01p.powerUp();
jeroenkoster 3:74f042e3ec10 26
jeroenkoster 3:74f042e3ec10 27 // Display the (default) setup of the nRF24L01+ chip
jeroenkoster 3:74f042e3ec10 28 printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
jeroenkoster 3:74f042e3ec10 29 printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
jeroenkoster 3:74f042e3ec10 30 printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
jeroenkoster 3:74f042e3ec10 31 printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
jeroenkoster 3:74f042e3ec10 32 printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
jeroenkoster 3:74f042e3ec10 33
jeroenkoster 3:74f042e3ec10 34 printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
jeroenkoster 3:74f042e3ec10 35
jeroenkoster 3:74f042e3ec10 36 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
jeroenkoster 3:74f042e3ec10 37
jeroenkoster 3:74f042e3ec10 38 my_nrf24l01p.setReceiveMode();
jeroenkoster 3:74f042e3ec10 39 my_nrf24l01p.enable();
jeroenkoster 1:cedd9360f5c7 40 }
jeroenkoster 1:cedd9360f5c7 41
jeroenkoster 1:cedd9360f5c7 42 void setLed(int i) {
jeroenkoster 1:cedd9360f5c7 43 cs = 0;
jeroenkoster 1:cedd9360f5c7 44 spi.write(0x46);
jeroenkoster 1:cedd9360f5c7 45 spi.write(0x09);
jeroenkoster 1:cedd9360f5c7 46
jeroenkoster 1:cedd9360f5c7 47 int mask = 1;
jeroenkoster 1:cedd9360f5c7 48 int writeValue = 255;
jeroenkoster 1:cedd9360f5c7 49 writeValue ^= mask << i;
jeroenkoster 1:cedd9360f5c7 50 spi.write(writeValue);
jeroenkoster 1:cedd9360f5c7 51 cs = 1;
jeroenkoster 1:cedd9360f5c7 52 }
jeroenkoster 1:cedd9360f5c7 53
jeroenkoster 1:cedd9360f5c7 54 int readButton() {
jeroenkoster 1:cedd9360f5c7 55 cs = 0;
jeroenkoster 1:cedd9360f5c7 56 spi.write(0x47);
jeroenkoster 1:cedd9360f5c7 57 spi.write(0x09);
jeroenkoster 1:cedd9360f5c7 58 int misoOutput = spi.write(0x00);
jeroenkoster 1:cedd9360f5c7 59 cs = 1;
jeroenkoster 1:cedd9360f5c7 60
jeroenkoster 1:cedd9360f5c7 61 misoOutput = misoOutput & 192;
jeroenkoster 3:74f042e3ec10 62 printf("output miso: %d \n\r", misoOutput);
jeroenkoster 1:cedd9360f5c7 63 if (misoOutput == 128) { // S1 pressed
jeroenkoster 1:cedd9360f5c7 64 return 1;
jeroenkoster 1:cedd9360f5c7 65 } else if (misoOutput == 64) { // S2 pressed
jeroenkoster 1:cedd9360f5c7 66 return 5;
jeroenkoster 1:cedd9360f5c7 67 }
jeroenkoster 1:cedd9360f5c7 68 return 0;
jeroenkoster 1:cedd9360f5c7 69 }
jeroenkoster 1:cedd9360f5c7 70
jeroenkoster 3:74f042e3ec10 71 int sendNumber(int number) {
jeroenkoster 3:74f042e3ec10 72 // ...add it to the transmit buffer
jeroenkoster 3:74f042e3ec10 73 txData[txDataCnt++] = number;
jeroenkoster 3:74f042e3ec10 74
jeroenkoster 3:74f042e3ec10 75 // If the transmit buffer is full
jeroenkoster 3:74f042e3ec10 76 if ( txDataCnt >= sizeof( txData ) ) {
jeroenkoster 3:74f042e3ec10 77
jeroenkoster 3:74f042e3ec10 78 // Send the transmitbuffer via the nRF24L01+
jeroenkoster 3:74f042e3ec10 79 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
jeroenkoster 3:74f042e3ec10 80
jeroenkoster 3:74f042e3ec10 81 txDataCnt = 0;
jeroenkoster 3:74f042e3ec10 82 }
jeroenkoster 3:74f042e3ec10 83
jeroenkoster 3:74f042e3ec10 84 // If we've received anything in the nRF24L01+...
jeroenkoster 3:74f042e3ec10 85 if ( my_nrf24l01p.readable() ) {
jeroenkoster 3:74f042e3ec10 86
jeroenkoster 3:74f042e3ec10 87 // ...read the data into the receive buffer
jeroenkoster 3:74f042e3ec10 88 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
jeroenkoster 3:74f042e3ec10 89
jeroenkoster 3:74f042e3ec10 90 // Display the receive buffer contents via the host serial link
jeroenkoster 3:74f042e3ec10 91 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
jeroenkoster 3:74f042e3ec10 92 printf(rxData);
jeroenkoster 3:74f042e3ec10 93 // pc.putc( rxData[i] );
jeroenkoster 3:74f042e3ec10 94 }
jeroenkoster 3:74f042e3ec10 95 }
jeroenkoster 3:74f042e3ec10 96 }
jeroenkoster 3:74f042e3ec10 97
jeroenkoster 1:cedd9360f5c7 98 int main() {
jeroenkoster 1:cedd9360f5c7 99 cs = 1;
jeroenkoster 1:cedd9360f5c7 100 printf("Initializing. \n\r");
jeroenkoster 1:cedd9360f5c7 101 init();
jeroenkoster 1:cedd9360f5c7 102 printf("Setting Led. \n\r");
jeroenkoster 1:cedd9360f5c7 103
jeroenkoster 1:cedd9360f5c7 104 // Select the device by seting chip select low
jeroenkoster 1:cedd9360f5c7 105 int led = 0;
jeroenkoster 0:c2ab34dc9018 106 printf("Starting \n\r");
jeroenkoster 0:c2ab34dc9018 107 while (true) {
jeroenkoster 3:74f042e3ec10 108 led = (led + readButton()) % 6;
jeroenkoster 1:cedd9360f5c7 109 setLed(led);
jeroenkoster 3:74f042e3ec10 110 sendNumber(led);
jeroenkoster 1:cedd9360f5c7 111 wait(0.1);
jeroenkoster 0:c2ab34dc9018 112 }
jeroenkoster 0:c2ab34dc9018 113 }