TFT_Touch_Menu_Encoder

Dependencies:   mbed TouchScreen_kbv_mbed MCUFRIEND_kbv_R299 GLUE_STUFF_kbv EncoderAli ADA_GFX_kbv_R1107

Revision:
5:64202050310c
Child:
6:1be71a3e54fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TFT_MENU.cpp	Mon Apr 18 18:07:23 2022 +0000
@@ -0,0 +1,239 @@
+
+
+//******************************Henrique**************************************//
+
+//********************Programa Exemplo  Menu com botões***********************//
+
+
+//***********************Display TFT-ILI9341 Toutch***************************//
+
+
+//*****************************Biblioteca*************************************//
+
+
+#include "mbed.h"
+#include "Arduino.h"
+#include <MCUFRIEND_kbv.h>
+MCUFRIEND_kbv tft;
+#include "TouchScreen_kbv_mbed.h"
+#include "Encoder.h"
+
+//************************Configuração do Display*****************************//
+
+//****************************************************************************//
+
+const int TS_LEFT=121,TS_RT=922,TS_TOP=82,TS_BOT=890;
+const PinName XP = D8, YP = A3, XM = A2, YM = D9;   //next common configuration
+DigitalInOut YPout(YP);
+DigitalInOut XMout(XM);
+
+
+long map(long x, long in_min, long in_max, long out_min, long out_max)
+{
+   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+}
+
+TouchScreen_kbv ts = TouchScreen_kbv(XP, YP, XM, YM, 300);
+TSPoint_kbv tp;
+
+// Valores para detectar a pressão do toque
+
+#define MINPRESSURE 10
+#define MAXPRESSURE 1000
+
+//****************************************************************************//
+
+//****************************************************************************//
+
+//***********************Orientação Display***********************************//
+
+uint8_t Orientation = 0;
+
+//****************************************************************************//
+
+//****************************************************************************//
+
+
+bool botao_1 = 0;
+bool botao_2 = 0;
+bool botao_3 = 0;
+int pulse;
+bool sw;
+
+//***********************Tabela de Cores**************************************//
+
+#define BLACK   0x0000
+#define BLUE    0x001F
+#define RED     0xF800
+#define GREEN   0x07E0
+#define CYAN    0x07FF
+#define MAGENTA 0xF81F
+#define YELLOW  0xFFE0
+#define WHITE   0xFFFF
+
+//****************************************************************************//
+
+//****************************************************************************//
+
+
+void draw()
+
+{
+
+   tft.drawRoundRect(5, 15, 154, 50, 5, WHITE);
+   tft.setTextColor(GREEN);
+   tft.setTextSize(3);
+   tft.setCursor(15, 30);
+   tft.println("Button 1");
+
+   tft.drawRoundRect(5, 70, 154, 50, 5, WHITE);
+   tft.setTextColor(GREEN);
+   tft.setTextSize(3);
+   tft.setCursor(15,85);
+   tft.println("Button 2");
+
+   tft.drawRoundRect(5, 125, 154, 50, 5, WHITE);
+   tft.setTextColor(GREEN);
+   tft.setTextSize(3);
+   tft.setCursor(15,140);
+   tft.println("Button 3");
+
+}
+
+
+void show_tft(void)
+{
+    
+    EncoderAli Enc(PB_13,PB_14,PB_15); //DT, CLK, SW
+    Enc.setRange(1,16);
+
+
+   tft.setTextSize(2);
+
+
+   tft.setTextColor(MAGENTA,BLUE);
+   
+   while (1) {
+
+    pulse = Enc.getState();
+    sw = Enc.getButtonState();
+   printf("\n\r PULSOS: %d; ",Enc.getState()); 
+       tp = ts.getPoint();
+       YPout.output();
+       XMout.output();
+
+       if (tp.z < MINPRESSURE && tp.z > MAXPRESSURE)
+
+           tp.x = tft.width() - (map(tp.x, TS_RT, TS_LEFT, tft.width(), 0));
+           tp.y = tft.height() - (map(tp.y, TS_BOT, TS_TOP, tft.height(), 0));
+
+
+
+       if (pulse>=2 && pulse<=5) {
+           
+           if(sw==true) {
+
+               tft.fillRoundRect(5, 15, 154, 50, 5, RED);
+               tft.setCursor(15, 30);
+               tft.println("Button 1");
+               //tft.fillScreen(BLUE);
+              // sw =!sw;
+           }
+
+           else {
+
+               tft.fillRoundRect(5, 15, 154, 50, 5, BLACK);
+               tft.drawRoundRect(5, 15, 154, 50, 5, WHITE);
+               tft.setTextColor(GREEN);
+               tft.setTextSize(3);
+               tft.setCursor(15, 30);
+               tft.println("Button 1");
+               //tft.fillScreen(BLACK);
+
+               //sw =!sw;
+
+           }
+       }
+
+
+       if (pulse>=6 && pulse<=10) {
+           
+           if(sw==true) {
+
+               tft.fillRoundRect(5, 70, 154, 50, 5, BLUE);
+               tft.setTextColor(GREEN);
+               tft.setTextSize(3);
+               tft.setCursor(15, 85);
+               tft.println("Button 2");
+               botao_2 =!botao_2;
+           }
+
+           else {
+
+
+               tft.fillRoundRect(5, 70, 154, 50, 5, BLACK);
+               tft.drawRoundRect(5, 70, 154, 50, 5, WHITE);
+               tft.setTextColor(GREEN);
+               tft.setTextSize(3);
+               tft.setCursor(15,85);
+               tft.println("Button 2");
+               botao_2 =!botao_2;
+           }
+       }
+
+       if (pulse>11 && pulse<=14) {
+           
+           if(sw==true) {
+
+               tft.fillRoundRect(5, 125, 154, 50, 5, MAGENTA);
+               tft.setTextColor(GREEN);
+               tft.setTextSize(3);
+               tft.setCursor(15, 140);
+               tft.println("Button 3");
+               botao_3 =!botao_3;
+           }
+
+           else {
+               
+               tft.fillRoundRect(5, 125, 154, 50, 5, BLACK);
+               tft.drawRoundRect(5, 125, 154, 50, 5, WHITE);
+               tft.setTextColor(GREEN);
+               tft.setTextSize(3);
+               tft.setCursor(15,140);
+               tft.println("Button 3");
+               botao_3 =!botao_3;
+           }
+       }
+       
+   }
+}
+
+
+
+
+
+void setup(void)
+{
+    
+
+
+   tft.reset();
+   tft.begin();
+   tft.setRotation(Orientation);
+   tft.fillScreen(BLACK);
+   draw();
+   show_tft();
+
+
+   delay(1000);
+}
+
+void loop()
+{
+
+
+}
+
+//****************************************************************************//
+
+//****************************************************************************//
\ No newline at end of file