Stick some BLE in ME.
Dependencies: TB6612FNG mbed BLE_nRF8001
main.cpp@3:a7f0b4b78648, 2014-11-12 (annotated)
- Committer:
- ddrew73
- Date:
- Wed Nov 12 17:43:52 2014 +0000
- Revision:
- 3:a7f0b4b78648
- Parent:
- 2:5398a0de0780
:)
Who changed what in which revision?
User | Revision | Line number | New 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 |