Divon Jay / Mbed 2 deprecated Group10_Prj2

Dependencies:   HCSR04 mbed nRF24L01P

mian.cpp

Committer:
divonjin
Date:
2018-04-22
Revision:
0:e8f4e84196c5
Child:
1:fca5426ac19e

File content as of revision 0:e8f4e84196c5:

/*******************************************************************************
ECE 595 2018 Spring
Project 2
Group 10
last Update 4/22/2018 
memo:   
*******************************************************************************/

#include "mbed.h"
#include "HCSR04.h"
#include "nRF24L01P.h"



#define PIN_TRIGGER    (D10)
#define PIN_ECHO       (D9)
#define PIN_PICTURE    (D7)

#define TRANSFER_SIZE   4

//rf reciever module setting 
nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTD0, PTC4, PTC12);    // mosi, miso, sck, csn, ce, irq

DigitalOut myled1(LED_GREEN);
DigitalOut myled2(LED_RED);



HCSR04 rangeFinder(PIN_TRIGGER, PIN_ECHO);
DigitalOut buzzer(D2);
DigitalIn soundDete(D8);
DigitalIn touch(D4);
DigitalOut Picamera(PIN_PICTURE);
Serial pc(USBTX,USBRX);

float range;
float tooClose=0.3;
int warning = 0;
int newevent =0;

void blink(){
     buzzer = 1;
     wait(.3);
     buzzer = 0;
     }
     
void takePic(){
     Picamera = 1;       
     wait(.5);
     Picamera = 0;
     pc.printf("takephoto\n\r");
     }

void detectedsound(){
     if( soundDete == 1){
         if(warning == 0){
            warning = 1;
            newevent = 1;
            }
         }
         }
     
void checkrange(){
        rangeFinder.startMeas();
        wait(0.1);
        if ( rangeFinder.getMeas(range) == RANGE_MEAS_VALID )
        {
            if ( range < tooClose ){
                if(warning == 0){
                    warning = 1;
                    newevent = 1;
                    }
                }
            else{
                if (soundDete == 0){
                    warning = 0;
                    }
                }   
        }
}

void  shutter()
{
    if ( touch == 1){
        takePic();
        }
}

int main() 
{   


    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();
    
    
    
    while (1)
    {
        pc.printf("init\n\r");
        detectedsound();
        checkrange();
        if ( warning == 1 ){
            blink();
            if ( newevent == 1){
                takePic();
                newevent =0;
                }
            else{
                shutter();
                }
            }
        
        
            //this is for the transmission part of the code 
        // If we've received anything over the host serial link...
        if ( pc.readable() ) {

            // ...add it to the transmit buffer
         
         if (warning == 1){
          txData[txDataCnt++]= 'W';
           }
            // If the transmit buffer is full
            if ( txDataCnt >= sizeof( txData ) ) {

                // Send the transmitbuffer via the nRF24L01+
                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );

                txDataCnt = 0;
            }

            // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
            myled1 = !myled1;
        }
        
            
         ////this is for the recieving part of the code  part of the code 
        // If we've received anything in the nRF24L01+...
        if ( my_nrf24l01p.readable() ) {

            // ...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] );   
            }

            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
            myled2 = !myled2;
        }
    
    
    
    
       
            
    }
}