Shish
Dependencies: mbed USBDevice GLCD
Diff: main.cpp
- 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