a demo of GUI on DISCOF7 consisting of a few buttons and feeders

Dependencies:   ADXL345 BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

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?

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