a demo of GUI on DISCOF7 consisting of a few buttons and feeders
Dependencies: ADXL345 BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
main.cpp@1:4f356fb65677, 2016-08-04 (annotated)
- Committer:
- habiburrahman
- Date:
- Thu Aug 04 15:36:07 2016 +0000
- Revision:
- 1:4f356fb65677
- Parent:
- 0:122b5c3cbf4d
- Child:
- 2:76522cfa03cd
added accelerometer;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
habiburrahman | 0:122b5c3cbf4d | 1 | #include "mbed.h" |
habiburrahman | 0:122b5c3cbf4d | 2 | #include "TS_DISCO_F746NG.h" |
habiburrahman | 0:122b5c3cbf4d | 3 | #include "LCD_DISCO_F746NG.h" |
habiburrahman | 0:122b5c3cbf4d | 4 | #include "ESP8266.h" |
habiburrahman | 0:122b5c3cbf4d | 5 | #include "TCPSocketConnection.h" |
habiburrahman | 0:122b5c3cbf4d | 6 | #include <string> |
habiburrahman | 0:122b5c3cbf4d | 7 | using namespace std; |
habiburrahman | 0:122b5c3cbf4d | 8 | |
habiburrahman | 0:122b5c3cbf4d | 9 | |
habiburrahman | 0:122b5c3cbf4d | 10 | |
habiburrahman | 0:122b5c3cbf4d | 11 | LCD_DISCO_F746NG lcd; |
habiburrahman | 0:122b5c3cbf4d | 12 | TS_DISCO_F746NG ts; |
habiburrahman | 0:122b5c3cbf4d | 13 | TS_StateTypeDef TS_State; |
habiburrahman | 0:122b5c3cbf4d | 14 | |
habiburrahman | 0:122b5c3cbf4d | 15 | |
habiburrahman | 0:122b5c3cbf4d | 16 | |
habiburrahman | 0:122b5c3cbf4d | 17 | bool touch_test_rectangle(uint16_t tx, uint16_t ty, uint16_t x, uint16_t y, uint16_t width, uint16_t height){ |
habiburrahman | 0:122b5c3cbf4d | 18 | |
habiburrahman | 0:122b5c3cbf4d | 19 | bool x_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 20 | bool y_is_in = 0; |
habiburrahman | 0:122b5c3cbf4d | 21 | //uint16_t tx, ty; |
habiburrahman | 0:122b5c3cbf4d | 22 | |
habiburrahman | 0:122b5c3cbf4d | 23 | //ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 24 | //tx = TS_State.touchX[0]; |
habiburrahman | 0:122b5c3cbf4d | 25 | //ty = TS_State.touchY[0]; |
habiburrahman | 0:122b5c3cbf4d | 26 | //printf("your touches are %d , %d\r\n",tx,ty); |
habiburrahman | 0:122b5c3cbf4d | 27 | |
habiburrahman | 0:122b5c3cbf4d | 28 | |
habiburrahman | 0:122b5c3cbf4d | 29 | if( (tx>x) && (tx<(x+width))) x_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 30 | if( (ty>y) && (ty<(y+height))) y_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 31 | |
habiburrahman | 0:122b5c3cbf4d | 32 | |
habiburrahman | 0:122b5c3cbf4d | 33 | bool buttest; |
habiburrahman | 0:122b5c3cbf4d | 34 | buttest = x_is_in & y_is_in; |
habiburrahman | 0:122b5c3cbf4d | 35 | |
habiburrahman | 0:122b5c3cbf4d | 36 | //if(buttest){ |
habiburrahman | 0:122b5c3cbf4d | 37 | // printf("welldone\r\n"); |
habiburrahman | 0:122b5c3cbf4d | 38 | //} |
habiburrahman | 0:122b5c3cbf4d | 39 | |
habiburrahman | 0:122b5c3cbf4d | 40 | return (bool) buttest; |
habiburrahman | 0:122b5c3cbf4d | 41 | |
habiburrahman | 0:122b5c3cbf4d | 42 | } |
habiburrahman | 0:122b5c3cbf4d | 43 | |
habiburrahman | 0:122b5c3cbf4d | 44 | |
habiburrahman | 0:122b5c3cbf4d | 45 | uint16_t h_feeder(uint16_t tx, uint16_t ty,uint16_t x, uint16_t y, uint16_t width, uint16_t height){ |
habiburrahman | 0:122b5c3cbf4d | 46 | //uint16_t tx, ty; |
habiburrahman | 0:122b5c3cbf4d | 47 | //ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 48 | //tx = TS_State.touchX[0]; |
habiburrahman | 0:122b5c3cbf4d | 49 | //ty = TS_State.touchY[0]; |
habiburrahman | 0:122b5c3cbf4d | 50 | |
habiburrahman | 0:122b5c3cbf4d | 51 | bool x_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 52 | bool y_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 53 | |
habiburrahman | 0:122b5c3cbf4d | 54 | if( (tx>x) && (tx<(x+width))) x_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 55 | if( (ty>y) && (ty<(y+height))) y_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 56 | |
habiburrahman | 0:122b5c3cbf4d | 57 | bool buttest; |
habiburrahman | 0:122b5c3cbf4d | 58 | buttest = x_is_in & y_is_in; |
habiburrahman | 0:122b5c3cbf4d | 59 | |
habiburrahman | 0:122b5c3cbf4d | 60 | if(buttest){ |
habiburrahman | 0:122b5c3cbf4d | 61 | return tx - x; |
habiburrahman | 0:122b5c3cbf4d | 62 | } |
habiburrahman | 0:122b5c3cbf4d | 63 | |
habiburrahman | 0:122b5c3cbf4d | 64 | |
habiburrahman | 0:122b5c3cbf4d | 65 | } |
habiburrahman | 0:122b5c3cbf4d | 66 | |
habiburrahman | 0:122b5c3cbf4d | 67 | bool but1=0,but2=0,but3=0; |
habiburrahman | 0:122b5c3cbf4d | 68 | uint16_t feed1_dist = 0; |
habiburrahman | 0:122b5c3cbf4d | 69 | uint16_t feed2_dist = 0; |
habiburrahman | 0:122b5c3cbf4d | 70 | |
habiburrahman | 1:4f356fb65677 | 71 | int main2() |
habiburrahman | 0:122b5c3cbf4d | 72 | { |
habiburrahman | 0:122b5c3cbf4d | 73 | |
habiburrahman | 0:122b5c3cbf4d | 74 | uint16_t x, y; |
habiburrahman | 0:122b5c3cbf4d | 75 | uint8_t text[30]; |
habiburrahman | 0:122b5c3cbf4d | 76 | uint8_t status; |
habiburrahman | 0:122b5c3cbf4d | 77 | uint8_t idx; |
habiburrahman | 0:122b5c3cbf4d | 78 | uint8_t cleared = 0; |
habiburrahman | 0:122b5c3cbf4d | 79 | uint8_t prev_nb_touches = 0; |
habiburrahman | 0:122b5c3cbf4d | 80 | |
habiburrahman | 0:122b5c3cbf4d | 81 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 82 | wait(1); |
habiburrahman | 0:122b5c3cbf4d | 83 | |
habiburrahman | 1:4f356fb65677 | 84 | |
habiburrahman | 1:4f356fb65677 | 85 | |
habiburrahman | 1:4f356fb65677 | 86 | |
habiburrahman | 0:122b5c3cbf4d | 87 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
habiburrahman | 0:122b5c3cbf4d | 88 | if (status != TS_OK) { |
habiburrahman | 0:122b5c3cbf4d | 89 | lcd.Clear(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 90 | lcd.SetBackColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 91 | lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 92 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 93 | } else { |
habiburrahman | 0:122b5c3cbf4d | 94 | lcd.Clear(LCD_COLOR_BLUE); |
habiburrahman | 0:122b5c3cbf4d | 95 | lcd.SetBackColor(LCD_COLOR_BLUE); |
habiburrahman | 0:122b5c3cbf4d | 96 | lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 97 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 98 | } |
habiburrahman | 0:122b5c3cbf4d | 99 | |
habiburrahman | 0:122b5c3cbf4d | 100 | lcd.SetBackColor(LCD_COLOR_YELLOW); |
habiburrahman | 0:122b5c3cbf4d | 101 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 102 | |
habiburrahman | 0:122b5c3cbf4d | 103 | lcd.Clear(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 104 | |
habiburrahman | 0:122b5c3cbf4d | 105 | |
habiburrahman | 0:122b5c3cbf4d | 106 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 107 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 108 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 109 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 110 | |
habiburrahman | 0:122b5c3cbf4d | 111 | lcd.FillRect(48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 112 | lcd.FillRect(48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 113 | |
habiburrahman | 0:122b5c3cbf4d | 114 | wait(1); |
habiburrahman | 0:122b5c3cbf4d | 115 | |
habiburrahman | 0:122b5c3cbf4d | 116 | //lcd.SetFont(&Font12); |
habiburrahman | 0:122b5c3cbf4d | 117 | //lcd.SetBackColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 118 | //lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 119 | //lcd.Clear(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 120 | |
habiburrahman | 0:122b5c3cbf4d | 121 | |
habiburrahman | 0:122b5c3cbf4d | 122 | while(1){ |
habiburrahman | 0:122b5c3cbf4d | 123 | //ts.ResetTouchData(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 124 | //ts.ITClear(); |
habiburrahman | 0:122b5c3cbf4d | 125 | |
habiburrahman | 0:122b5c3cbf4d | 126 | but1=0; |
habiburrahman | 0:122b5c3cbf4d | 127 | but2=0; |
habiburrahman | 0:122b5c3cbf4d | 128 | but3=0; |
habiburrahman | 0:122b5c3cbf4d | 129 | |
habiburrahman | 0:122b5c3cbf4d | 130 | |
habiburrahman | 0:122b5c3cbf4d | 131 | ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 132 | if (TS_State.touchDetected) { |
habiburrahman | 0:122b5c3cbf4d | 133 | |
habiburrahman | 0:122b5c3cbf4d | 134 | |
habiburrahman | 0:122b5c3cbf4d | 135 | feed1_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 136 | feed2_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 137 | but1 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 138 | but2 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 139 | but3 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 140 | |
habiburrahman | 0:122b5c3cbf4d | 141 | if(feed1_dist>0){ |
habiburrahman | 0:122b5c3cbf4d | 142 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 143 | lcd.FillRect(48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 144 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 145 | lcd.FillRect(48, 152, feed1_dist, 30); |
habiburrahman | 0:122b5c3cbf4d | 146 | } |
habiburrahman | 0:122b5c3cbf4d | 147 | |
habiburrahman | 0:122b5c3cbf4d | 148 | if(feed2_dist>0){ |
habiburrahman | 0:122b5c3cbf4d | 149 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 150 | lcd.FillRect(48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 151 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 152 | lcd.FillRect(48, 212, feed2_dist, 30); |
habiburrahman | 0:122b5c3cbf4d | 153 | } |
habiburrahman | 0:122b5c3cbf4d | 154 | } |
habiburrahman | 0:122b5c3cbf4d | 155 | |
habiburrahman | 0:122b5c3cbf4d | 156 | if(but1){ |
habiburrahman | 0:122b5c3cbf4d | 157 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 158 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 1:4f356fb65677 | 159 | |
habiburrahman | 1:4f356fb65677 | 160 | |
habiburrahman | 1:4f356fb65677 | 161 | |
habiburrahman | 0:122b5c3cbf4d | 162 | } |
habiburrahman | 0:122b5c3cbf4d | 163 | else{ |
habiburrahman | 0:122b5c3cbf4d | 164 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 165 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 166 | } |
habiburrahman | 0:122b5c3cbf4d | 167 | |
habiburrahman | 0:122b5c3cbf4d | 168 | if(but2){ |
habiburrahman | 0:122b5c3cbf4d | 169 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 170 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 171 | } |
habiburrahman | 0:122b5c3cbf4d | 172 | else{ |
habiburrahman | 0:122b5c3cbf4d | 173 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 174 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 175 | } |
habiburrahman | 0:122b5c3cbf4d | 176 | |
habiburrahman | 0:122b5c3cbf4d | 177 | if(but3){ |
habiburrahman | 0:122b5c3cbf4d | 178 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 179 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 180 | } |
habiburrahman | 0:122b5c3cbf4d | 181 | else{ |
habiburrahman | 0:122b5c3cbf4d | 182 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 183 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 184 | } |
habiburrahman | 0:122b5c3cbf4d | 185 | |
habiburrahman | 0:122b5c3cbf4d | 186 | } |
habiburrahman | 0:122b5c3cbf4d | 187 | } |
habiburrahman | 1:4f356fb65677 | 188 | |
habiburrahman | 1:4f356fb65677 | 189 | |
habiburrahman | 1:4f356fb65677 | 190 | ///////////////////////////////////////////////////////////////////// |
habiburrahman | 1:4f356fb65677 | 191 | //ACCELEROMETER TEST |
habiburrahman | 1:4f356fb65677 | 192 | |
habiburrahman | 1:4f356fb65677 | 193 | #include "ADXL345.h" |
habiburrahman | 1:4f356fb65677 | 194 | |
habiburrahman | 1:4f356fb65677 | 195 | ADXL345 accelerometer(D11,D12,D13,D10); |
habiburrahman | 1:4f356fb65677 | 196 | Serial pc(USBTX, USBRX); |
habiburrahman | 1:4f356fb65677 | 197 | |
habiburrahman | 1:4f356fb65677 | 198 | int main() { |
habiburrahman | 1:4f356fb65677 | 199 | |
habiburrahman | 1:4f356fb65677 | 200 | int readings[3] = {0, 0, 0}; |
habiburrahman | 1:4f356fb65677 | 201 | |
habiburrahman | 1:4f356fb65677 | 202 | pc.printf("Starting ADXL345 test...\n"); |
habiburrahman | 1:4f356fb65677 | 203 | pc.printf("Device ID is: 0x%02x\n", accelerometer.getDevId()); |
habiburrahman | 1:4f356fb65677 | 204 | |
habiburrahman | 1:4f356fb65677 | 205 | //Go into standby mode to configure the device. |
habiburrahman | 1:4f356fb65677 | 206 | accelerometer.setPowerControl(0x00); |
habiburrahman | 1:4f356fb65677 | 207 | |
habiburrahman | 1:4f356fb65677 | 208 | //Full resolution, +/-16g, 4mg/LSB. |
habiburrahman | 1:4f356fb65677 | 209 | accelerometer.setDataFormatControl(0x0B); |
habiburrahman | 1:4f356fb65677 | 210 | |
habiburrahman | 1:4f356fb65677 | 211 | //3.2kHz data rate. |
habiburrahman | 1:4f356fb65677 | 212 | accelerometer.setDataRate(ADXL345_3200HZ); |
habiburrahman | 1:4f356fb65677 | 213 | |
habiburrahman | 1:4f356fb65677 | 214 | //Measurement mode. |
habiburrahman | 1:4f356fb65677 | 215 | accelerometer.setPowerControl(0x08); |
habiburrahman | 1:4f356fb65677 | 216 | |
habiburrahman | 1:4f356fb65677 | 217 | while (1) { |
habiburrahman | 1:4f356fb65677 | 218 | |
habiburrahman | 1:4f356fb65677 | 219 | wait(0.1); |
habiburrahman | 1:4f356fb65677 | 220 | |
habiburrahman | 1:4f356fb65677 | 221 | accelerometer.getOutput(readings); |
habiburrahman | 1:4f356fb65677 | 222 | |
habiburrahman | 1:4f356fb65677 | 223 | //13-bit, sign extended values. |
habiburrahman | 1:4f356fb65677 | 224 | pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]); |
habiburrahman | 1:4f356fb65677 | 225 | |
habiburrahman | 1:4f356fb65677 | 226 | } |
habiburrahman | 1:4f356fb65677 | 227 | |
habiburrahman | 1:4f356fb65677 | 228 | } |
habiburrahman | 1:4f356fb65677 | 229 | |
habiburrahman | 1:4f356fb65677 | 230 | |
habiburrahman | 1:4f356fb65677 | 231 | |
habiburrahman | 1:4f356fb65677 | 232 | |
habiburrahman | 0:122b5c3cbf4d | 233 |