Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MMA8451Q mbed nRF24L01P
main.cpp
00001 #include "mbed.h" 00002 #include "nRF24L01P.h" 00003 #include "MMA8451Q.h" 00004 #include <list> 00005 #include <math.h> 00006 #define MMA8451_I2C_ADDRESS (0x1d<<1) 00007 #define TRANSFER_SIZE 8 00008 00009 Serial pc(USBTX, USBRX); // tx, rx 00010 00011 PinName const SDA = PTE25; 00012 PinName const SCL = PTE24; 00013 00014 //int foo=0; 00015 //float x; 00016 //float y; 00017 //float z; 00018 00019 AnalogIn light_ain(A0); 00020 AnalogIn temp_ain(A1); 00021 AnalogIn pir_ain(A2); 00022 00023 nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTE1, PTE0, PTD0); // mosi, miso, sck, csn, ce, irq 00024 00025 DigitalOut myled1(LED1); 00026 DigitalOut myled2(LED2); 00027 00028 float light; 00029 float temp; 00030 float pir; 00031 00032 std::list<float> light_data; 00033 std::list<float> temp_data; 00034 std::list<float> pir_data; 00035 00036 float light_data2[20]; 00037 float temp_data2[20]; 00038 float pir_data2[20]; 00039 short array_ind = 0; 00040 00041 void getdata() { 00042 00043 light = light_ain.read(); 00044 temp = temp_ain.read(); 00045 pir = pir_ain.read(); 00046 00047 light_data.push_back(light); 00048 temp_data.push_back(temp); 00049 pir_data.push_back(pir); 00050 00051 light_data.pop_front(); 00052 temp_data.pop_front(); 00053 pir_data.pop_front(); 00054 00055 printf("Light reading: %f\n\r", light); 00056 printf("Light list element : %f\n\r", light_data.back()); 00057 00058 printf("Temperature reading: %f\n\r", temp); 00059 printf("Temperature list element : %f\n\r", temp_data.back()); 00060 00061 printf("Temperature reading: %f\n\r", light); 00062 printf("Pir reading: %f\n\r", pir_data.back()); 00063 00064 } 00065 00066 void getdata2() { 00067 light = light_ain.read(); 00068 temp = temp_ain.read(); 00069 pir = pir_ain.read(); 00070 00071 light_data2[array_ind] = light; 00072 temp_data2[array_ind] = temp; 00073 pir_data2[array_ind] = pir; 00074 00075 array_ind = (array_ind + 1) % 20; 00076 } 00077 00078 00079 int main(){ 00080 int txDataCnt=0 ; 00081 int rxDataCnt=0 ; 00082 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; 00083 my_nrf24l01p.powerUp(); 00084 my_nrf24l01p.setRfFrequency (2501); 00085 my_nrf24l01p.setTransferSize(8); 00086 my_nrf24l01p.setCrcWidth(8); 00087 my_nrf24l01p.enableAutoAcknowledge(NRF24L01P_PIPE_P0); 00088 //my_nrf24l01p.setRxAddress(0x00F0F0F0F0); 00089 my_nrf24l01p.setRxAddress(0xF0F0F0F0E1ULL); 00090 my_nrf24l01p.setTxAddress(0x00F0F0F0F0); 00091 //Display the (default) setup of the nRF24L01+ chip 00092 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() ); 00093 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() ); 00094 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() ); 00095 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() ); 00096 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() ); 00097 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE ); 00098 my_nrf24l01p.setTransmitMode(); 00099 my_nrf24l01p.enable(); 00100 pc.printf( "Setup complete, Starting While loop\r\n"); 00101 00102 //printf("MMA8451 ID: %d\n", acc.getWhoAmI()); 00103 00104 00105 while(1){ 00106 getdata2(); 00107 //txDataCnt = sprintf(txData, " %1.4f %1.4f %1.4f %1.4f\n", light_data.back(), light_data.back(), temp_data.back(), pir_data.back()); 00108 //txDataCnt = sprintf(txData," %1.3f %1.3f %1.3f\n", light_data2[19], temp_data2[19], pir_data2[19]); 00109 // Display the (default) setup of the nRF24L01+ chip 00110 //pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() ); 00111 //pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() ); 00112 //pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() ); 00113 //pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() ); 00114 //pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() ); 00115 //txDataCnt= (txDataCnt+1); 00116 00117 //txDataCnt = sprintf(txData,"%7.3f\n", light_data2[19]); 00118 printf(txData,sizeof(&txDataCnt)); 00119 my_nrf24l01p.write(NRF24L01P_PIPE_P0, "abcdefgh", 8*sizeof(char)); 00120 wait(0.5); 00121 printf("Talking...\r\n"); 00122 00123 if ( my_nrf24l01p.readable() ) { 00124 rxDataCnt = my_nrf24l01p.read(NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); 00125 unsigned long *time_ptr = (unsigned long*)rxData; // pointer manipulation split out to make working obvious 00126 unsigned long time = *time_ptr; 00127 pc.printf("Received %d bytes\n\r", rxDataCnt); 00128 pc.printf("Value = %d\n\r", time); 00129 00130 txDataCnt=0; 00131 myled1 = !myled1; 00132 wait(0.5); 00133 } 00134 00135 }} 00136 00137
Generated on Fri Jul 22 2022 04:34:56 by
1.7.2