Workshop demo program
Dependencies: PinDetect mbed LoRaWAN-lib SX1272Lib
app/app.cpp@7:d7cdd6804277, 2017-04-12 (annotated)
- Committer:
- sergei11522
- Date:
- Wed Apr 12 18:15:03 2017 +0000
- Revision:
- 7:d7cdd6804277
- Child:
- 8:fb8b53c490e1
Customized for semtech workshop
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sergei11522 | 7:d7cdd6804277 | 1 | #include "main.h" |
sergei11522 | 7:d7cdd6804277 | 2 | #include "mbed.h" |
sergei11522 | 7:d7cdd6804277 | 3 | #include "DebounceIn.h" |
sergei11522 | 7:d7cdd6804277 | 4 | #include "PinNames.h" |
sergei11522 | 7:d7cdd6804277 | 5 | |
sergei11522 | 7:d7cdd6804277 | 6 | //initialize our sensors |
sergei11522 | 7:d7cdd6804277 | 7 | DebounceIn button(D6); |
sergei11522 | 7:d7cdd6804277 | 8 | DigitalOut led(A1); |
sergei11522 | 7:d7cdd6804277 | 9 | AnalogIn rotary(A3); //the potentiometer/rotary sensor |
sergei11522 | 7:d7cdd6804277 | 10 | |
sergei11522 | 7:d7cdd6804277 | 11 | bool just_joined = true; |
sergei11522 | 7:d7cdd6804277 | 12 | bool button_pressed = false; |
sergei11522 | 7:d7cdd6804277 | 13 | uint16_t rotation = 0; |
sergei11522 | 7:d7cdd6804277 | 14 | uint8_t data[64] = {0}; |
sergei11522 | 7:d7cdd6804277 | 15 | bool confirmation_received = false; |
sergei11522 | 7:d7cdd6804277 | 16 | |
sergei11522 | 7:d7cdd6804277 | 17 | void flashLED(uint8_t times){ |
sergei11522 | 7:d7cdd6804277 | 18 | for (int i = 0; i < times; i ++){ |
sergei11522 | 7:d7cdd6804277 | 19 | led.write(1); |
sergei11522 | 7:d7cdd6804277 | 20 | wait(0.3); |
sergei11522 | 7:d7cdd6804277 | 21 | led.write(0); |
sergei11522 | 7:d7cdd6804277 | 22 | wait(0.3); |
sergei11522 | 7:d7cdd6804277 | 23 | } |
sergei11522 | 7:d7cdd6804277 | 24 | } |
sergei11522 | 7:d7cdd6804277 | 25 | |
sergei11522 | 7:d7cdd6804277 | 26 | void onDownlinkConfirmation(){ |
sergei11522 | 7:d7cdd6804277 | 27 | confirmation_received = true; |
sergei11522 | 7:d7cdd6804277 | 28 | } |
sergei11522 | 7:d7cdd6804277 | 29 | |
sergei11522 | 7:d7cdd6804277 | 30 | void start(){ |
sergei11522 | 7:d7cdd6804277 | 31 | //any initialization here |
sergei11522 | 7:d7cdd6804277 | 32 | } |
sergei11522 | 7:d7cdd6804277 | 33 | |
sergei11522 | 7:d7cdd6804277 | 34 | //this loop will start to be called as soon as the device successfully joins the network |
sergei11522 | 7:d7cdd6804277 | 35 | void loop(){ |
sergei11522 | 7:d7cdd6804277 | 36 | //the loop is called as soon as the device joins. Flash the led 10 times when this happens |
sergei11522 | 7:d7cdd6804277 | 37 | if (just_joined){ |
sergei11522 | 7:d7cdd6804277 | 38 | just_joined = false; |
sergei11522 | 7:d7cdd6804277 | 39 | flashLED(10); |
sergei11522 | 7:d7cdd6804277 | 40 | } |
sergei11522 | 7:d7cdd6804277 | 41 | |
sergei11522 | 7:d7cdd6804277 | 42 | if (confirmation_received){ |
sergei11522 | 7:d7cdd6804277 | 43 | flashLED(2); |
sergei11522 | 7:d7cdd6804277 | 44 | confirmation_received = false; |
sergei11522 | 7:d7cdd6804277 | 45 | } |
sergei11522 | 7:d7cdd6804277 | 46 | |
sergei11522 | 7:d7cdd6804277 | 47 | //button is pressed. Trigger once so that if we hold the button this block doesnt continously execute |
sergei11522 | 7:d7cdd6804277 | 48 | if (button == 1&& button_pressed == false){ |
sergei11522 | 7:d7cdd6804277 | 49 | button_pressed = true; |
sergei11522 | 7:d7cdd6804277 | 50 | flashLED(3); |
sergei11522 | 7:d7cdd6804277 | 51 | rotation = rotary.read_u16(); |
sergei11522 | 7:d7cdd6804277 | 52 | data[0] = rotation >> 8; |
sergei11522 | 7:d7cdd6804277 | 53 | data[1] = rotation & 0xFF; |
sergei11522 | 7:d7cdd6804277 | 54 | setDataToSend(data, 2); |
sergei11522 | 7:d7cdd6804277 | 55 | sendLoraTransmission(); |
sergei11522 | 7:d7cdd6804277 | 56 | } else if (button == 0){ |
sergei11522 | 7:d7cdd6804277 | 57 | button_pressed = false; |
sergei11522 | 7:d7cdd6804277 | 58 | } |
sergei11522 | 7:d7cdd6804277 | 59 | } |