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.
Diff: main.cpp
- Revision:
- 6:1d7d769b398d
- Parent:
- 5:6d8f9165021e
- Child:
- 7:7a73065d2d92
--- a/main.cpp Tue Apr 21 01:49:44 2015 +0000 +++ b/main.cpp Wed Apr 22 06:17:52 2015 +0000 @@ -1,12 +1,14 @@ #include "mbed.h" #include <vector> #define BUFFER_SIZE 16 -#define NUMBER_OF_SLICES 90 +#define NUMBER_OF_SLICES 120 +#include "MRF24J40.h" -//DigitalOut Pins +//push data pins DigitalOut pushRegister(p23); DigitalOut pushBit(p24); +//write to arm pins DigitalOut dataArmOne(p15); DigitalOut dataArmTwo(p16); DigitalOut dataArmThree(p17); @@ -15,9 +17,8 @@ DigitalOut dataArmSix(p20); DigitalOut dataArmSeven(p21); DigitalOut dataArmEight(p22); -DigitalOut led(LED1); -//Enable Interupt +//hass sensor interupt InterruptIn hallSensor(p25); //Set Up Timer and ticker @@ -26,16 +27,49 @@ //Declare global vars double slice_time; -double rotate_time; +double rotate_time; int current_slice; char slice_data [NUMBER_OF_SLICES][16]; //[slice][specific led distance] (0 is closest) & with approppriate bit for each arm -double firstTime; +int firstTime; +//serial port for pc and bluetooth Serial pc(USBTX, USBRX); // tx, rx Serial bt(p9, p10);// tx, rx +//define variables for ziggbee +MRF24J40 mrf(p11, p12, p13, p14, p26); +char txBuffer[128]; +char rxBuffer[128]; +int rxLen; + + +int rf_receive(char *data, uint8_t maxLength) +{ + uint8_t len = mrf.Receive((uint8_t *)data, maxLength); + uint8_t header[8]= {1, 8, 0, 0xA1, 0xB2, 0xC3, 0xD4, 0x00}; + + if(len > 10) { + //Remove the header and footer of the message + for(uint8_t i = 0; i < len-2; i++) { + if(i<8) { + //Make sure our header is valid first + if(data[i] != header[i]) + return 0; + } else { + data[i-8] = data[i]; + } + } + + //pc.printf("Received: %s length:%d\r\n", data, ((int)len)-10); + } + return ((int)len)-10; +} +void recievePoint (int slice, int distance, char addChar){ + //TODO make this edit the other thing +} void pushData (char bits [16]){ + bt.printf("pushing data \r\n"); for (int i = 8; i < 16; i ++){ dataArmOne = bits [i] & 0x01; dataArmTwo = bits [i] & 0x02; @@ -80,19 +114,17 @@ //Hall sensor interupt void rotate_sense(){ - pc.printf("interupt"); + bt.printf("interupt"); if (firstTime){ rotationTime.reset(); rotationTime.start(); - firstTime = 0; + firstTime = false; pc.printf("first time"); - led = !led; return; } else if(current_slice < NUMBER_OF_SLICES / 4){ return; } - pc.printf("seconod time \n"); - led = !led; + bt.printf("seconod time \n"); rotate_time = rotationTime.read_us(); rotationTime.reset(); rotationTime.start(); @@ -102,14 +134,21 @@ updateLeds.attach_us(&nextLedPush, slice_time); } +void didRecievePoint(){ +} + int main() { - pc.printf("started"); - firstTime = 1; - current_slice = 90; + bt.printf("started"); + firstTime = true; + current_slice = 0; + + uint8_t channel = 6; + //mrf.SetChannel(channel); hallSensor.fall(&rotate_sense); - for (int i = 0; i < 45; i ++){ + + for (int i = 0; i < 60; i ++){ slice_data [i][0] = 0x01; // bit 0 is high on arm 0 slice_data [i][1] = 0x01; slice_data [i][2] = 0x01; @@ -127,7 +166,7 @@ slice_data [i][14] = 0x01; slice_data [i][15] = 0x01; } - for (int i = 45; i < 90; i++){ + for (int i = 60; i < 120; i++){ slice_data [i][0] = 0x00; // bit 0 is high on arm 0 slice_data [i][1] = 0x01; slice_data [i][2] = 0x00; @@ -145,10 +184,14 @@ slice_data [i][14] = 0x00; slice_data [i][15] = 0x01; } - while(1) { - if (bt.readable()){ - pc.printf("Just read %c", bt.getc()); - } - + + pushData(slice_data[80]); + while(true) { + //Try to receive some data + + //rxLen = rf_receive(rxBuffer, 24); + //if(rxLen > 24) { + + //} } }