Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed 4DGL-uLCD-SE mbed-rtos nRF24L01P
Diff: main.cpp
- Revision:
- 34:d73e95bbdbed
- Parent:
- 33:5d86c111d9bc
- Child:
- 41:9ed924a1f2e0
--- a/main.cpp Wed Apr 25 15:39:03 2018 +0000
+++ b/main.cpp Fri Apr 27 22:01:10 2018 +0000
@@ -1,3 +1,4 @@
+#include "uLCD_4DGL.h"
#include "mbed.h"
#include "rtos.h"
@@ -5,7 +6,6 @@
#include "Speaker.h"
#include "HUD.h"
#include "nRF24L01P.h"
-#include "uLCD_4DGL.h"
#include "CircularBuf.h"
#include "CircularBuf.cpp" // Hack to get templates to work
@@ -18,7 +18,7 @@
#define SAMPLE_PERIOD 1/16000.0
-Serial pc(USBTX, USBRX);
+//Serial pc(USBTX, USBRX);
DigitalOut myled1(LED1); // Mic data sent over RF
DigitalOut myled2(LED2); // Speaker data recieved over RF
DigitalOut myled3(LED3); // Sampled mic / played the speaker
@@ -27,7 +27,7 @@
Speaker spkr(p18);
Microphone mic(p16);
-//uLCD_4DGL uLCD(p28, p27, p29); // serial tx, serial rx, reset pin;
+uLCD_4DGL uLCD(p28, p27, p29); // serial tx, serial rx, reset pin;
nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
CircularBuf<uint8_t> txbuff( FIFO_BUFFER_SCALE * DATA_PACKET_SIZE );
@@ -73,8 +73,7 @@
// Callback interrupt from the button to shift into receive mode
void enterRecieveMode() {
mode = RECEIVE;
- //TODO: Add this back in
- //rxbuf.clear();
+ rxbuff.clear();
}
// Called every SAMPLE_PERIOD ms to sample the mic or output data into the speaker
@@ -105,7 +104,6 @@
// Communicates to the other MBED using RF
void commThread()
{
- pc.printf("Enter commThread\n\r");
// We want this in it's own thread so we don't have to worry about the
// timings screwing anything else up
// It can't be in an interrupt because of that
@@ -123,7 +121,6 @@
// Only place into the buffer the number of bytes received
rxbuff.push(spkrPacket, min(DATA_PACKET_SIZE, numReceived));
- pc.printf("Receiviing....\n\r");
myled2 = !myled2;
}
} else { // mode == TRANSMIT
@@ -132,19 +129,13 @@
// Pull an entire packet of data from the mic sample buffer
int numPopped = txbuff.pop(micPacket, DATA_PACKET_SIZE);
- rxbuff.push(micPacket, DATA_PACKET_SIZE);
+ // rxbuff.push(micPacket, DATA_PACKET_SIZE);
// Send the entire buffer to the other device
// TODO: We just assume that DATA_PACKET_SIZE bytes were popped, this may
// not be the case
my_nrf24l01p.write( NRF24L01P_PIPE_P0, (char*) micPacket, DATA_PACKET_SIZE );
-
- //for (int i = 0; i < DATA_PACKET_SIZE; i++) {
- // pc.printf("%x", micPacket[i]);
- //}
- //pc.printf("\n\r");
-
- //pc.printf("Transmitting....\n\r");
+
myled1 = !myled1;
}
}
@@ -158,18 +149,16 @@
// Displays the current info to the LCD display
void lcdThread()
{
- pc.printf("Enter lcdThread\n\r");
while (1) {
- /*
- uLCD.locate(64, 20);
+ uLCD.locate(0, 0);
uLCD.printf("Frequency: %d MHz", rfFreq);
- uLCD.locate(64, 40);
+ uLCD.locate(0, 2);
uLCD.printf("Data Rate: %d kbps", dataRate);
- uLCD.locate(64, 60);
+ uLCD.locate(0, 4);
uLCD.printf("TX Address: 0x%010llX", txAddr);
- uLCD.locate(64, 80);
+ uLCD.locate(0, 6);
uLCD.printf("RX Address: 0x%010llX", rxAddr);
- uLCD.locate(64, 100);
+ uLCD.locate(0, 8);
switch (mode) {
case RECEIVE:
@@ -179,7 +168,7 @@
uLCD.printf("Mode: Transmitting");
break;
}
- */
+
// Maybe add some graphics too idk
Thread::wait(500);
}
@@ -190,9 +179,8 @@
Thread lcd;
Thread comm;
- pc.printf("Starting setup....\n\r");
-
// Set up the nrf24l01p
+ my_nrf24l01p.setAirDataRate(2000);
rfFreq = my_nrf24l01p.getRfFrequency();
dataRate = my_nrf24l01p.getAirDataRate();
rxAddr = my_nrf24l01p.getRxAddress();
@@ -203,13 +191,11 @@
my_nrf24l01p.setReceiveMode();
my_nrf24l01p.enable();
- pc.printf("Finished starting up....\n\r");
-
mode = RECEIVE;
// Initialize the uLCD
- //uLCD.baudrate(3000000);
- //uLCD.background_color(BLACK);
+ uLCD.baudrate(3000000);
+ uLCD.background_color(BLACK);
// Spawn threads
lcd.start(lcdThread);
@@ -224,7 +210,6 @@
// Setup sampler to sample at a specific frequency
sampler.attach(&sampleData, SAMPLE_PERIOD);
- pc.printf("Enter Heartbeat\n\r");
// Heartbeat thread
while (1) {
myled4 = !myled4;