Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Nextion Utilities
main.cpp@0:a0dff6b0bde0, 2020-04-15 (annotated)
- Committer:
- franciscodias
- Date:
- Wed Apr 15 23:31:44 2020 +0000
- Revision:
- 0:a0dff6b0bde0
Erro na ultima linha
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| franciscodias | 0:a0dff6b0bde0 | 1 | #include "mbed.h" |
| franciscodias | 0:a0dff6b0bde0 | 2 | #include "Nextion.h" |
| franciscodias | 0:a0dff6b0bde0 | 3 | |
| franciscodias | 0:a0dff6b0bde0 | 4 | Serial Display(PA_0, PA_1, 115200); //tx, rx, baud |
| franciscodias | 0:a0dff6b0bde0 | 5 | |
| franciscodias | 0:a0dff6b0bde0 | 6 | int test = 0; |
| franciscodias | 0:a0dff6b0bde0 | 7 | int CurrentPage = 0; |
| franciscodias | 0:a0dff6b0bde0 | 8 | int temperature = 50; |
| franciscodias | 0:a0dff6b0bde0 | 9 | int voltage = 116; |
| franciscodias | 0:a0dff6b0bde0 | 10 | |
| franciscodias | 0:a0dff6b0bde0 | 11 | //Page 0 |
| franciscodias | 0:a0dff6b0bde0 | 12 | NexButton b0 = NexButton(0, 1, "b0"); //Race |
| franciscodias | 0:a0dff6b0bde0 | 13 | NexButton b1 = NexButton(0, 2, "b1"); //Test |
| franciscodias | 0:a0dff6b0bde0 | 14 | |
| franciscodias | 0:a0dff6b0bde0 | 15 | //Page 1 |
| franciscodias | 0:a0dff6b0bde0 | 16 | NexButton b2 = NexButton(1, 5, "b0"); //Back |
| franciscodias | 0:a0dff6b0bde0 | 17 | NexText t0 = NexText(1, 3, "t2"); //Temperature |
| franciscodias | 0:a0dff6b0bde0 | 18 | NexText t1 = NexText(1, 4, "t3"); //Voltage |
| franciscodias | 0:a0dff6b0bde0 | 19 | |
| franciscodias | 0:a0dff6b0bde0 | 20 | //Page 2 |
| franciscodias | 0:a0dff6b0bde0 | 21 | NexButton b3 = NexButton(2, 1, "b0"); //Back |
| franciscodias | 0:a0dff6b0bde0 | 22 | NexText t2 = NexText(2, 2, "t0"); //test |
| franciscodias | 0:a0dff6b0bde0 | 23 | |
| franciscodias | 0:a0dff6b0bde0 | 24 | //Declare Pages |
| franciscodias | 0:a0dff6b0bde0 | 25 | NexPage page0 = NexPage(0, 0, "page0"); // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 26 | NexPage page1 = NexPage(1, 0, "page1"); // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 27 | NexPage page2 = NexPage(2, 0, "page2"); // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 28 | |
| franciscodias | 0:a0dff6b0bde0 | 29 | //End of declaring objects |
| franciscodias | 0:a0dff6b0bde0 | 30 | |
| franciscodias | 0:a0dff6b0bde0 | 31 | |
| franciscodias | 0:a0dff6b0bde0 | 32 | // Declare touch event objects to the touch event list: |
| franciscodias | 0:a0dff6b0bde0 | 33 | // You just need to add the names of the objects that send a touch event. |
| franciscodias | 0:a0dff6b0bde0 | 34 | // Format: &<object name>, |
| franciscodias | 0:a0dff6b0bde0 | 35 | |
| franciscodias | 0:a0dff6b0bde0 | 36 | NexTouch *nex_listen_list[] = |
| franciscodias | 0:a0dff6b0bde0 | 37 | { |
| franciscodias | 0:a0dff6b0bde0 | 38 | &b0, // Button added |
| franciscodias | 0:a0dff6b0bde0 | 39 | &b1, // Button added |
| franciscodias | 0:a0dff6b0bde0 | 40 | &b2, // Button added |
| franciscodias | 0:a0dff6b0bde0 | 41 | &b3, // Button added |
| franciscodias | 0:a0dff6b0bde0 | 42 | &page0, // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 43 | &page1, // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 44 | &page2, // Page added as a touch event |
| franciscodias | 0:a0dff6b0bde0 | 45 | NULL // String terminated |
| franciscodias | 0:a0dff6b0bde0 | 46 | }; // End of touch event list |
| franciscodias | 0:a0dff6b0bde0 | 47 | |
| franciscodias | 0:a0dff6b0bde0 | 48 | |
| franciscodias | 0:a0dff6b0bde0 | 49 | ////////////////////////// Touch events: |
| franciscodias | 0:a0dff6b0bde0 | 50 | // Each of the following sections are going to run everytime the touch event happens: |
| franciscodias | 0:a0dff6b0bde0 | 51 | // Is going to run the code inside each section only ones for each touch event. |
| franciscodias | 0:a0dff6b0bde0 | 52 | |
| franciscodias | 0:a0dff6b0bde0 | 53 | void b0PushCallback(void *ptr) // Press event for "Race" button on page 0 |
| franciscodias | 0:a0dff6b0bde0 | 54 | { |
| franciscodias | 0:a0dff6b0bde0 | 55 | Display.printf("page 1"); // Sending this it's going to tell the nextion display to go to page 1. |
| franciscodias | 0:a0dff6b0bde0 | 56 | Display.putc(0xff); // We always have to send this three lines after each command sent to the nextion display. |
| franciscodias | 0:a0dff6b0bde0 | 57 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 58 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 59 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 60 | |
| franciscodias | 0:a0dff6b0bde0 | 61 | |
| franciscodias | 0:a0dff6b0bde0 | 62 | void b1PushCallback(void *ptr) // Press event for "Test" button on page 0 |
| franciscodias | 0:a0dff6b0bde0 | 63 | { |
| franciscodias | 0:a0dff6b0bde0 | 64 | Display.printf("page 2"); // Sending this it's going to tell the nextion display to go to page 2. |
| franciscodias | 0:a0dff6b0bde0 | 65 | Display.putc(0xff); // We always have to send this three lines after each command sent to the nextion display. |
| franciscodias | 0:a0dff6b0bde0 | 66 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 67 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 68 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 69 | |
| franciscodias | 0:a0dff6b0bde0 | 70 | void b2PushCallback(void *ptr) // Press event for "Back" button on page 1 |
| franciscodias | 0:a0dff6b0bde0 | 71 | { |
| franciscodias | 0:a0dff6b0bde0 | 72 | Display.printf("page 0"); // Sending this it's going to tell the nextion display to go to page 0. |
| franciscodias | 0:a0dff6b0bde0 | 73 | Display.putc(0xff); // We always have to send this three lines after each command sent to the nextion display. |
| franciscodias | 0:a0dff6b0bde0 | 74 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 75 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 76 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 77 | |
| franciscodias | 0:a0dff6b0bde0 | 78 | void b3PushCallback(void *ptr) // Press event for "Back" button on page 2 |
| franciscodias | 0:a0dff6b0bde0 | 79 | { |
| franciscodias | 0:a0dff6b0bde0 | 80 | Display.printf("page 0"); // Sending this it's going to tell the nextion display to go to page 0. |
| franciscodias | 0:a0dff6b0bde0 | 81 | Display.putc(0xff); // We always have to send this three lines after each command sent to the nextion display. |
| franciscodias | 0:a0dff6b0bde0 | 82 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 83 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 84 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 85 | |
| franciscodias | 0:a0dff6b0bde0 | 86 | |
| franciscodias | 0:a0dff6b0bde0 | 87 | // Page change event: |
| franciscodias | 0:a0dff6b0bde0 | 88 | void page0PushCallback(void *ptr) // If page 0 is loaded on the display, the following is going to execute: |
| franciscodias | 0:a0dff6b0bde0 | 89 | { |
| franciscodias | 0:a0dff6b0bde0 | 90 | CurrentPage = 0; // Set variable as 0 so from now on stm knows page 0 is loaded on the display |
| franciscodias | 0:a0dff6b0bde0 | 91 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 92 | |
| franciscodias | 0:a0dff6b0bde0 | 93 | |
| franciscodias | 0:a0dff6b0bde0 | 94 | // Page change event: |
| franciscodias | 0:a0dff6b0bde0 | 95 | void page1PushCallback(void *ptr) // If page 1 is loaded on the display, the following is going to execute: |
| franciscodias | 0:a0dff6b0bde0 | 96 | { |
| franciscodias | 0:a0dff6b0bde0 | 97 | CurrentPage = 1; // Set variable as 1 so from now on stm knows page 1 is loaded on the display |
| franciscodias | 0:a0dff6b0bde0 | 98 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 99 | |
| franciscodias | 0:a0dff6b0bde0 | 100 | |
| franciscodias | 0:a0dff6b0bde0 | 101 | // Page change event: |
| franciscodias | 0:a0dff6b0bde0 | 102 | void page2PushCallback(void *ptr) // If page 2 is loaded on the display, the following is going to execute: |
| franciscodias | 0:a0dff6b0bde0 | 103 | { |
| franciscodias | 0:a0dff6b0bde0 | 104 | CurrentPage = 2; // Set variable as 2 so from now on stm knows page 2 is loaded on the display |
| franciscodias | 0:a0dff6b0bde0 | 105 | } // End of press event |
| franciscodias | 0:a0dff6b0bde0 | 106 | |
| franciscodias | 0:a0dff6b0bde0 | 107 | ////////////////////////// End of touch events |
| franciscodias | 0:a0dff6b0bde0 | 108 | |
| franciscodias | 0:a0dff6b0bde0 | 109 | |
| franciscodias | 0:a0dff6b0bde0 | 110 | |
| franciscodias | 0:a0dff6b0bde0 | 111 | |
| franciscodias | 0:a0dff6b0bde0 | 112 | |
| franciscodias | 0:a0dff6b0bde0 | 113 | |
| franciscodias | 0:a0dff6b0bde0 | 114 | |
| franciscodias | 0:a0dff6b0bde0 | 115 | int main() { |
| franciscodias | 0:a0dff6b0bde0 | 116 | // Register the event callback functions of each touch event: |
| franciscodias | 0:a0dff6b0bde0 | 117 | // You need to register press events and release events seperatly. |
| franciscodias | 0:a0dff6b0bde0 | 118 | // Format for press events: <object name>.attachPush(<object name>PushCallback); |
| franciscodias | 0:a0dff6b0bde0 | 119 | // Format for release events: <object name>.attachPop(<object name>PopCallback); |
| franciscodias | 0:a0dff6b0bde0 | 120 | b0.attachPush(b0PushCallback); // Button press |
| franciscodias | 0:a0dff6b0bde0 | 121 | b1.attachPush(b1PushCallback); // Button press |
| franciscodias | 0:a0dff6b0bde0 | 122 | b2.attachPush(b2PushCallback); // Button press |
| franciscodias | 0:a0dff6b0bde0 | 123 | b3.attachPush(b3PushCallback); // Button press |
| franciscodias | 0:a0dff6b0bde0 | 124 | page0.attachPush(page0PushCallback); // Page press event |
| franciscodias | 0:a0dff6b0bde0 | 125 | page1.attachPush(page1PushCallback); // Page press event |
| franciscodias | 0:a0dff6b0bde0 | 126 | page2.attachPush(page2PushCallback); // Page press event |
| franciscodias | 0:a0dff6b0bde0 | 127 | |
| franciscodias | 0:a0dff6b0bde0 | 128 | // End of registering the event callback functions |
| franciscodias | 0:a0dff6b0bde0 | 129 | |
| franciscodias | 0:a0dff6b0bde0 | 130 | |
| franciscodias | 0:a0dff6b0bde0 | 131 | |
| franciscodias | 0:a0dff6b0bde0 | 132 | while(1){ |
| franciscodias | 0:a0dff6b0bde0 | 133 | // Send page number to the object called np: |
| franciscodias | 0:a0dff6b0bde0 | 134 | // This object (np) exist on every page so at this point we don't need to check which page is loaded on the display. |
| franciscodias | 0:a0dff6b0bde0 | 135 | Display.printf("np.val="); // This is sent to the nextion display to set what object name (before the dot) and what atribute (after the dot) are you going to change. |
| franciscodias | 0:a0dff6b0bde0 | 136 | Display.printf("%d", CurrentPage); // This is the value you want to send to that object and atribute mentioned before. |
| franciscodias | 0:a0dff6b0bde0 | 137 | Display.putc(0xff); // We always have to send this three lines after each command sent to the nextion display. |
| franciscodias | 0:a0dff6b0bde0 | 138 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 139 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 140 | |
| franciscodias | 0:a0dff6b0bde0 | 141 | if(CurrentPage == 1){ |
| franciscodias | 0:a0dff6b0bde0 | 142 | temperature++; |
| franciscodias | 0:a0dff6b0bde0 | 143 | voltage--; |
| franciscodias | 0:a0dff6b0bde0 | 144 | wait(4); |
| franciscodias | 0:a0dff6b0bde0 | 145 | if(temperature == 70 || voltage == 0 ){ |
| franciscodias | 0:a0dff6b0bde0 | 146 | temperature = 50; |
| franciscodias | 0:a0dff6b0bde0 | 147 | voltage = 116; |
| franciscodias | 0:a0dff6b0bde0 | 148 | } |
| franciscodias | 0:a0dff6b0bde0 | 149 | //temperature |
| franciscodias | 0:a0dff6b0bde0 | 150 | Display.printf("t2.txt"); |
| franciscodias | 0:a0dff6b0bde0 | 151 | Display.printf("%d", temperature); |
| franciscodias | 0:a0dff6b0bde0 | 152 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 153 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 154 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 155 | |
| franciscodias | 0:a0dff6b0bde0 | 156 | //voltage |
| franciscodias | 0:a0dff6b0bde0 | 157 | Display.printf("t3.txt"); |
| franciscodias | 0:a0dff6b0bde0 | 158 | Display.printf("%d", voltage); |
| franciscodias | 0:a0dff6b0bde0 | 159 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 160 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 161 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 162 | } |
| franciscodias | 0:a0dff6b0bde0 | 163 | |
| franciscodias | 0:a0dff6b0bde0 | 164 | if(CurrentPage == 2){ |
| franciscodias | 0:a0dff6b0bde0 | 165 | test++; |
| franciscodias | 0:a0dff6b0bde0 | 166 | if(test == 100) |
| franciscodias | 0:a0dff6b0bde0 | 167 | test = 0; |
| franciscodias | 0:a0dff6b0bde0 | 168 | wait(2.0); |
| franciscodias | 0:a0dff6b0bde0 | 169 | |
| franciscodias | 0:a0dff6b0bde0 | 170 | //test |
| franciscodias | 0:a0dff6b0bde0 | 171 | Display.printf("t0.txt"); |
| franciscodias | 0:a0dff6b0bde0 | 172 | Display.printf("%d", test); |
| franciscodias | 0:a0dff6b0bde0 | 173 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 174 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 175 | Display.putc(0xff); |
| franciscodias | 0:a0dff6b0bde0 | 176 | } |
| franciscodias | 0:a0dff6b0bde0 | 177 | |
| franciscodias | 0:a0dff6b0bde0 | 178 | // We are going to check the list of touch events we enter previously to |
| franciscodias | 0:a0dff6b0bde0 | 179 | // know if any touch event just happened, and excecute the corresponding instructions: |
| franciscodias | 0:a0dff6b0bde0 | 180 | |
| franciscodias | 0:a0dff6b0bde0 | 181 | nexLoop(nex_listen_list); // Check for any touch event |
| franciscodias | 0:a0dff6b0bde0 | 182 | |
| franciscodias | 0:a0dff6b0bde0 | 183 | } |
| franciscodias | 0:a0dff6b0bde0 | 184 | } |