Sender Mbed program for "Magician Mobile Robot Arm"

Dependencies:   mbed nRF24L01P

Committer:
bedlou
Date:
Tue Oct 21 16:56:07 2014 +0000
Revision:
0:aa99105568b0
Sender Mbed program for "Magician Mobile Robot Arm"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bedlou 0:aa99105568b0 1 #include "mbed.h"
bedlou 0:aa99105568b0 2 #include "nRF24L01P.h"
bedlou 0:aa99105568b0 3
bedlou 0:aa99105568b0 4 Serial pc(USBTX, USBRX); // tx, rx
bedlou 0:aa99105568b0 5
bedlou 0:aa99105568b0 6 nRF24L01P NRFT(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
bedlou 0:aa99105568b0 7
bedlou 0:aa99105568b0 8 AnalogIn Vert(p19);
bedlou 0:aa99105568b0 9 AnalogIn Horz(p20);
bedlou 0:aa99105568b0 10 AnalogIn Lslide(p16);
bedlou 0:aa99105568b0 11 AnalogIn Rslide(p15);
bedlou 0:aa99105568b0 12
bedlou 0:aa99105568b0 13 PwmOut led1(LED1);
bedlou 0:aa99105568b0 14 PwmOut led2(LED2);
bedlou 0:aa99105568b0 15 PwmOut led3(LED3);
bedlou 0:aa99105568b0 16 PwmOut led4(LED4);
bedlou 0:aa99105568b0 17
bedlou 0:aa99105568b0 18 int main() {
bedlou 0:aa99105568b0 19
bedlou 0:aa99105568b0 20 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
bedlou 0:aa99105568b0 21 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
bedlou 0:aa99105568b0 22 // only handles 4 byte transfers in the ATMega code.
bedlou 0:aa99105568b0 23 #define TRANSFER_SIZE 17
bedlou 0:aa99105568b0 24
bedlou 0:aa99105568b0 25 char txData[TRANSFER_SIZE];
bedlou 0:aa99105568b0 26 //int txDataCnt = 0;
bedlou 0:aa99105568b0 27
bedlou 0:aa99105568b0 28 NRFT.powerUp();
bedlou 0:aa99105568b0 29
bedlou 0:aa99105568b0 30 // Display the (default) setup of the nRF24L01+ chip
bedlou 0:aa99105568b0 31 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", NRFT.getRfFrequency() );
bedlou 0:aa99105568b0 32 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", NRFT.getRfOutputPower() );
bedlou 0:aa99105568b0 33 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", NRFT.getAirDataRate() );
bedlou 0:aa99105568b0 34 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", NRFT.getTxAddress() );
bedlou 0:aa99105568b0 35 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", NRFT.getRxAddress() );
bedlou 0:aa99105568b0 36
bedlou 0:aa99105568b0 37 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
bedlou 0:aa99105568b0 38
bedlou 0:aa99105568b0 39 NRFT.setTransferSize( TRANSFER_SIZE );
bedlou 0:aa99105568b0 40
bedlou 0:aa99105568b0 41 NRFT.setTransmitMode();
bedlou 0:aa99105568b0 42 NRFT.enable();
bedlou 0:aa99105568b0 43
bedlou 0:aa99105568b0 44 while (1) {
bedlou 0:aa99105568b0 45
bedlou 0:aa99105568b0 46 /*// If we've received anything over the host serial link...
bedlou 0:aa99105568b0 47 if ( pc.readable() ) {
bedlou 0:aa99105568b0 48
bedlou 0:aa99105568b0 49 // ...add it to the transmit buffer
bedlou 0:aa99105568b0 50 txData[txDataCnt++] = pc.getc();
bedlou 0:aa99105568b0 51
bedlou 0:aa99105568b0 52 // If the transmit buffer is full
bedlou 0:aa99105568b0 53 if ( txDataCnt >= sizeof( txData ) ) {
bedlou 0:aa99105568b0 54
bedlou 0:aa99105568b0 55 // Send the transmitbuffer via the nRF24L01+
bedlou 0:aa99105568b0 56 NRFT.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
bedlou 0:aa99105568b0 57
bedlou 0:aa99105568b0 58 txDataCnt = 0;
bedlou 0:aa99105568b0 59 }
bedlou 0:aa99105568b0 60
bedlou 0:aa99105568b0 61 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
bedlou 0:aa99105568b0 62 myled1 = !myled1;
bedlou 0:aa99105568b0 63 }*/
bedlou 0:aa99105568b0 64 int LSL,RSL,VER,HOR;
bedlou 0:aa99105568b0 65
bedlou 0:aa99105568b0 66 while(1)
bedlou 0:aa99105568b0 67 {
bedlou 0:aa99105568b0 68 //wait(0.1);
bedlou 0:aa99105568b0 69
bedlou 0:aa99105568b0 70 LSL = float(Lslide)*1000;
bedlou 0:aa99105568b0 71 txData[0] = LSL & 255;
bedlou 0:aa99105568b0 72 txData[1] = (LSL >> 8) & 255;
bedlou 0:aa99105568b0 73 txData[2] = (LSL >> 16) & 255;
bedlou 0:aa99105568b0 74 txData[3] = (LSL >> 24) & 255;
bedlou 0:aa99105568b0 75 led1 = Lslide;
bedlou 0:aa99105568b0 76
bedlou 0:aa99105568b0 77 VER = float(Vert)*1000;
bedlou 0:aa99105568b0 78 txData[4] = VER & 255;
bedlou 0:aa99105568b0 79 txData[5] = (VER >> 8) & 255;
bedlou 0:aa99105568b0 80 txData[6] = (VER >> 16) & 255;
bedlou 0:aa99105568b0 81 txData[7] = (VER >> 24) & 255;
bedlou 0:aa99105568b0 82 led2 = Vert;
bedlou 0:aa99105568b0 83
bedlou 0:aa99105568b0 84 HOR = float(Horz)*1000;
bedlou 0:aa99105568b0 85 txData[8] = HOR & 255;
bedlou 0:aa99105568b0 86 txData[9] = (HOR >> 8) & 255;
bedlou 0:aa99105568b0 87 txData[10] = (HOR >> 16) & 255;
bedlou 0:aa99105568b0 88 txData[11] = (HOR >> 24) & 255;
bedlou 0:aa99105568b0 89 led3 = Horz;
bedlou 0:aa99105568b0 90
bedlou 0:aa99105568b0 91 RSL = float(Rslide)*1000;
bedlou 0:aa99105568b0 92 txData[12] = RSL & 255;
bedlou 0:aa99105568b0 93 txData[13] = (RSL >> 8) & 255;
bedlou 0:aa99105568b0 94 txData[14] = (RSL >> 16) & 255;
bedlou 0:aa99105568b0 95 txData[15] = (RSL >> 24) & 255;
bedlou 0:aa99105568b0 96 led4 = Rslide;
bedlou 0:aa99105568b0 97 txData[16] = 'a';
bedlou 0:aa99105568b0 98
bedlou 0:aa99105568b0 99 NRFT.write( NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE );
bedlou 0:aa99105568b0 100 //wait(0.1);
bedlou 0:aa99105568b0 101 }
bedlou 0:aa99105568b0 102 }
bedlou 0:aa99105568b0 103 }