![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Vadim Gouskov 15-10-18 Vote Controller Version 1
Fork of PGO6_VoteController_template by
main.cpp
- Committer:
- VadimGouskov
- Date:
- 2018-10-15
- Revision:
- 3:e234aaf2a634
- Parent:
- 2:5b7d055dbc91
File content as of revision 3:e234aaf2a634:
#define APP_VERSION 0.6f #define MQTT_VERSION 3 #define BROKER_NAME "broker.hivemq.com" #define BROKER_PORT 1883 #include "debounce_button.h" #include "EthernetInterface.h" #include "MQTTNetwork.h" #include "MQTTmbed.h" #include "MQTTClient.h" char* topic; /** TODO ---- - Check if the button has been pressed. If so, print the amount of clicks to a serial terminal. - Make an MQTT-service which: - starts up a network using EthernetInterface. Make sure the development board requests its address via DHCP. - makes a client and connects it to the broker using a client ID and credentials (username & password). - sends messages at the same topic as the smartphone app from PGO 2. Feel free to choose which Quality of Service you are going to use. Make a separate function which handles the sending procedure. Therefore, this function can be called each time we want to send a certain message. - When the button is pressed once, we send an upvote. When pressed twice, a downvote is sent. By pressing 4 times, the program disconnects from the broker and terminates. Extra ----- - Subscribe to the topic on which the song data is published. Display this received message on the serial terminal. - Test this controller in the complete system of PGO 2. Use these controllers instead of the smartphones. Tips & tricks ------------- - To generate an interrupt on the press of a button, use: InterruptIn button(USER_BUTTON); ... button.fall(callback(someFunction)); - Before implementing MQTT, test the multiclick feature first. - Have a look at the MQTT-library for Mbed and the HelloMQTT-example. - To have a uniform message sending procedure, use the following function usage: sendMessage(&client, topic, buf, qos, retained, duplicate) */ int main(int argc, char* argv[]) { InterruptIn button(USER_BUTTON); button.fall(callback(&button1_onpressed_cb)); button1_busy = false; button1_enabled = true; button1_pressed = false; multiclick_state = 0; // status_led = 0; while(1){ if(debounced_flag){ // printf("debounced \r\n"); // printf("clicks %d\r\n", multiclick_state); // printf("button_enabled %d\r\n", button1_enabled); // printf("button_busy %d\r\n", button1_busy); debounced_flag = false; } // printf("button_enabled %d\r\n", button1_enabled); if(done_counting){ printf("counted %d \r\n", multiclick_state); // handle click amount here multiclick_state = 0; done_counting = false; } } return 0; }