ECE 4180 - Final Project Team / Mbed 2 deprecated WalkieTalkie

Dependencies:   mbed 4DGL-uLCD-SE mbed-rtos nRF24L01P

main.cpp

Committer:
drechtmann3
Date:
2018-04-20
Revision:
13:fbcc71fca474
Parent:
12:efcfe4c0d9f2
Child:
18:e2a8ea6f55d3

File content as of revision 13:fbcc71fca474:

#include "mbed.h"
#include "rtos.h"
#include "Microphone.h"
#include "nRF24L01P.h"
#define TRANSFER_SIZE   4 //added 5:54pm 4/18/18
Serial pc(USBTX, USBRX); // tx, rx

nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10);    // mosi, miso, sck, csn, ce, irq
DigitalOut myled1(LED1);
DigitalOut myled2(LED2);
DigitalOut myled3(LED3);
Ticker t; //10:41 am 4/20

Microphone mymicrophone(p16);
InterruptIn Button(p20); //changed DitialIn to InterruptIn at 5:54 4/18/18
AnalogOut speaker(p18); //added 6:34 pm at 4/18/18

char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; //making these usable by other voids.
int txDataCnt = 0;//and this.
int rxDataCnt = 0;//and this. //David Rechtmann 6.24 pm 4/18/18
int micvalue[30];
    int micvalcount = 0;
void startup()
{

// 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   4

//   char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; //making these usable by other voids.
    // int txDataCnt = 0;//and this.
    // int rxDataCnt = 0;//and this. //David Rechtmann 6:24 pm 4/18/18

    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();
}


void pctransmit()
{
    // If we've received anything over the host serial link...
    if ( pc.readable() ) {

        // ...add it to the transmit buffer
        txData[txDataCnt++] = pc.getc();

        // 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)
        myled3 = !myled3;
    }

    // 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)
        myled3 = !myled3;
    }
}

void receive()   //most of this function added by david at 6:02pm 4/18/18
{
    float sample;
    float average = 0.67/3.3;//initial DC bias level
    while (Button == 0) {
        if (my_nrf24l01p.readable(0)) {
            my_nrf24l01p.read(0, rxData, 1 );//replace thrid val w/ 1?
            sample = uint8_t (rxData);
            average =  0.9999*average + 0.0001*sample; //This is in the mPA demo but I'm not sure how it works -david
            speaker = 0.5 +((sample - average)*33.0);
        }

    }
}`  

void transmit()
{
    //  while   (mymycrophone.getData()) {
    //     txData[txDataCnt++] = mymicrophone.getData();
    //    }
    // txData[txDataCnt++] = ;
    speaker = 0;
    while (Button == 1) {
        my_nrf24l01P.write(0, micvalue, 30);
    }
}

void pollmic()
{
    micvalue[micvalcount] = mymicrophone.getData();
    micvalcount = micvalcount + 1;
    if (micvalcount > 30); {
    micvalcount = 0;
    }
    
    }

int main()
{
    Button.mode(PullUp);//added 6:23pm 4/18/18
    t.attach(&pollmic, 0.0001);
    t.attach(&receive, 0.0001);
    while (1) {

    }
}