Stick some BLE in ME.

Dependencies:   TB6612FNG mbed BLE_nRF8001

main.cpp

Committer:
ddrew73
Date:
2014-11-12
Revision:
3:a7f0b4b78648
Parent:
2:5398a0de0780

File content as of revision 3:a7f0b4b78648:

//THE INFAMOUS NET TRAP
//Brought to you by Team LaTe


#include "mbed.h"
#include "TB6612.h"
#include "nRF8001.h"
#include "BLEPeripheral.h"
#include "BLECharacteristic.h"

//Init
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
Serial serial(USBTX, USBRX); // tx, rx

//BLE breakout
SPI spi(D11, D12, D13);
DigitalInOut req(PTD0); // D10
DigitalInOut rdy(PTD4); // D2 needs a different pin
DigitalInOut rst(PTD5); // D9

//Motor driver
DigitalOut BIN2(D3);
DigitalOut BIN1(D4);
PwmOut PWMB(D6);
DigitalOut stdby(D14);
TB6612 motorB(D6,D3,D4);    // PWMA,AIN1,AIN2

//Ultrasonic
float distance = 0;
float raw = 0;
int dropped = 0;
DigitalOut ultra_trigger(D8);
AnalogIn ultra_out(A0);

BLEProperty read = BLERead;
BLEProperty write = BLEWrite;
BLEProperty notify = BLENotify;

BLEPeripheral blePeripheral = BLEPeripheral(&req,&rdy,&rst);
BLEService service = BLEService("5794ba16-ce64-46e5-9804-6851f7b3a183");
BLECharacteristic netDropChrc = BLECharacteristic("fbb3136a-fe49-445b-a612-2019d1b33a6c",read | write,1,1);
BLECharacteristic netDisarmedChrc = BLECharacteristic("f80fb006-0e8e-412c-8a92-19fe85328daa",read | write | notify,1,1);

int main()
{
    serial.printf("starting something\r\n");
    led1 = 1;
    led2 = 1;
    led3 = 1;

    ultra_trigger = 1;
    motorB = 0.0;
    stdby = 1;
    
    blePeripheral.setLocalName("NETTRAP");
    blePeripheral.setDeviceName("net trap peripheral!");
    blePeripheral.setAdvertisedServiceUuid(service.uuid());
    blePeripheral.addAttribute(service);
    serial.printf("set up attributes and so on \r\n");
    blePeripheral.addAttribute(netDropChrc);
    blePeripheral.addAttribute(netDisarmedChrc);
    serial.printf("added characteristics\r\n");

    char* bufTrue = "t";
    char* bufFalse = "f";
    netDropChrc.setValue(bufFalse);
    netDisarmedChrc.setValue(bufFalse);
    serial.printf("set up characteristic values\r\n");

    blePeripheral.begin();
    serial.printf("began peripheral supposedly\r\n");
    
    
    
    while(true) {

        
        if (*netDropChrc.value() == 'f') {
            if (*netDisarmedChrc.value()== 't') {
            dropped = 1; 
            }
            else {
            dropped = 0;
            }
        }
        
        else {
            dropped = 1;
            }
     
        blePeripheral.poll();
        motorB = 0.0;
        raw = ultra_out;
        distance = (ultra_out * 5) / 0.0098 ;
        serial.printf("%1.3f %1.3f \n", raw, distance);
        if (distance < 20 && dropped == 0) {
            motorB = 1.0;
            netDropChrc.setValue(bufTrue);
            dropped = 1;
        }
        wait(1);
    }

}