void ui_draw_beat(int color, int delay_time) { if(mode != METRONOME_MODE){ return; } switch(color){ case GREEN: LCD_SetColors(LCD_COLOR_GREEN, LCD_COLOR_GREEN); break; case RED: LCD_SetColors(LCD_COLOR_RED, LCD_COLOR_RED); break; } LCD_DrawFullCircle(205, 40, 15); ui_start_metronome(); SLEEP(delay_time); // clear the circle LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_WHITE); LCD_DrawFullCircle(205, 40, 15); ui_start_metronome(); }
void ui_draw_button() { LCD_SetColors(LCD_COLOR_BLACK , LCD_COLOR_BLACK); LCD_DrawFullRect(70 , 55 , 40, 40); LCD_DrawFullRect(70 + 60, 55 , 40, 40); LCD_DrawFullRect(70 , 55 + 75, 40, 40); LCD_DrawFullRect(70 + 60, 55 + 75, 40, 40); LCD_SetColors(LCD_COLOR_YELLOW , LCD_COLOR_YELLOW); //BPM minus LCD_DrawFullRect(70 + 5 , 55 + 15, 30, 10); //BPM plus LCD_DrawFullRect(70 + 65, 55 + 15, 30, 10); LCD_DrawFullRect(70 + 75, 55 + 5 , 10, 30); //BEAT minus LCD_DrawFullRect(70 + 5 , 55 + 90, 30, 10); //BEAT plus LCD_DrawFullRect(70 + 65, 55 + 90, 30, 10); LCD_DrawFullRect(70 + 75, 55 + 80, 10, 30); //start/stop button LCD_SetColors(LCD_COLOR_BLUE, LCD_COLOR_BLUE); LCD_DrawFullCircle(40, 280, 20); LCD_SetColors(LCD_COLOR_CYAN, LCD_COLOR_CYAN); LCD_DrawFullCircle(40, 280,15 ); }
static void qq(voud) { uint8_t tmp[6] = {0}; int16_t a[3] = {0}; uint8_t tmpreg = 0; L3GD20_Read(&tmpreg, L3GD20_CTRL_REG4_ADDR, 1); L3GD20_Read(tmp, L3GD20_OUT_X_L_ADDR, 6); /* check in the control register 4 the data alignment (Big Endian or Little Endian)*/ if (!(tmpreg & 0x40)) { for (int i = 0; i < 3; i++) a[i] = (int16_t)(((uint16_t)tmp[2 * i + 1] << 8) | (uint16_t)tmp[2 * i]); } else { for (int i = 0; i < 3; i++) a[i] = (int16_t)(((uint16_t)tmp[2 * i] << 8) | (uint16_t)tmp[2 * i + 1]); } for (int i = 0; i < 3; i++){ axes[i] = a[i] / 114.285f; // axes[i] += a[i]*delta / 114.285f; } LCD_DrawFullCircle(100,100+axes[2],20); }
static void DrawEachTrafficLight(struct graph_info *graph, int index, int state) { uint16_t color; color = ((index % TRAFFIC_LIGHT_NUM) == state) ? traffic_light_color[state] : graph->hd.color; LCD_SetTextColor(color); LCD_DrawFullCircle(graph->x, graph->y, graph->wl.radius); }
void ui_draw_flower() { if(easter_egg % 2 == 1){ LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_YELLOW); }else{ LCD_SetColors(LCD_COLOR_RED, LCD_COLOR_RED); } LCD_DrawFullCircle(40, 280-25, 5); LCD_DrawFullCircle(40, 280+25, 5); LCD_DrawFullCircle(40-25, 280, 5); LCD_DrawFullCircle(40+25, 280, 5); if(easter_egg % 2 == 1){ LCD_SetColors(LCD_COLOR_RED, LCD_COLOR_RED); }else{ LCD_SetColors(LCD_COLOR_YELLOW, LCD_COLOR_YELLOW); } LCD_DrawFullCircle(40+15, 280-22, 5); LCD_DrawFullCircle(40-15, 280-22, 5); LCD_DrawFullCircle(40+15, 280+22, 5); LCD_DrawFullCircle(40-15, 280+22, 5); }
void S640K1_measure_levels(unsigned char n) { unsigned char i=0; rt_int16_t *p,temp=2000; if((n==17)||(n==18)) { n-=1; } while(1) { Set_Scan_Channel(S640K1_levels[n].contacts[i].channel); rt_thread_delay(5); ADC_R_Restart(); ADC_R_DMA_Config(); while(!DMA_GetFlagStatus(ADC_R_DMA_Flag)); p=Get_ADC_R_Value(); if((*p)>1000) { temp=*p; S640K1_levels[n].contacts[i].R[0]=' '; S640K1_levels[n].contacts[i].R[1]='_'; S640K1_levels[n].contacts[i].R[2]='/'; S640K1_levels[n].contacts[i].R[3]='_'; } else if((*p)<=1000) { temp=(u16)((*p)*(S640K1_levels[n].contacts[i].div)); S640K1_levels[n].contacts[i].R[0]=temp/1000+'0'; S640K1_levels[n].contacts[i].R[1]=(temp%1000)/100+'0'; S640K1_levels[n].contacts[i].R[2]=(temp%100)/10+'0'; S640K1_levels[n].contacts[i].R[3]=temp%10+'0'; } S640K1_levels[n].contacts[i].R[4]='\0'; if(temp<R_ref) { LCD_DrawFullCircle(S640K1_levels[n].contacts[i].point_coordinate[0],S640K1_levels[n].contacts[i].point_coordinate[1],5,Green,0x01); } else { LCD_DrawFullCircle(S640K1_levels[n].contacts[i].point_coordinate[0],S640K1_levels[n].contacts[i].point_coordinate[1],5,Red,0x01); } LCD_str(S640K1_levels[n].contacts[i].value_coordinate[0], S640K1_levels[n].contacts[i].value_coordinate[1],S640K1_levels[n].contacts[i].R,32,Blue2, Black); if(S640K1_levels[n].contacts[i].flag_last==1) { ADC_V_Restart(); ADC_V_DMA_Config(); while(!DMA_GetFlagStatus(ADC_V_DMA_Flag)); p=Get_ADC_V_Value();*p=6*(*p); S640K1_levels[n].level_V[0]=*p/10000+'0'; if(S640K1_levels[n].level_V[0]=='0') { S640K1_levels[n].level_V[0]=' '; } S640K1_levels[n].level_V[1]=(*p%10000)/1000+'0'; S640K1_levels[n].level_V[2]='.'; S640K1_levels[n].level_V[3]=(*p%1000)/100+'0'; S640K1_levels[n].level_V[4]=(*p%100)/10+'0'; S640K1_levels[n].level_V[5]='V'; S640K1_levels[n].level_V[6]='\0'; LCD_str(671,304,S640K1_levels[n].level_V,32,Blue,Black); break; } i++; } }
void draw_s640k1(void) { LCD_Clear(Black); LCD_str(267,0,"测试型号:S640K1",32,Blue,Black); // LCD_str(0,32,"换向手柄",32,Blue,Black); LCD_str(128,224,"后零前制",32,Blue,Black); LCD_str(0,256,"402(403)",32,Blue,Black); LCD_str(0,288,"404(405)",32,Blue,Black); LCD_str(0,320,"405(404)",32,Blue,Black); LCD_str(0,352,"407(407)",32,Blue,Black); LCD_str(0,384,"406(406)",32,Blue,Black); LCD_str(0,416,"409(410)",32,Blue,Black); LCD_str(0,447,"410(409)",32,Blue,Black); // LCD_str(256,64,"401(401)",32,Blue,Black); // LCD_str(256,96,"401(401)",32,Blue,Black); // LCD_str(256,128,"401(401)",32,Blue,Black); LCD_str(256,352,"401(401)",32,Blue,Black); // LCD_str(256,192,"401(401)",32,Blue,Black); // LCD_str(256,224,"401(401)",32,Blue,Black); // LCD_str(256,256,"401(401)",32,Blue,Black); u8 n=0; for(n=0;n<7;n++) { LCD_DrawUniLine( 128, (272+32*n), 256, (272+32*n), Cyan); } for(n=0;n<4;n++) { LCD_DrawUniLine( (144+32*n), 256, (144+32*n), 479, Cyan); } LCD_DrawUniLine( 256, 272, 256, 464, Green); // LCD_str(384,64,"控制手柄",32,Blue,Black); LCD_str(176,32,"制动",32,Blue,Black); LCD_str(352,32,"零",32,Blue,Black); LCD_str(492,32,"牵引",32,Blue,Black); LCD_str(136,64,"1",32,Blue,Black); LCD_str(168,64,"3",32,Blue,Black); LCD_str(200,64,"6",32,Blue,Black); LCD_str(232,64,"9",32,Blue,Black); LCD_str(256,64,"12",32,Blue,Black); LCD_str(288,64,"15",32,Blue,Black); LCD_str(320,64,"17",32,Blue,Black); LCD_str(360,64,"0",32,Blue,Black); LCD_str(392,64,"*",32,Blue,Black); LCD_str(424,64,"3",32,Blue,Black); LCD_str(456,64,"6",32,Blue,Black); LCD_str(488,64,"9",32,Blue,Black); LCD_str(512,64,"12",32,Blue,Black); LCD_str(544,64,"15",32,Blue,Black); LCD_str(576,64,"17",32,Blue,Black); LCD_str(0,96,"422(415)",32,Blue,Black); LCD_str(0,160,"402(403)",32,Blue,Black); LCD_str(608,96,"414(416)",32,Blue,Black); LCD_str(608,144,"412(412)",32,Blue,Black); LCD_str(608,192,"413(413)",32,Blue,Black); for(n=0;n<4;n++) { LCD_DrawUniLine( 128, (112+32*n), 608, (112+32*n), Cyan); } for(n=0;n<15;n++) { LCD_DrawUniLine( (144+32*n), 96, (144+32*n), 224, Cyan); } LCD_DrawUniLine( 608, 144, 608, 176, Green); LCD_DrawUniLine( 128, 144, 128, 272, Green); for(n=0;n<43;n++) { LCD_DrawFullCircle( S640K1_POINTS[n][0], S640K1_POINTS[n][1], 5, Blue2, 1); } for(n=0;n<21;n++) { LCD_DrawFullRect( S640K1_TP[n][0], S640K1_TP[n][1], S640K1_TP[n][2], S640K1_TP[n][3], Blue2, 0); } //LCD_str(671,352,"保存结果",32,Blue2,Black); LCD_str(671,352,"自动模式",32,Blue2,Black); LCD_str(671,432,"退出实验",32,Red,Black); LCD_str(671,256,"级位电压",32,Blue,Black); }
void GUI_Release(){ // create GUI static int i, j; //indexes //if z-index == 0 eq hide for(j = 1; j < MAX_Z_INDEX; j++ ){ for(i = 0; i < MAX_OBJECTS_Q; i++){ if(GUI_Objects[i].z_index == j){ if(GUI_Objects[i].existance){ LCD_SetColorPixel(GUI_Objects[i].color); // set the font, color of font and the color of line switch(GUI_Objects[i].type){ case LINE_TYPE: LCD_DrawLine(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2], GUI_Objects[i].params[3]); break; case VERTICAL_LINE_TYPE: break; case HORIZONTAL_LINE_TYPE: DrawFastLineHorizontal(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2]); break; case POLYGON_TYPE: break; case TEXT_STRING: LCD_InitParams(0, GUI_Objects[i].params[6], GUI_Objects[i].color, (sFONT*) GUI_Objects[i].params[5]); LCD_DisplayStringAt(GUI_Objects[i].params[0], GUI_Objects[i].params[1], (uint8_t*)GUI_Objects[i].params[2], (Text_AlignModeTypdef) GUI_Objects[i].params[3], (uint8_t)GUI_Objects[i].params[4]); break; case CIRCLE_TYPE: LCD_DrawCircle(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2]); break; case FILLED_CIRCLE_TYPE: LCD_DrawFullCircle(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2]); break; case FILLED_RECT_TYPE: LCD_FillRect(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2], GUI_Objects[i].params[3]); break; case RECT_TYPE: LCD_DrawRect((uint16_t)GUI_Objects[i].params[0], (uint16_t)GUI_Objects[i].params[1], (uint16_t)GUI_Objects[i].params[2], (uint16_t)GUI_Objects[i].params[3]); break; case IMAGE_FAST_FILL: LCD_Fill_Image((ImageInfo *)GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2]); break; case IMAGE_WITH_TRANSP: LCD_Fill_ImageTRANSP((ImageInfo *)GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2]); break; case FILLED_TRIANGLE: LCD_FillTriangle(GUI_Objects[i].params[0], GUI_Objects[i].params[1], GUI_Objects[i].params[2], GUI_Objects[i].params[3], GUI_Objects[i].params[4], GUI_Objects[i].params[5]); break; case FILLED_POLY: LCD_FillPolygon((pPoint)GUI_Objects[i].params[0], (uint16_t)GUI_Objects[i].params[1]); break; case POLY_TYPE: LCD_DrawPolygon((pPoint)GUI_Objects[i].params[0], (uint16_t)GUI_Objects[i].params[1]); break; case ROTATING_FILLED_POLY_TYPE: StorePoly((pPoint)(GUI_Objects[i].params[0]),(uint16_t)(GUI_Objects[i].params[1])); RotatePoly((pPoint)(GUI_Objects[i].params[0]), (uint16_t)(GUI_Objects[i].params[1]),(pPoint)GUI_Objects[i].params[2], GUI_Objects[i].params[3]); LCD_FillPolygon((pPoint)GUI_Objects[i].params[0], (uint16_t)GUI_Objects[i].params[1]); RestorePoly((pPoint)(GUI_Objects[i].params[0]),(uint16_t)(GUI_Objects[i].params[1])); break; } } } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint16_t linenum = 0; static TP_STATE* TP_State; /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f429_439xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f4xx.c file */ /* LCD initialization */ LCD_Init(); /* LCD Layer initialization */ LCD_LayerInit(); /* Enable the LTDC */ LTDC_Cmd(ENABLE); /* Set LCD foreground layer */ LCD_SetLayer(LCD_FOREGROUND_LAYER); /* Touch Panel configuration */ TP_Config(); while (1) { TP_State = IOE_TP_GetState(); if((TP_State->TouchDetected) && ((TP_State->Y < 245) && (TP_State->Y >= 3))) { if((TP_State->X >= 237) || (TP_State->X < 3)) {} else { LCD_DrawFullCircle(TP_State->X, TP_State->Y, 3); } } else if ((TP_State->TouchDetected) && (TP_State->Y <= 280) && (TP_State->Y >= 250) && (TP_State->X >= 5) && (TP_State->X <= 35)) { LCD_SetTextColor(LCD_COLOR_BLUE2); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 280) && (TP_State->Y >= 250) && (TP_State->X >= 40) && (TP_State->X <= 70)) { LCD_SetTextColor(LCD_COLOR_CYAN); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 280) && (TP_State->Y >= 250) && (TP_State->X >= 75) && (TP_State->X <= 105)) { LCD_SetTextColor(LCD_COLOR_YELLOW); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 288) && (TP_State->X >= 5) && (TP_State->X <= 35)) { LCD_SetTextColor(LCD_COLOR_RED); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 288) && (TP_State->X >= 40) && (TP_State->X <= 70)) { LCD_SetTextColor(LCD_COLOR_BLUE); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 288) && (TP_State->X >= 75) && (TP_State->X <= 105)) { LCD_SetTextColor(LCD_COLOR_GREEN); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 288) && (TP_State->X >= 110) && (TP_State->X <= 140)) { LCD_SetTextColor(LCD_COLOR_BLACK); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 288) && (TP_State->X >= 145) && (TP_State->X <= 175)) { LCD_SetTextColor(LCD_COLOR_MAGENTA); } else if ((TP_State->TouchDetected) && (TP_State->Y <= 318) && (TP_State->Y >= 270) && (TP_State->X >= 180) && (TP_State->X <= 230)) { LCD_SetFont(&Font8x8); for(linenum = 0; linenum < 31; linenum++) { LCD_ClearLine(LINE(linenum)); } } else { } } }
void ui_draw_pos(int pos){ LCD_SetColors(LCD_COLOR_BLUE2, LCD_COLOR_BLUE2); LCD_DrawFullCircle(30+pos, 200, 5); }
void TIM3_IRQHandler(void) { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0) { if(tp_flag<4) { tp_x[tp_flag]=TP_MeasureX(); tp_y[tp_flag]=TP_MeasureY(); // printf("%d\t%d\r\n",tp_x[tp_flag],tp_y[tp_flag]); if((-10<(tp_x[tp_flag]-tp_x[tp_flag-1])<10)&&(-10<(tp_y[tp_flag]-tp_y[tp_flag-1])<10)) {tp_flag+=1;} else {tp_flag=0;} } else { tp_flag=0; TIM_Cmd(TIM3, DISABLE); u16 j=0,i=0; uint16_t temp=0; for(j=0;j<=4;j++) { for (i=0;i<4-j;i++) { if (tp_x[i]>tp_x[i+1]) { temp=tp_x[i]; tp_x[i]=tp_x[i+1]; tp_x[i+1]=temp; } } } for(j=0;j<=4;j++) { for (i=0;i<4-j;i++) { if (tp_y[i]>tp_y[i+1]) { temp=tp_y[i]; tp_y[i]=tp_y[i+1]; tp_y[i+1]=temp; } } } x=(tp_x[1]+tp_x[2]+tp_x[3])/3; y=(tp_y[1]+tp_y[2]+tp_y[3])/3; x=800-x; //y=480-y; printf("%d\t%d\r\n",x,y); if((x<800)&&(y<479)) { LCD_DrawFullCircle(x,y,5,0xaaaa,1); if(x>24&&x<320&&y>320&&y<424) { APP_PROGRAM_FLAG=1; } if(x>480&&x<776&&y>320&&y<424) { Jump_To_App_flag=1; } } } } }