コード例 #1
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
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();
}
コード例 #2
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
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 );
}
コード例 #3
0
ファイル: main.c プロジェクト: amber951/freertos-stm32
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);

}
コード例 #4
0
ファイル: draw_graph.c プロジェクト: pyth7853/freertos-stm32
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);

}
コード例 #5
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
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);

}
コード例 #6
0
ファイル: s640k1.c プロジェクト: Ksangho/stm32bootloader
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++;
  }
}
コード例 #7
0
ファイル: s640k1.c プロジェクト: Ksangho/stm32bootloader
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);
  
}
コード例 #8
0
ファイル: gui.c プロジェクト: WeSpeakEnglish/STM32PLC
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;
        }
      } 
    }
   }
  }  
 }
コード例 #9
0
ファイル: main.c プロジェクト: iGaryGu/Painter
/**
  * @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
    {
    }
  }
}
コード例 #10
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
void ui_draw_pos(int pos){
    LCD_SetColors(LCD_COLOR_BLUE2, LCD_COLOR_BLUE2);
    LCD_DrawFullCircle(30+pos, 200, 5);
}
コード例 #11
0
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;
       }
       
     }
    }
  }
}