Niels Balemans
/
PGO6_VoteController_Niels_Balemans_
vote controller
Fork of PGO6_VoteController_template by
main.cpp@1:34e76c0cbe5a, 2017-10-29 (annotated)
- Committer:
- jensdehoog
- Date:
- Sun Oct 29 23:01:06 2017 +0000
- Revision:
- 1:34e76c0cbe5a
- Parent:
- 0:fd29cd85e75e
- Child:
- 2:5b7d055dbc91
Updated the assignment for a longer during time
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jensdehoog | 0:fd29cd85e75e | 1 | #define APP_VERSION 0.6f |
jensdehoog | 0:fd29cd85e75e | 2 | #define MQTT_VERSION 3 |
jensdehoog | 0:fd29cd85e75e | 3 | #define BROKER_NAME "broker.hivemq.com" |
jensdehoog | 0:fd29cd85e75e | 4 | #define BROKER_PORT 1883 |
jensdehoog | 0:fd29cd85e75e | 5 | |
jensdehoog | 0:fd29cd85e75e | 6 | #include "debounce_button.h" |
jensdehoog | 0:fd29cd85e75e | 7 | #include "EthernetInterface.h" |
jensdehoog | 0:fd29cd85e75e | 8 | #include "MQTTNetwork.h" |
jensdehoog | 0:fd29cd85e75e | 9 | #include "MQTTmbed.h" |
jensdehoog | 0:fd29cd85e75e | 10 | #include "MQTTClient.h" |
jensdehoog | 0:fd29cd85e75e | 11 | |
jensdehoog | 0:fd29cd85e75e | 12 | char* topic; |
jensdehoog | 0:fd29cd85e75e | 13 | |
jensdehoog | 0:fd29cd85e75e | 14 | /** |
jensdehoog | 0:fd29cd85e75e | 15 | TODO |
jensdehoog | 0:fd29cd85e75e | 16 | ---- |
jensdehoog | 0:fd29cd85e75e | 17 | - Check if the button has been pressed. If so, print the amount of clicks to a serial terminal. |
jensdehoog | 0:fd29cd85e75e | 18 | - Make an MQTT-service which: |
jensdehoog | 0:fd29cd85e75e | 19 | - starts up a network using EthernetInterface. Make sure the development board requests its address via DHCP. |
jensdehoog | 0:fd29cd85e75e | 20 | - makes a client and connects it to the broker using a client ID and credentials (username & password). |
jensdehoog | 0:fd29cd85e75e | 21 | - sends messages at the same topic as the smartphone app from PGO 2. Feel free to choose which Quality of Service |
jensdehoog | 0:fd29cd85e75e | 22 | you are going to use. Make a separate function which handles the sending procedure. Therefore, this function |
jensdehoog | 0:fd29cd85e75e | 23 | can be called each time we want to send a certain message. |
jensdehoog | 0:fd29cd85e75e | 24 | - When the button is pressed once, we send an upvote. When pressed twice, a downvote is sent. By pressing 4 times, |
jensdehoog | 0:fd29cd85e75e | 25 | the program disconnects from the broker and terminates. |
jensdehoog | 0:fd29cd85e75e | 26 | |
jensdehoog | 0:fd29cd85e75e | 27 | Extra |
jensdehoog | 0:fd29cd85e75e | 28 | ----- |
jensdehoog | 0:fd29cd85e75e | 29 | - Subscribe to the topic on which the song data is published. Display this received message on the serial terminal. |
jensdehoog | 0:fd29cd85e75e | 30 | - Test this controller in the complete system of PGO 2. Use these controllers instead of the smartphones. |
jensdehoog | 0:fd29cd85e75e | 31 | |
jensdehoog | 0:fd29cd85e75e | 32 | Tips & tricks |
jensdehoog | 0:fd29cd85e75e | 33 | ------------- |
jensdehoog | 0:fd29cd85e75e | 34 | - To generate an interrupt on the press of a button, use: |
jensdehoog | 0:fd29cd85e75e | 35 | InterruptIn button(USER_BUTTON); |
jensdehoog | 0:fd29cd85e75e | 36 | ... |
jensdehoog | 0:fd29cd85e75e | 37 | button.fall(callback(someFunction)); |
jensdehoog | 1:34e76c0cbe5a | 38 | The function someFunction(void) is called when this interrupt occurs. |
jensdehoog | 0:fd29cd85e75e | 39 | - Before implementing MQTT, test the multiclick feature first. |
jensdehoog | 1:34e76c0cbe5a | 40 | You can simply use 'printf()' to print to a serial terminal. The baud rate is 9600. |
jensdehoog | 0:fd29cd85e75e | 41 | - Have a look at the MQTT-library for Mbed and the HelloMQTT-example. |
jensdehoog | 0:fd29cd85e75e | 42 | - To have a uniform message sending procedure, use the following function usage: |
jensdehoog | 0:fd29cd85e75e | 43 | sendMessage(&client, topic, buf, qos, retained, duplicate) |
jensdehoog | 0:fd29cd85e75e | 44 | */ |
jensdehoog | 0:fd29cd85e75e | 45 | |
jensdehoog | 0:fd29cd85e75e | 46 | int main(int argc, char* argv[]) |
jensdehoog | 0:fd29cd85e75e | 47 | { |
jensdehoog | 0:fd29cd85e75e | 48 | |
jensdehoog | 0:fd29cd85e75e | 49 | return 0; |
jensdehoog | 0:fd29cd85e75e | 50 | } |