Sensor Box version 090715 17:06
Dependencies: MMA8451Q mbed nRF24L01P
main.cpp
- Committer:
- eleim
- Date:
- 2015-07-31
- Revision:
- 3:391141bdd69a
- Parent:
- 2:3779f28a6bf0
File content as of revision 3:391141bdd69a:
#include "mbed.h"
#include "nRF24L01P.h"
#include "MMA8451Q.h"
#include <list>
#include <math.h>
#define MMA8451_I2C_ADDRESS (0x1d<<1)
#define TRANSFER_SIZE 8
Serial pc(USBTX, USBRX); // tx, rx
PinName const SDA = PTE25;
PinName const SCL = PTE24;
//int foo=0;
//float x;
//float y;
//float z;
AnalogIn light_ain(A0);
AnalogIn temp_ain(A1);
AnalogIn pir_ain(A2);
nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTE1, PTE0, PTD0); // mosi, miso, sck, csn, ce, irq
DigitalOut myled1(LED1);
DigitalOut myled2(LED2);
float light;
float temp;
float pir;
std::list<float> light_data;
std::list<float> temp_data;
std::list<float> pir_data;
float light_data2[20];
float temp_data2[20];
float pir_data2[20];
short array_ind = 0;
void getdata() {
light = light_ain.read();
temp = temp_ain.read();
pir = pir_ain.read();
light_data.push_back(light);
temp_data.push_back(temp);
pir_data.push_back(pir);
light_data.pop_front();
temp_data.pop_front();
pir_data.pop_front();
printf("Light reading: %f\n\r", light);
printf("Light list element : %f\n\r", light_data.back());
printf("Temperature reading: %f\n\r", temp);
printf("Temperature list element : %f\n\r", temp_data.back());
printf("Temperature reading: %f\n\r", light);
printf("Pir reading: %f\n\r", pir_data.back());
}
void getdata2() {
light = light_ain.read();
temp = temp_ain.read();
pir = pir_ain.read();
light_data2[array_ind] = light;
temp_data2[array_ind] = temp;
pir_data2[array_ind] = pir;
array_ind = (array_ind + 1) % 20;
}
int main(){
int txDataCnt=0 ;
int rxDataCnt=0 ;
char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
my_nrf24l01p.powerUp();
my_nrf24l01p.setRfFrequency (2501);
my_nrf24l01p.setTransferSize(8);
my_nrf24l01p.setCrcWidth(8);
my_nrf24l01p.enableAutoAcknowledge(NRF24L01P_PIPE_P0);
//my_nrf24l01p.setRxAddress(0x00F0F0F0F0);
my_nrf24l01p.setRxAddress(0xF0F0F0F0E1ULL);
my_nrf24l01p.setTxAddress(0x00F0F0F0F0);
//Display the (default) setup of the nRF24L01+ chip
pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
my_nrf24l01p.setTransmitMode();
my_nrf24l01p.enable();
pc.printf( "Setup complete, Starting While loop\r\n");
//printf("MMA8451 ID: %d\n", acc.getWhoAmI());
while(1){
getdata2();
//txDataCnt = sprintf(txData, " %1.4f %1.4f %1.4f %1.4f\n", light_data.back(), light_data.back(), temp_data.back(), pir_data.back());
//txDataCnt = sprintf(txData," %1.3f %1.3f %1.3f\n", light_data2[19], temp_data2[19], pir_data2[19]);
// Display the (default) setup of the nRF24L01+ chip
//pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
//pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
//pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
//pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
//pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
//txDataCnt= (txDataCnt+1);
//txDataCnt = sprintf(txData,"%7.3f\n", light_data2[19]);
printf(txData,sizeof(&txDataCnt));
my_nrf24l01p.write(NRF24L01P_PIPE_P0, "abcdefgh", 8*sizeof(char));
wait(0.5);
printf("Talking...\r\n");
if ( my_nrf24l01p.readable() ) {
rxDataCnt = my_nrf24l01p.read(NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
unsigned long *time_ptr = (unsigned long*)rxData; // pointer manipulation split out to make working obvious
unsigned long time = *time_ptr;
pc.printf("Received %d bytes\n\r", rxDataCnt);
pc.printf("Value = %d\n\r", time);
txDataCnt=0;
myled1 = !myled1;
wait(0.5);
}
}}