Shish

Dependencies:   mbed USBDevice GLCD

Revision:
0:9ae27a35a771
Child:
1:a32ccf18194d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 06 17:35:37 2021 +0000
@@ -0,0 +1,239 @@
+#include "mbed.h"
+#include "GLCD.h"
+#include "GLCD.c"
+#include "AsciiLib.c"
+#include "HzLib.c"
+#include "USBSerial.h"
+#include "TouchPanel.h"
+#include <vector>
+
+//FUNZIONI GIORGIO
+void readtouch();
+
+//VARIABILI GIORGIO
+Coordinate tocco;
+int x,y,k,avg_x,avg_y,ready;
+
+int startGame=0;
+int isWritten=0;
+int inferenceStarted=0;
+uint8_t drawnPoints[28][28];
+int threshold = 32;
+USBSerial serial;
+
+/*Buttons*/
+typedef enum {space,infer,del} button;
+
+/* Private function prototypes -----------------------------------------------*/                
+void spaceText(int x1, int x2, int yText, int spessore, uint16_t color);
+void clearPad(void);
+void showCompression(void);
+void clearBar(void);
+void drawButtons(void);
+void drawButton(button b, uint16_t color);
+void start(void);
+void drawTriangle(int posX, int posY, int lungMax);
+
+int main() {
+    LCD_Initialization();
+    TP_Init();
+    LCD_Clear(Blue2);
+    
+    clearBar();
+    drawButtons();
+    start();
+    
+    while(1){
+        readtouch();
+        serial.printf("%u %u\n", tocco.x, tocco.y);
+        wait(1);
+    }
+}
+
+/*******************************************************************************
+* Function Name  : spaceText
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void spaceText(int x1, int x2, int yText, int spessore, uint16_t color){ //Spazio di un unico colore
+    int i;
+    for(i=spessore;i>0;i--){
+        LCD_DrawLine(x1,yText-i,x2,yText-i,color);
+    }
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : clearPad
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void clearPad(){
+    int i,j;
+    for(i=0;i<224;i++){
+        LCD_DrawLine(8,52+i,232,52+i,White);
+    }
+    for(i=0;i<28;i++) //also clear the matrix
+        for(j=0;j<28;j++)
+            drawnPoints[i][j]=0;
+    
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : showCompression
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void showCompression(){
+    int i,j;
+    for(i=0;i<224;i++){ //clean the pad
+        LCD_DrawLine(8,52+i,232,52+i,White);
+    }
+    for(i=0;i<28;i++)
+        for(j=0;j<28;j++)
+            if(drawnPoints[i][j]==1)
+                LCD_SetPoint(i+110,j+150,Black);  
+    
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : clearBar
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void clearBar(){
+    int i;
+    for(i=0;i<32;i++){
+        LCD_DrawLine(8,10+i,232,10+i,White);
+    }
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : drawButton
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void drawButton(button b, uint16_t color){
+    int i;
+    switch(b){
+        case space: //Space Button
+            spaceText(8,87,291,8,color); 
+            GUI_Text(8, 291, (uint8_t *) "  Space   ", Blue, color,1);
+            spaceText(8,87,291+16+8,8,color);
+            break;
+        case infer: //Infer Button
+            for(i=0;i<32;i++){ 
+                LCD_DrawLine(100,283+i,139,283+i,color);
+            }
+            drawTriangle(112,289,10);
+            break;
+        case del: //Delete Button
+            spaceText(153,232,291,8,color); 
+            GUI_Text(153, 291, (uint8_t *) "  Delete  ", Blue, color,1);
+            spaceText(153,232,291+16+8,8,color);
+            break;
+        default:
+            break;
+    }
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : drawButtons
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void drawButtons(){
+    drawButton(space,White);
+    drawButton(infer,White);
+    drawButton(del,White);
+    return;
+}
+
+/*******************************************************************************
+* Function Name  : drawTriangle
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void drawTriangle(int posX, int posY, int lungMax){
+    int i;
+    uint16_t color=Green2;
+    for(i=0;i<lungMax;i++){ //Direction EAST
+            LCD_DrawLine(posX+5,posY+i+1,posX+5+i,posY+i+1,color);
+    }
+    for(i=0;i<lungMax-1;i++){
+            LCD_DrawLine(posX+5,posY+lungMax+i+1,posX+5+(lungMax-2)-i,posY+lungMax+i+1,color);
+    }
+}
+
+/*******************************************************************************
+* Function Name  : start
+* Description    : 
+* Input          : None
+* Output         : None
+* Return         : None
+* Attention      : None
+*******************************************************************************/
+void start(){
+    //disable_timer(0);
+    //reset_timer(0);
+    
+    clearPad();
+    GUI_Text(22, 90, (uint8_t *) "Touch to", Black, White, 3);
+    GUI_Text(32, 135, (uint8_t *)" start", Black, White, 3);
+    GUI_Text(28, 185, (uint8_t *) "writing!", Black, White, 3);
+    
+    startGame=0;
+    isWritten=0;
+    inferenceStarted=0;
+    //enable_timer(0);
+    
+    return;
+}
+
+// FUNZIONI GIORGIO
+
+void readtouch(){
+    if(Read_X()!=4095){
+        wait(0.1);
+        for(k=0; k<400;k++){
+            x=Read_Y();
+            y=Read_X();
+            x=(x-300)*240/3900;
+            y=(y-220)*320/3800;
+            avg_x+=x;
+            avg_y+=y;
+        }
+        avg_x=avg_x/400;
+        avg_y=avg_y/400;
+        tocco.x=avg_x+10;
+        tocco.y=avg_y+19;
+        ready=1;
+    }
+    else
+        ready=0;
+}
\ No newline at end of file