Workshop demo program

Dependencies:   PinDetect mbed LoRaWAN-lib SX1272Lib

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?

UserRevisionLine numberNew 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 }