forked from FOSS/BangleApps
Add flag raiser docs
parent
a04b1298f8
commit
a345ca2316
|
@ -959,6 +959,7 @@
|
||||||
"name": "Espruino Flag Raiser",
|
"name": "Espruino Flag Raiser",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"version":"0.01",
|
"version":"0.01",
|
||||||
|
"readme": "README.md",
|
||||||
"description": "App to send a command to another Espruino to cause it to raise a flag",
|
"description": "App to send a command to another Espruino to cause it to raise a flag",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
# Espruino Flag Raiser
|
||||||
|
|
||||||
|
An app to send a command to another Espruino to cause it to raise a flag.
|
||||||
|
|
||||||
|
For this to work, you need to upload the following code to another
|
||||||
|
bluetooth Espruino device (the one with the flag attached) :
|
||||||
|
|
||||||
|
```
|
||||||
|
var FLAG_PIN = D14;
|
||||||
|
|
||||||
|
var s = require("servo").connect(FLAG_PIN);
|
||||||
|
s.move(1,3000); // move to position 1 over 3 seconds
|
||||||
|
|
||||||
|
var timeout;
|
||||||
|
function flag() {
|
||||||
|
if (timeout) clearTimeout();
|
||||||
|
s.move(0.2,2000);
|
||||||
|
timeout = setTimeout(function() {
|
||||||
|
timeout = undefined;
|
||||||
|
s.move(1,2000);
|
||||||
|
},2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
setWatch(flag, BTN, {repeat:true});
|
||||||
|
|
||||||
|
NRF.setServices({
|
||||||
|
"3e440001-f5bb-357d-719d-179272e4d4d9": {
|
||||||
|
"3e440002-f5bb-357d-719d-179272e4d4d9": {
|
||||||
|
value : [0],
|
||||||
|
maxLen : 1,
|
||||||
|
writable : true,
|
||||||
|
onWrite : function(evt) {
|
||||||
|
flag();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, { uart : false });
|
||||||
|
NRF.setAdvertising({}, {name:"Flag"});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Wiring
|
||||||
|
|
||||||
|
This is designed for an [MDBT42Q Breakout board](http://www.espruino.com/MDBT42Q)
|
||||||
|
but should work on any Bluetooth LE Espruino device - you just need to change `FLAG_PIN`
|
||||||
|
to the name of the pin that's connected to the servo motor.
|
||||||
|
|
||||||
|
However, as designed:
|
||||||
|
|
||||||
|
* Get an [MDBT42Q Breakout board](http://www.espruino.com/MDBT42Q)
|
||||||
|
* Connect `GND` to GND (black) of a 3.7v LiPo battery
|
||||||
|
* Connect `Vin` to positive (red) of the battery
|
||||||
|
* Take a servo motor and:
|
||||||
|
* Connect the Black wire to `GND` (LiPo GND)
|
||||||
|
* Connect the Red wire to `Vin` (LiPo 3.7v)
|
||||||
|
* Connect the White wire to `D14` on the MDBT42Q
|
||||||
|
|
||||||
|
## How does it work?
|
||||||
|
|
||||||
|
The code above changes the advertised name of the Espruino device to be
|
||||||
|
`Flag` (which the app then searches for).
|
||||||
|
|
||||||
|
Then, it adds a service UUID `3e440001-f5bb-357d-719d-179272e4d4d9` (this
|
||||||
|
is just a random number we made up) with characteristic `3e440002-f5bb-357d-719d-179272e4d4d9`
|
||||||
|
(the same UUID with the second 16 bits incremented). When the characteristic
|
||||||
|
is written (with any data), `flag()` is called, which raises the flag.
|
||||||
|
|
||||||
|
`flag()` itself uses the [servo module](http://www.espruino.com/Servo+Motors)
|
||||||
|
to allow the servo motor to be controlled easily.
|
||||||
|
|
||||||
|
You might find the [Espruino About Bluetooth LE page](http://www.espruino.com/About+Bluetooth+LE)
|
||||||
|
is useful as an introduction to services and characteristics.
|
||||||
|
|
||||||
|
### Don't want to use a servo motor?
|
||||||
|
|
||||||
|
No problem, just replace `flag()` with a function that controls whatever you need
|
||||||
|
it to.
|
Loading…
Reference in New Issue