Stick some BLE in ME.

Dependencies:   TB6612FNG mbed BLE_nRF8001

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //THE INFAMOUS NET TRAP
00002 //Brought to you by Team LaTe
00003 
00004 
00005 #include "mbed.h"
00006 #include "TB6612.h"
00007 #include "nRF8001.h"
00008 #include "BLEPeripheral.h"
00009 #include "BLECharacteristic.h"
00010 
00011 //Init
00012 DigitalOut led1(LED1);
00013 DigitalOut led2(LED2);
00014 DigitalOut led3(LED3);
00015 Serial serial(USBTX, USBRX); // tx, rx
00016 
00017 //BLE breakout
00018 SPI spi(D11, D12, D13);
00019 DigitalInOut req(PTD0); // D10
00020 DigitalInOut rdy(PTD4); // D2 needs a different pin
00021 DigitalInOut rst(PTD5); // D9
00022 
00023 //Motor driver
00024 DigitalOut BIN2(D3);
00025 DigitalOut BIN1(D4);
00026 PwmOut PWMB(D6);
00027 DigitalOut stdby(D14);
00028 TB6612 motorB(D6,D3,D4);    // PWMA,AIN1,AIN2
00029 
00030 //Ultrasonic
00031 float distance = 0;
00032 float raw = 0;
00033 int dropped = 0;
00034 DigitalOut ultra_trigger(D8);
00035 AnalogIn ultra_out(A0);
00036 
00037 BLEProperty read = BLERead;
00038 BLEProperty write = BLEWrite;
00039 BLEProperty notify = BLENotify;
00040 
00041 BLEPeripheral blePeripheral = BLEPeripheral(&req,&rdy,&rst);
00042 BLEService service = BLEService("5794ba16-ce64-46e5-9804-6851f7b3a183");
00043 BLECharacteristic netDropChrc = BLECharacteristic("fbb3136a-fe49-445b-a612-2019d1b33a6c",read | write,1,1);
00044 BLECharacteristic netDisarmedChrc = BLECharacteristic("f80fb006-0e8e-412c-8a92-19fe85328daa",read | write | notify,1,1);
00045 
00046 int main()
00047 {
00048     serial.printf("starting something\r\n");
00049     led1 = 1;
00050     led2 = 1;
00051     led3 = 1;
00052 
00053     ultra_trigger = 1;
00054     motorB = 0.0;
00055     stdby = 1;
00056     
00057     blePeripheral.setLocalName("NETTRAP");
00058     blePeripheral.setDeviceName("net trap peripheral!");
00059     blePeripheral.setAdvertisedServiceUuid(service.uuid());
00060     blePeripheral.addAttribute(service);
00061     serial.printf("set up attributes and so on \r\n");
00062     blePeripheral.addAttribute(netDropChrc);
00063     blePeripheral.addAttribute(netDisarmedChrc);
00064     serial.printf("added characteristics\r\n");
00065 
00066     char* bufTrue = "t";
00067     char* bufFalse = "f";
00068     netDropChrc.setValue(bufFalse);
00069     netDisarmedChrc.setValue(bufFalse);
00070     serial.printf("set up characteristic values\r\n");
00071 
00072     blePeripheral.begin();
00073     serial.printf("began peripheral supposedly\r\n");
00074     
00075     
00076     
00077     while(true) {
00078 
00079         
00080         if (*netDropChrc.value() == 'f') {
00081             if (*netDisarmedChrc.value()== 't') {
00082             dropped = 1; 
00083             }
00084             else {
00085             dropped = 0;
00086             }
00087         }
00088         
00089         else {
00090             dropped = 1;
00091             }
00092      
00093         blePeripheral.poll();
00094         motorB = 0.0;
00095         raw = ultra_out;
00096         distance = (ultra_out * 5) / 0.0098 ;
00097         serial.printf("%1.3f %1.3f \n", raw, distance);
00098         if (distance < 20 && dropped == 0) {
00099             motorB = 1.0;
00100             netDropChrc.setValue(bufTrue);
00101             dropped = 1;
00102         }
00103         wait(1);
00104     }
00105 
00106 }
00107 
00108 
00109 
00110 
00111 
00112 
00113