project wireless
Dependencies: mbed nRF24L01P nRF24L01P_Hello_World TextLCD
Fork of nRF24L01P_Hello_World by
Diff: main.cpp
- Revision:
- 4:da91478e0ca4
- Parent:
- 3:de3b4b509e70
--- a/main.cpp Wed May 13 09:42:17 2015 +0000 +++ b/main.cpp Tue May 19 17:26:07 2015 +0000 @@ -1,22 +1,50 @@ #include "mbed.h" #include "nRF24L01P.h" - +#include "TextLCD.h" +#include "SerialRPCInterface.h" +SerialRPCInterface SerialInterface(USBTX, USBRX); Serial pc(USBTX, USBRX); // tx, rx - +TextLCD lcd(p15, p16, p21, p22, p23, p24); // rs, e, d4-d7 nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq DigitalOut myled1(LED1); DigitalOut myled2(LED2); +DigitalOut ledlicht(p30); +DigitalOut lednorm(p29); +DigitalOut leddonk(p28); +char a[5]; //temp +char b[5];//licht +char buffer[6];//buffer +char aa = '?';//temp +char bb = '?';//licht +float temp = 0;//rpc +float licht = 0;//rpc -int main() { +RPCVariable<float> rpc_temp(&temp,"temp"); +RPCVariable<float> rpc_licht(&licht,"licht"); -// 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 5 +int main() +{ + //Labview + Base::add_rpc_class<AnalogIn>(); + Base::add_rpc_class<AnalogOut>(); + Base::add_rpc_class<DigitalIn>(); + Base::add_rpc_class<DigitalOut>(); + Base::add_rpc_class<DigitalInOut>(); + Base::add_rpc_class<PwmOut>(); + Base::add_rpc_class<Timer>(); + Base::add_rpc_class<SPI>(); + Base::add_rpc_class<BusOut>(); + Base::add_rpc_class<BusIn>(); + Base::add_rpc_class<BusInOut>(); + Base::add_rpc_class<Serial>(); + + char buf[256], outbuf[256]; + + #define TRANSFER_SIZE 6 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; - int txDataCnt = 0; + int txDataCnt = 0; int rxDataCnt = 0; my_nrf24l01p.powerUp(); @@ -28,36 +56,121 @@ my_nrf24l01p.setRfOutputPower(0); // 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(0) ); + // 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(0) ); - pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE ); + //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(); - while (1) { + + lcd.cls();//LCD clear + lcd.locate(0,0); + lcd.printf("Project wireless"); + lcd.locate(0,1); + lcd.printf("Bjorn Vranken"); + lcd.locate(0,1); + wait(1); + lcd.printf("Michiel VEndert"); + lcd.locate(0,1); + wait(1); + lcd.printf("Nino DerKinderen"); + wait(2); + + lcd.cls();//LCD clear + lcd.locate(0,0); + lcd.printf("Temp:"); + lcd.locate(0,1); + lcd.printf("Licht:"); + lcd.locate(12,0); + lcd.printf("C"); + lcd.locate(12,1); + lcd.putc(37); + + temp = 10; + licht = 50; + + while (1) + { + pc.gets(buf,256); + rpc(buf,outbuf); + pc.printf("%s\n",outbuf); + + for(int i = 0;i <= 20; i++) + { + wait(0.05); // If we've received anything in the nRF24L01+... if ( my_nrf24l01p.readable(NRF24L01P_PIPE_P0) ) { - //pc.printf("tweede if \n\r"); // ...read the data into the receive buffer rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); // Display the receive buffer contents via the host serial link - for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) { - - pc.putc( rxData[i] ); + for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) + { + buffer[i] = rxData[i]; + //pc.putc( rxData[i] ); } - // Toggle LED2 (to help debug nRF24L01+ -> Host communication) - myled2 = !myled2; - pc.printf("\r\n"); + // Toggle LED1 (to help debug nRF24L01+ -> Host communication) + myled1 = !myled1; + //pc.printf("\r\n"); + + if (buffer[5] == 'T') + { + //pc.printf("Temperatuur\r\n"); + for(int x = 0; x <=4; x++) + { + a[x] = buffer[x]; + aa = a[x]; + lcd.locate(6+x,0); + lcd.putc(aa); + } + temp = atof(a); + //pc.printf("t : %f \r\n",temp); + } + else if (buffer[5] == 'L') + { + //pc.printf("Lichtwaarde\r\n"); + for(int x = 0; x <=4; x++) + { + b[x] = buffer[x]; + bb = b[x]; + lcd.locate(6+x,1); + lcd.putc(bb); + } + licht = atof(b); + //pc.printf("l : %f \r\n",licht); + if(licht > 85) + { + ledlicht = 1; + lednorm = 0; + leddonk = 0; + } + else if(licht <= 85 && licht > 30) + { + ledlicht = 0; + lednorm = 1; + leddonk = 0; + } + else if(licht <= 30) + { + ledlicht = 0; + lednorm = 0; + leddonk = 1; + } + } + else + { + //pc.printf("Verkeerde DATA!!!\r\n"); + } + } } } }