Stick some BLE in ME.

Dependencies:   TB6612FNG mbed BLE_nRF8001

Committer:
ddrew73
Date:
Wed Nov 12 17:43:52 2014 +0000
Revision:
3:a7f0b4b78648
Parent:
2:5398a0de0780
:)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ddrew73 3:a7f0b4b78648 1 //THE INFAMOUS NET TRAP
ddrew73 3:a7f0b4b78648 2 //Brought to you by Team LaTe
ddrew73 3:a7f0b4b78648 3
ddrew73 3:a7f0b4b78648 4
ddrew73 0:4277bfabef0d 5 #include "mbed.h"
ddrew73 0:4277bfabef0d 6 #include "TB6612.h"
jn80842 1:4e2578e8c73c 7 #include "nRF8001.h"
jn80842 1:4e2578e8c73c 8 #include "BLEPeripheral.h"
jn80842 1:4e2578e8c73c 9 #include "BLECharacteristic.h"
ddrew73 3:a7f0b4b78648 10
ddrew73 3:a7f0b4b78648 11 //Init
ddrew73 0:4277bfabef0d 12 DigitalOut led1(LED1);
ddrew73 0:4277bfabef0d 13 DigitalOut led2(LED2);
jn80842 1:4e2578e8c73c 14 DigitalOut led3(LED3);
jn80842 1:4e2578e8c73c 15 Serial serial(USBTX, USBRX); // tx, rx
jn80842 1:4e2578e8c73c 16
ddrew73 3:a7f0b4b78648 17 //BLE breakout
jn80842 1:4e2578e8c73c 18 SPI spi(D11, D12, D13);
jn80842 1:4e2578e8c73c 19 DigitalInOut req(PTD0); // D10
jn80842 1:4e2578e8c73c 20 DigitalInOut rdy(PTD4); // D2 needs a different pin
jn80842 1:4e2578e8c73c 21 DigitalInOut rst(PTD5); // D9
jn80842 1:4e2578e8c73c 22
ddrew73 3:a7f0b4b78648 23 //Motor driver
ddrew73 3:a7f0b4b78648 24 DigitalOut BIN2(D3);
ddrew73 3:a7f0b4b78648 25 DigitalOut BIN1(D4);
ddrew73 3:a7f0b4b78648 26 PwmOut PWMB(D6);
ddrew73 3:a7f0b4b78648 27 DigitalOut stdby(D14);
ddrew73 3:a7f0b4b78648 28 TB6612 motorB(D6,D3,D4); // PWMA,AIN1,AIN2
ddrew73 3:a7f0b4b78648 29
ddrew73 3:a7f0b4b78648 30 //Ultrasonic
ddrew73 3:a7f0b4b78648 31 float distance = 0;
ddrew73 3:a7f0b4b78648 32 float raw = 0;
ddrew73 3:a7f0b4b78648 33 int dropped = 0;
ddrew73 3:a7f0b4b78648 34 DigitalOut ultra_trigger(D8);
ddrew73 3:a7f0b4b78648 35 AnalogIn ultra_out(A0);
ddrew73 3:a7f0b4b78648 36
jn80842 1:4e2578e8c73c 37 BLEProperty read = BLERead;
jn80842 1:4e2578e8c73c 38 BLEProperty write = BLEWrite;
jn80842 2:5398a0de0780 39 BLEProperty notify = BLENotify;
jn80842 1:4e2578e8c73c 40
jn80842 1:4e2578e8c73c 41 BLEPeripheral blePeripheral = BLEPeripheral(&req,&rdy,&rst);
jn80842 1:4e2578e8c73c 42 BLEService service = BLEService("5794ba16-ce64-46e5-9804-6851f7b3a183");
jn80842 1:4e2578e8c73c 43 BLECharacteristic netDropChrc = BLECharacteristic("fbb3136a-fe49-445b-a612-2019d1b33a6c",read | write,1,1);
jn80842 2:5398a0de0780 44 BLECharacteristic netDisarmedChrc = BLECharacteristic("f80fb006-0e8e-412c-8a92-19fe85328daa",read | write | notify,1,1);
ddrew73 0:4277bfabef0d 45
ddrew73 3:a7f0b4b78648 46 int main()
ddrew73 3:a7f0b4b78648 47 {
jn80842 1:4e2578e8c73c 48 serial.printf("starting something\r\n");
jn80842 1:4e2578e8c73c 49 led1 = 1;
jn80842 1:4e2578e8c73c 50 led2 = 1;
jn80842 1:4e2578e8c73c 51 led3 = 1;
ddrew73 3:a7f0b4b78648 52
ddrew73 3:a7f0b4b78648 53 ultra_trigger = 1;
ddrew73 3:a7f0b4b78648 54 motorB = 0.0;
ddrew73 3:a7f0b4b78648 55 stdby = 1;
ddrew73 3:a7f0b4b78648 56
jn80842 1:4e2578e8c73c 57 blePeripheral.setLocalName("NETTRAP");
jn80842 1:4e2578e8c73c 58 blePeripheral.setDeviceName("net trap peripheral!");
jn80842 1:4e2578e8c73c 59 blePeripheral.setAdvertisedServiceUuid(service.uuid());
jn80842 1:4e2578e8c73c 60 blePeripheral.addAttribute(service);
jn80842 1:4e2578e8c73c 61 serial.printf("set up attributes and so on \r\n");
jn80842 1:4e2578e8c73c 62 blePeripheral.addAttribute(netDropChrc);
jn80842 1:4e2578e8c73c 63 blePeripheral.addAttribute(netDisarmedChrc);
jn80842 1:4e2578e8c73c 64 serial.printf("added characteristics\r\n");
ddrew73 0:4277bfabef0d 65
jn80842 1:4e2578e8c73c 66 char* bufTrue = "t";
jn80842 1:4e2578e8c73c 67 char* bufFalse = "f";
jn80842 1:4e2578e8c73c 68 netDropChrc.setValue(bufFalse);
jn80842 1:4e2578e8c73c 69 netDisarmedChrc.setValue(bufFalse);
jn80842 1:4e2578e8c73c 70 serial.printf("set up characteristic values\r\n");
ddrew73 3:a7f0b4b78648 71
jn80842 1:4e2578e8c73c 72 blePeripheral.begin();
jn80842 1:4e2578e8c73c 73 serial.printf("began peripheral supposedly\r\n");
jn80842 1:4e2578e8c73c 74
ddrew73 0:4277bfabef0d 75
ddrew73 0:4277bfabef0d 76
ddrew73 3:a7f0b4b78648 77 while(true) {
ddrew73 3:a7f0b4b78648 78
ddrew73 3:a7f0b4b78648 79
ddrew73 3:a7f0b4b78648 80 if (*netDropChrc.value() == 'f') {
ddrew73 3:a7f0b4b78648 81 if (*netDisarmedChrc.value()== 't') {
ddrew73 3:a7f0b4b78648 82 dropped = 1;
ddrew73 3:a7f0b4b78648 83 }
ddrew73 3:a7f0b4b78648 84 else {
ddrew73 3:a7f0b4b78648 85 dropped = 0;
ddrew73 3:a7f0b4b78648 86 }
ddrew73 3:a7f0b4b78648 87 }
ddrew73 3:a7f0b4b78648 88
ddrew73 3:a7f0b4b78648 89 else {
ddrew73 3:a7f0b4b78648 90 dropped = 1;
ddrew73 3:a7f0b4b78648 91 }
ddrew73 3:a7f0b4b78648 92
ddrew73 3:a7f0b4b78648 93 blePeripheral.poll();
ddrew73 3:a7f0b4b78648 94 motorB = 0.0;
ddrew73 3:a7f0b4b78648 95 raw = ultra_out;
ddrew73 3:a7f0b4b78648 96 distance = (ultra_out * 5) / 0.0098 ;
ddrew73 3:a7f0b4b78648 97 serial.printf("%1.3f %1.3f \n", raw, distance);
ddrew73 3:a7f0b4b78648 98 if (distance < 20 && dropped == 0) {
ddrew73 3:a7f0b4b78648 99 motorB = 1.0;
ddrew73 3:a7f0b4b78648 100 netDropChrc.setValue(bufTrue);
ddrew73 3:a7f0b4b78648 101 dropped = 1;
ddrew73 3:a7f0b4b78648 102 }
ddrew73 3:a7f0b4b78648 103 wait(1);
ddrew73 3:a7f0b4b78648 104 }
ddrew73 3:a7f0b4b78648 105
ddrew73 3:a7f0b4b78648 106 }
ddrew73 0:4277bfabef0d 107
ddrew73 0:4277bfabef0d 108
ddrew73 0:4277bfabef0d 109
ddrew73 0:4277bfabef0d 110
ddrew73 0:4277bfabef0d 111
ddrew73 3:a7f0b4b78648 112
ddrew73 3:a7f0b4b78648 113