Accelerometer + NRF
Dependencies: MMA8451Q mbed nRF24L01P
Fork of Node_test_v2 by
Revision 5:7c53f5f2af8d, committed 2015-07-01
- Comitter:
- jaehughes
- Date:
- Wed Jul 01 21:16:03 2015 +0000
- Parent:
- 4:7d3a1dfe5454
- Commit message:
- analog read and store in vector
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7d3a1dfe5454 -r 7c53f5f2af8d main.cpp --- a/main.cpp Mon Jun 29 12:29:05 2015 +0000 +++ b/main.cpp Wed Jul 01 21:16:03 2015 +0000 @@ -1,83 +1,95 @@ #include "mbed.h" #include "nRF24L01P.h" #include "MMA8451Q.h" - +#include <vector> +#include <math.h> + #define MMA8451_I2C_ADDRESS (0x1d<<1) - +#define TRANSFER_SIZE 24 + Serial pc(USBTX, USBRX); // tx, rx - + PinName const SDA = PTE25; PinName const SCL = PTE24; - + +AnalogIn light_ain(A0); +AnalogIn temp_ain(A1); +AnalogIn pir_ain(A3); + nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTE1, PTE0, PTD0); // mosi, miso, sck, csn, ce, irq - + DigitalOut myled1(LED1); DigitalOut myled2(LED2); - + +uint16_t light; +uint16_t temp; +uint16_t pir; + +std::vector<uint16_t> light_data; +std::vector<uint16_t> temp_data; +std::vector<uint16_t> pir_data; + +void getdata() +{ + light = light_ain.read_u16(); + temp = temp_ain.read_u16(); + pir = pir_ain.read_u16(); + + light_data.push_back (light); + temp_data.push_back (temp); + pir_data.push_back (pir); + + light_data.pop_back(); + temp_data.pop_back(); + pir_data.pop_back(); + + + printf("%f\n", light_data); + +} + + int main() { - + MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); - //PwmOut rled(LED1); - //PwmOut gled(LED2); - //PwmOut bled(LED3); - -// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's -// "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019) -// only handles 4 byte transfers in the ATMega code. -#define TRANSFER_SIZE 24 - + + light_data.assign (20,0); + temp_data.assign (20,0); + pir_data.assign (20,0); + + char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; int txDataCnt = 0; int rxDataCnt = 0; - + my_nrf24l01p.powerUp(); - + // 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.setTransferSize( TRANSFER_SIZE ); - + my_nrf24l01p.setReceiveMode(); my_nrf24l01p.enable(); - - - + printf("MMA8451 ID: %d\n", acc.getWhoAmI()); - + while (1) { - - float x, y, z; - x = abs(acc.getAccX()); - y = abs(acc.getAccY()); - z = abs(acc.getAccZ()); - //rled = 1.0f - x; - //gled = 1.0f - y; - //bled = 1.0f - z; - //wait(0.01); - //txDataCnt = sprintf(txData, "X:%1.3f,Y:%1.3f,Z:%1.3f\n", x,y,z); - txDataCnt = sprintf(txData, " %1.3f %1.3f %1.3f\n", x,y,z); - printf("X:%f,Y:%f,Z:%f size %i %s\n", x, y, z,txDataCnt, txData); - - // If we've received anything over the host serial link... - - // ...add it to the transmit buffer - //txData[txDataCnt++] = pc.getc(); - - // If the transmit buffer is full - - // Send the transmitbuffer via the nRF24L01+ - my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt ); - - printf("sent"); - - // Toggle LED1 (to help debug Host -> nRF24L01+ communication) + getdata(); + + // txDataCnt = sprintf(txData, " %1.3f %1.3f %1.3f\n", x,y,z); + //my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt ); myled1 = !myled1; + wait(0.5); } -} \ No newline at end of file + +} + +