コード例 #1
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 );
}
コード例 #2
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();
}
コード例 #3
0
/*------------------------------------------------------------------------------------*/
void DrawIcon(IconName _IconName, IconStatus _Status) {
    LCD_SetColors(LCD_COLOR_BLACK, LCD_COLOR_WHITE);
    switch (_IconName) {
    case Icon_TopBar_Clock:
        LCD_DrawChar(3, (20-Image_TopBar_Clock.height)/2, (ptImage)&Image_TopBar_Clock);
        break;
    case Icon_TopBar_Battery:
        LCD_DrawBMP(297, (20-Image_TopBar_Battery.height)/2, (ptImage)&Image_TopBar_Battery, 0);
        break;
    case Icon_TopBar_FlyTime:
        LCD_DrawBMP(142, (20-Image_TopBar_FlyTime.height)/2, (ptImage)&Image_TopBar_FlyTime, 0);
        break;
    case Icon_TopBar_Temper:
        LCD_DrawBMP(214, (20-Image_TopBar_Temper.height)/2, (ptImage)&Image_TopBar_Temper, 0);
        break;
    case Icon_TopBar_DesatTime:
        LCD_DrawBMP(74, (20-Image_TopBar_DesatTime.height)/2, (ptImage)&Image_TopBar_DesatTime, 0);
        break;
    case Icon_BottomBar_ArrowUp:
        LCD_DrawBMP(112, ((20-Image_BottomBar_ArrowUp.height)/2)+220, (ptImage)&Image_BottomBar_ArrowUp, 0);
        break;
    case Icon_BottomBar_ArrowDown:
        LCD_DrawBMP(185, ((20-Image_BottomBar_ArrowUp.height)/2)+220, (ptImage)&Image_BottomBar_ArrowUp, 2);
        break;
    case Icon_BottomBar_ArrowLeft:
        LCD_DrawBMP(40, ((20- Image_BottomBar_ArrowLeft.height)/2)+220, (ptImage)&Image_BottomBar_ArrowLeft, 0);
        break;
    case Icon_BottomBar_Select:
        LCD_DrawBMP(258, ((20-Image_BottomBar_Select.height)/2)+220, (ptImage)&Image_BottomBar_Select, 0);
        break;
    case Icon_HomeMenu_GoDive:
        switch(_Status) {
        case Select:
            LCD_SetColors(Black, White);
            LCD_FillRect(26, 30, 57, 57, Blue);
            break;
        default:
            LCD_SetColors(White, Black);
            LCD_FillRect(26, 30, 57, 57, Black);
            break;
        }
        LCD_DrawChar((26+((57-Image_HomeMenu_GoDive.width)/2)), 34,(ptImage)&Image_HomeMenu_GoDive);
        break;
    default:
        LCD_FillRect(0, 120, 120, 3, LCD_COLOR_RED);//Error notification
        break;
    }
}
コード例 #4
0
ファイル: main.c プロジェクト: tim37021/stm32f429-r3d
static void init(void)
{
	STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);

	r3dfb_init();
	LCD_SetColors(0x0000, 0xffff);
	LCD_SetFont(&Font8x8);

	itoa(meshes[mesh].count / 3, info_str, 10);
	strcat(info_str, " tris");

	r3d_viewport(1, 1, R3DFB_PIXEL_WIDTH - 1, R3DFB_PIXEL_HEIGHT - 1);
	r3d_backface_culling = R3D_ENABLE;
	r3d_primitive_winding = windings[mesh];

	projection = mat4_perspective(60.0f, (float)R3DFB_PIXEL_WIDTH / (float)R3DFB_PIXEL_HEIGHT, 0.5f, 5.0f);
	view = mat4_lookat(vec3(0.0f, 0.25f, 1.5f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 1.0f, 0.0f));

	L3GD20_InitTypeDef L3GD20_InitStructure;
	L3GD20_InitStructure.Power_Mode = L3GD20_MODE_ACTIVE;
	L3GD20_InitStructure.Output_DataRate = L3GD20_OUTPUT_DATARATE_1;
	L3GD20_InitStructure.Axes_Enable = L3GD20_AXES_ENABLE;
	L3GD20_InitStructure.Band_Width = L3GD20_BANDWIDTH_4;
	L3GD20_InitStructure.BlockData_Update = L3GD20_BlockDataUpdate_Continous;
	L3GD20_InitStructure.Endianness = L3GD20_BLE_LSB;
	L3GD20_InitStructure.Full_Scale = L3GD20_FULLSCALE_250;
	L3GD20_Init(&L3GD20_InitStructure);

	L3GD20_FilterConfigTypeDef L3GD20_FilterStructure;
	L3GD20_FilterStructure.HighPassFilter_Mode_Selection = L3GD20_HPM_NORMAL_MODE_RES;
	L3GD20_FilterStructure.HighPassFilter_CutOff_Frequency = L3GD20_HPFCF_0;
	L3GD20_FilterConfig(&L3GD20_FilterStructure);
	L3GD20_FilterCmd(L3GD20_HIGHPASSFILTER_ENABLE);
}
コード例 #5
0
ファイル: main.c プロジェクト: icylon/STMF429_Learning
int main(void)
{
  uint8_t colorR =0 ,colorG =0 ,colorB =0 ;
  uint8_t colorR_dir =0 ,colorG_dir =0 ,colorB_dir =0 ;
  char lcd_text_buff[100];

  float GyX =0.0f, GyY =0.0f, GyZ =0.0f;
  float X_offset =0.0f,Y_offset =0.0f,Z_offset =0.0f;
  uint32_t i=0;
  float delay_count=1000.0f;

  GPIO_Configuration();
  USART1_Configuration();
  CANx_Config();
  CANx_NVIC_Config();
  lcd_init();
  lcd_drawBackground(20,60,250);
  lcd_drawBGPersimmon(20, 60, 250);


    LCD_SetColors(LCD_COLOR_WHITE-1,LCD_COLOR_WHITE);
    LCD_SetFont(&Font16x24);
    LCD_DisplayStringLine(LINE(1), (uint8_t*)" CAN Bus DEMO  ");
    DrawNeedle(120,120,60,300.0f,0.0f,200.0f);
  while (1)
  {
    CANx_Transmit();
    GPIO_ToggleBits(LED4);

    Delay_1us(1000);
  }
  
}
コード例 #6
0
ファイル: main.c プロジェクト: numkang/STM32F429_Training
void LCD_Initialization(){
  lcd_init();
  lcd_drawBackground(20,60,250);
  lcd_drawBGPersimmon(20, 60, 250);
  LCD_SetColors(LCD_COLOR_WHITE-1,LCD_COLOR_BLACK);
  LCD_SetFont(&Font8x12); 
}
コード例 #7
0
ファイル: main.c プロジェクト: numkang/STM32F429_Training
int main(void)
{

  char lcd_text_main[100];

    lcd_init();
    lcd_drawBackground(20,60,250);
    lcd_drawBGPersimmon(20, 60, 250);
    LCD_SetColors(LCD_COLOR_WHITE-1,LCD_COLOR_WHITE);

    LCD_SetFont(&Font8x12); 

    terminalBufferInitilization();

    /* Begin timer period capture example */


    TIM2_Initialization();

    terminalWrite("Welcome to our termainal .\n");     Delay_1us(1000000);
  while (1){


     sprintf(lcd_text_main,"\nPeriod = %ld us",timebaseCapture_output);
     terminalWrite(lcd_text_main); 
     Delay_1us(10000);
  }  
}
コード例 #8
0
ファイル: main.c プロジェクト: amber951/freertos-stm32
//Main Function
int main(void)
{
	//RCC_Configurastatic();
	GPIO_Configuration();
	USART1_Configuration();
	LCD_SetColors(0x1188, 0x0000);
	LCD_SetFont(&Font8x8);
	t_queue = xQueueCreate(1, sizeof(int));
	if (!t_queue) {
		ReportError("Failed to create t_queue");
		while(1);
	}

	t_mutex = xSemaphoreCreateMutex();
	if (!t_mutex) {
		ReportError("Failed to create t_mutex");
		while(1);
	}

	prvInit();
	
	//LCD_DisplayStringLine(LCD_LINE_1,text);
	//xTaskCreate(usart_text, (char *) "Draw Graph Task", 256,
	//	             NULL, tskIDLE_PRIORITY + 2, NULL);
xTaskCreate(r3d, (char *) "Draw Graph Task", 256,
		             NULL, tskIDLE_PRIORITY + 2, NULL);
	
	
	RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);
        RNG_Cmd(ENABLE);

	//Call Scheduler
	vTaskStartScheduler();
}
コード例 #9
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
void ui_start_metronome()
{
    if(metro_status == 0){
        easter_egg = 0;
    }

    itoa(metronome_bpm, bpm_str, 10);
    
    metronome_beat_count = metronome_beat_count % BEATLIMIT;
    
    itoa(metronome_beat_count, beat_count_str, 10);
    
    ui_draw_note();

    ui_draw_button();

    LCD_SetColors(LCD_COLOR_MAGENTA , LCD_COLOR_WHITE);
        
    LCD_DisplayStringLine(LCD_LINE_2, bpm_text_str);
    LCD_DisplayStringLine(LCD_LINE_3, bpm_str);
        
    LCD_DisplayStringLine(LCD_LINE_5, beat_text_str);
    LCD_DisplayStringLine(LCD_LINE_6, beat_count_str);

    ui_touch_detect();

    ui_swap_layer();


}
コード例 #10
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
void ui_draw_note()
{
    LCD_SetColors(LCD_COLOR_BLACK , LCD_COLOR_BLACK);
    LCD_DrawFullEllipse(160, 260, 50, 35);
    
    LCD_DrawLine(160 + 50, 80, 180, LCD_DIR_VERTICAL);
    LCD_DrawLine(160 + 50 -1, 80, 180, LCD_DIR_VERTICAL);
    LCD_DrawLine(160 + 50 -2, 80, 180, LCD_DIR_VERTICAL);
    LCD_DrawLine(160 + 50 -3, 80, 180, LCD_DIR_VERTICAL);
    LCD_DrawLine(160 + 50 -4, 80, 180, LCD_DIR_VERTICAL);
}
コード例 #11
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);

}
コード例 #12
0
int main()
{
	SystemInit();
	if (SysTick_Config(SystemCoreClock / 3119))//1ms 
  { 
    /* Capture error */ 
    while (1);
  }	

  STM_EVAL_LEDInit(LED3);

  STM3240F_LCD_Init();  	
	LCD_Clear(Black);
	LCD_SetColors(Green,Black);
	LCD_SetFont(&Font8x8);

    if(OV9655_Configuration()==0xFF) 
		{
	     LCD_DisplayStringLine(0,0,"Camera Failed");
    }else{
       LCD_DisplayStringLine(0,0,"Camera OK!");
    }
		/* Start Image capture */ 

	LCD_SetDisplayWindow(0, 0, 319, 239);
  LCD_WriteRAM_Prepare();
  DCMI_CaptureCmd(ENABLE); 
  /* Enable DMA transfer */
  DMA_Cmd(DMA2_Stream1, ENABLE);
    /* Enable DCMI interface */
  DCMI_Cmd(ENABLE); 
    /* Start Image capture */ 
  DCMI_CaptureCmd(ENABLE);   
//  Delay(2);
//  DCMI_SingleRandomWrite(OV9655_DEVICE_WRITE_ADDRESS,0x8d, 0x10);//Camera Color Test Mode Enabled
//    temp=DCMI_SingleRandomRead(OV9655_DEVICE_WRITE_ADDRESS,OV9655_COM15);
//		sprintf(data,"Okunan Data=0x%02X",temp);
//		LCD_DisplayStringLine(0,0,data);
	while(1)
	{ 	
		 
 		 
 	}
}
コード例 #13
0
ファイル: guiTerminalBlock.c プロジェクト: AndreyFursov/AFGUI
void TerminalBlockStringDraw(GUI_TERMINAL_BLOCK * tBlock)
{
	uint16_t i, x, y, index;
	if (tBlock->wmObj.Visible)
	{
		x = tBlock->wmObj.xPos + tBlock->wmObj.BorderWidth + 1;
		y = tBlock->wmObj.yPos + tBlock->wmObj.BorderWidth + 1;
		index  = tBlock->startString;
		LCD_SetColors(tBlock->TextColor, tBlock->wmObj.Color);
		if (tBlock->strings)
		{
			for (i = 0; i < tBlock->countString; i++)
			{
				guiDrawString(tBlock->strings[index], tBlock->vFont, tBlock->qSymb, x, y);
				y += tBlock->vFont->Height;
				index++;
				if (index >= tBlock->qString) index = 0;
			}
		}
	}
}
コード例 #14
0
ファイル: redbull.c プロジェクト: flodur1/redbull
void Redbull_Init()
{
  char buff[128] = { 0 };

  USART_STDIO_Init();
  Delay_Init();
  Button_GPIO_Config();

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

  STM3210E_LCD_Init();
  LCD_SetFont(&Font8x12);
  LCD_SetColors(LCD_COLOR_WHITE, LCD_COLOR_BLACK);

  LCD_WriteRAM_Prepare();

  for (int i = 0; i < (320 * 240); i++)
  {
    LCD_WriteRAM(LCD_COLOR_WHITE);
  }
  for (int i = 0; i < (320 * 240); i++)
  {
    LCD_WriteRAM(LCD_COLOR_BLACK);
  }

  LCD_DisplayStringLine(LINE(0), (uint8_t*) " initializing REDBULL");
  LCD_DisplayStringLine(LINE(1), (uint8_t*) " CPU ...............................");
  sprintf(buff, "ARM Cortex-M3 @ %dMHz", (int) SystemCoreClock / 1000000);
  printRight(1, buff);
  LCD_DisplayStringLine(LINE(2), (uint8_t*) " LCD ............................320x240");

  LCD_DisplayStringLine(LINE(3), (uint8_t*) " LED ..................................");

  LED_Init();
  toggleLED(LED1_PIN, 0);
  toggleLED(LED2_PIN, LED1_PIN);
  toggleLED(LED3_PIN, LED2_PIN);
  toggleLED(LED4_PIN, LED3_PIN);
  toggleLED(LED5_PIN, LED4_PIN);
  toggleLED(LED4_PIN, LED5_PIN);
  toggleLED(LED3_PIN, LED4_PIN);
  toggleLED(LED2_PIN, LED3_PIN);
  toggleLED(LED1_PIN, LED2_PIN);
  toggleLED(0, LED1_PIN);

  printRight(3, "5");

  LCD_DisplayStringLine(LINE(4), (uint8_t*) " RTC ................");
  RTC_Init();
  RTC_t rtc = { .year = 2011, .month = 12, .mday = 19, .hour = 21, .min = 00 };
  //RTC_SetTime(&rtc);
  RTC_GetTime(&rtc);
  sprintf(buff, "%04d/%02d/%02d %02d:%02d:%02d", rtc.year, rtc.month, rtc.mday, rtc.hour, rtc.min, rtc.sec);
  printRight(4, buff);

  LCD_DisplayStringLine(LINE(5), (uint8_t*) " USB .................................");
  Set_USBClock();
  Set_System();
  USB_Interrupts_Config();
  USB_Init();
  printRight(5, "ok");

  //IS61LV25616 (512KB)
  LCD_DisplayStringLine(LINE(6), (uint8_t*) " SRAM ................................");
  SRAM_Init();
  uint32_t* RAM = (uint32_t*) Bank1_SRAM3_ADDR;
  uint8_t TESTOK = 1;
  for (uint32_t i = 0; i < (512 * 1024) / 4; i++)
  {
    RAM[i] = i;
  }
  for (uint32_t i = 0; i < (512 * 1024) / 4; i++)
  {
    if (RAM[i] != i)
    {
      TESTOK = 0;
    }
    RAM[i] = 0;
  }

  if (TESTOK)
  {
    printRight(6, "IS61LV25616 512KB");
  }
  else
  {
    printRight(6, "fail");
  }

  //M29W128F (2MB)
  LCD_DisplayStringLine(LINE(7), (uint8_t*) " NOR .................................");
  NOR_Init();
  NOR_IDTypeDef norid;
  NOR_ReadID(&norid);
  printRight(7, "MX29LV160D 2MB");

  //HY27UF081G2A (128MB)
  LCD_DisplayStringLine(LINE(8), (uint8_t*) " NAND ................................");
  NAND_Init();
  NAND_IDTypeDef nandid;
  NAND_ReadID(&nandid);
  printRight(8, "HY27UF081G2A 128MB");

  LCD_DisplayStringLine(LINE(9), (uint8_t*) " SDIO ................................");
  SD_Init();
  SD_CardInfo cardinfo;
  SD_GetCardInfo(&cardinfo);
  printRight(9, "ok");

}
コード例 #15
0
ファイル: guiEditBox.c プロジェクト: AndreyFursov/AFGUI
void EditBoxDraw(GUI_EDIT_BOX * pEditBox)
{
	int i;
	if (pEditBox->wmObj.Visible)
	{
		// Borders
		LCD_SetTextColor(pEditBox->wmObj.BorderColor);
		if (pEditBox->wmObj.BorderWidth)
		{
			if (pEditBox->wmObj.Visual3D == 1)
			{
				for (i = 0; i < pEditBox->wmObj.BorderWidth; i++)
				{
					LCD_SetTextColor(LCD_COLOR_GREYD);
					// Top Border
					LCD_DrawLine(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Width-i-1, LCD_DIR_HORIZONTAL);
					// Left Border
					LCD_DrawLine(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Height-i, LCD_DIR_VERTICAL);

					if (i == pEditBox->wmObj.BorderWidth-1 && pEditBox->wmObj.Color == LCD_COLOR_WHITE)
						LCD_SetTextColor(LCD_COLOR_GREYL);
					else
						LCD_SetTextColor(LCD_COLOR_WHITE);
					// Bottom Border
					LCD_DrawLine(pEditBox->wmObj.xPos+1+i, pEditBox->wmObj.yPos+pEditBox->wmObj.Height-i-1, pEditBox->wmObj.Width-i-2, LCD_DIR_HORIZONTAL);
					// Right Border
					LCD_DrawLine(pEditBox->wmObj.xPos+pEditBox->wmObj.Width-i-1, pEditBox->wmObj.yPos+i+1, pEditBox->wmObj.Height-i-2, LCD_DIR_VERTICAL);
				}
			}
			else
			{
				// Top Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Width, pEditBox->wmObj.BorderWidth);
				// Left Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Height);
				// Bottom Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos+pEditBox->wmObj.Height-pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Width, pEditBox->wmObj.BorderWidth);
				// Right Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos+pEditBox->wmObj.Width-pEditBox->wmObj.BorderWidth, pEditBox->wmObj.yPos, pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Height);
			}
		}
		// Back
		if (pEditBox->wmObj.Transparent == 0)
		{
			LCD_SetTextColor(pEditBox->wmObj.Color);
			LCD_DrawFillRect(pEditBox->wmObj.xPos + pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.yPos + pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.Width - 2*pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.Height - 2*pEditBox->wmObj.BorderWidth
							);
		}
		// Text
		LCD_SetFont(pEditBox->wmTxt.vFont);
		if (pEditBox->wmObj.Enable)
			LCD_SetColors(pEditBox->wmTxt.TextColor, pEditBox->wmObj.Color);
		else
			LCD_SetColors(guiChangeColorLight(pEditBox->wmObj.Color, 120), pEditBox->wmObj.Color);

		LCD_DrawString(pEditBox->wmTxt.Text, pEditBox->wmTxt.TextLen, pEditBox->wmTxt.TextPosX, pEditBox->wmTxt.TextPosY);
	}
}
コード例 #16
0
ファイル: main.c プロジェクト: icylon/STMF429_Learning
int main(void)
{

            CanTxMsg TxMessage;
  float X_offset =0.0f,Y_offset =0.0f,Z_offset =0.0f;
  float test_float=0.0f; uint8_t test_int=0;
  float GyX =0.0f, GyY =0.0f, GyZ =0.0f;
  float GyX_prev=0.0f,GyY_prev=0.0f,GyZ_prev=0.0f;
      uint16_t x_len=240;
      uint16_t y_len=320;

      uint16_t i=0;
      uint16_t buffer_screen[x_len][y_len];

      /* For gyro receiving  */
     float receivedGyro1=0,receivedGyro1_prev=0;
     float receivedGyro2=0,receivedGyro2_prev=0;
     float receivedGyro3=0,receivedGyro3_prev=0;
     uint8_t *ptr = & receivedGyro1;


      // uint16_t *buf_ptr = &buffer_screen;
      float runner=-8.0;

      rectangular_t rect1;
      rectangular_t prev_rect;
      rectangular_t rect_screen;


    char lcd_text_main[100];

    /* LCD Initialization */
    lcd_init();
    lcd_drawBackground(20,60,250);
    //lcd_drawBGPersimmon(20, 60, 250);



    /* LED Initialization */
    LED_Initialization();

    /* CAN Initialization */
    CAN2_Config();
    CAN2_NVIC_Config();

    /* MEMS Initialization */
    Demo_GyroConfig();

    Delay_1us(10000);
      #define CALIBRATE_COUNT 1000
      for (i=0;i<CALIBRATE_COUNT ;i++){
        Demo_GyroReadAngRate (Buffer);
        X_offset+= Buffer[0];
        Y_offset+= Buffer[1];
        Z_offset+= Buffer[2];
      }

      X_offset = X_offset/ (float)CALIBRATE_COUNT;
      Y_offset = Y_offset/ (float)CALIBRATE_COUNT;
      Z_offset = Z_offset/ (float)CALIBRATE_COUNT;


        rect_screen.xlen = x_len;
        rect_screen.ylen = y_len;
        rect_screen.xpos = 0;
        rect_screen.ypos = 0;

        #define NEEDLE_RADIUS 65
        #define NEEDLE_BASE_WIDTH 14
        #define NEEDLE_FRAME_THICKNESS 5
        
        #define NEEDLE1_CENTER_X 80
        #define NEEDLE1_CENTER_Y 100

        #define NEEDLE2_CENTER_X 80
        #define NEEDLE2_CENTER_Y 200

        #define NEEDLE3_CENTER_X 80
        #define NEEDLE3_CENTER_Y 300

        /* Drawing Needle frame 1 */
        LCD_SetLayer(LCD_BACKGROUND_LAYER);

        DrawThickCircle(NEEDLE1_CENTER_X ,NEEDLE1_CENTER_Y,NEEDLE_RADIUS+NEEDLE_FRAME_THICKNESS, 4,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
       
        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        DrawThickCircle(NEEDLE1_CENTER_X ,NEEDLE1_CENTER_Y,NEEDLE_BASE_WIDTH, 6,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
        
        LCD_SetLayer(LCD_BACKGROUND_LAYER);
        LCD_SetColors(ASSEMBLE_RGB(20, 60, 250),LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE1_CENTER_X- NEEDLE_RADIUS-NEEDLE_FRAME_THICKNESS*2,NEEDLE1_CENTER_Y+ NEEDLE_BASE_WIDTH+3,NEEDLE_RADIUS*2+NEEDLE_FRAME_THICKNESS*4,NEEDLE_RADIUS);

        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE1_CENTER_X- NEEDLE_RADIUS,NEEDLE1_CENTER_Y+ NEEDLE_BASE_WIDTH,NEEDLE_RADIUS*2,NEEDLE_FRAME_THICKNESS-1);

        /* Drawing Needle frame 2 */
        LCD_SetLayer(LCD_BACKGROUND_LAYER);

        DrawThickCircle(NEEDLE2_CENTER_X ,NEEDLE2_CENTER_Y,NEEDLE_RADIUS+NEEDLE_FRAME_THICKNESS, 4,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
       
        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        DrawThickCircle(NEEDLE2_CENTER_X ,NEEDLE2_CENTER_Y,NEEDLE_BASE_WIDTH, 6,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
        
        LCD_SetLayer(LCD_BACKGROUND_LAYER);
        LCD_SetColors(ASSEMBLE_RGB(20, 60, 250),LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE2_CENTER_X- NEEDLE_RADIUS-NEEDLE_FRAME_THICKNESS*2,NEEDLE2_CENTER_Y+ NEEDLE_BASE_WIDTH+3,NEEDLE_RADIUS*2+NEEDLE_FRAME_THICKNESS*4,NEEDLE_RADIUS);

        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE2_CENTER_X- NEEDLE_RADIUS,NEEDLE2_CENTER_Y+ NEEDLE_BASE_WIDTH,NEEDLE_RADIUS*2,NEEDLE_FRAME_THICKNESS-1);


        /* Drawing Needle frame 2 */
        LCD_SetLayer(LCD_BACKGROUND_LAYER);

        DrawThickCircle(NEEDLE3_CENTER_X ,NEEDLE3_CENTER_Y,NEEDLE_RADIUS+NEEDLE_FRAME_THICKNESS, 4,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
       
        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        DrawThickCircle(NEEDLE3_CENTER_X ,NEEDLE3_CENTER_Y,NEEDLE_BASE_WIDTH, 6,LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
        
        LCD_SetLayer(LCD_BACKGROUND_LAYER);
        LCD_SetColors(ASSEMBLE_RGB(20, 60, 250),LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE3_CENTER_X- NEEDLE_RADIUS-NEEDLE_FRAME_THICKNESS*2,NEEDLE3_CENTER_Y+ NEEDLE_BASE_WIDTH+3,NEEDLE_RADIUS*2+NEEDLE_FRAME_THICKNESS*4,NEEDLE_RADIUS);

        LCD_SetLayer(LCD_FOREGROUND_LAYER);

        LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_BLACK);
        LCD_DrawFullRect(NEEDLE3_CENTER_X- NEEDLE_RADIUS,NEEDLE3_CENTER_Y+ NEEDLE_BASE_WIDTH,NEEDLE_RADIUS*2,NEEDLE_FRAME_THICKNESS-1);

        /* Clear drawing buffer */
        PadRectangular(&buffer_screen,x_len,y_len,LCD_COLOR_WHITE, &rect_screen);




      while(1)
      {

        board_ID = PIN_ID_Read();

        LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
        sprintf(lcd_text_main," CAN Demo ID:%d    ",board_ID);
        LCD_DisplayStringLine(LINE(0), (uint8_t*)lcd_text_main);

        Demo_GyroReadAngRate (Buffer);

        //Delay_1us(1000);

        /* MEMS Filtering */
        #define LP_ALPHA 0.1f
        GyX = GyX*(1.0f - LP_ALPHA) + (Buffer[0] - X_offset)*LP_ALPHA;
        GyY = GyY*(1.0f - LP_ALPHA) + (Buffer[1] - Y_offset)*LP_ALPHA;
        GyZ = GyZ*(1.0f - LP_ALPHA) + (Buffer[2] - Z_offset)*LP_ALPHA;

        if(GyX >  90.0f)  GyX =  90.0f;
        if(GyX < -90.0f)  GyX = -90.0f;
        if(GyY >  90.0f)  GyY =  90.0f;
        if(GyY <  -90.0f) GyY = -90.0f;
        if(GyZ >  90.0f)  GyZ =  90.0f;
        if(GyZ < -90.0f)  GyZ = -90.0f;

        /* Start drawing rectangular */
        prev_rect = rect1;

        rect1.xlen = 25;
        rect1.ylen = 30;
        rect1.xpos = x_len/2+ (int16_t)(GyY)-10;
        rect1.ypos = y_len/2 + (int16_t)(GyX)-10;


        if(board_ID == 1){


          MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_GREEN,NEEDLE1_CENTER_X,NEEDLE1_CENTER_Y,-GyZ,-GyZ_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);

        }else if(board_ID == 2){

          MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_GREEN,NEEDLE2_CENTER_X,NEEDLE2_CENTER_Y,-GyZ,-GyZ_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);

        }else {

          MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_GREEN,NEEDLE3_CENTER_X,NEEDLE3_CENTER_Y,-GyZ,-GyZ_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);

        }

            CAN2_TransmitGyro(board_ID,GyZ);

            /* Received Data */
            if( can2_rx_isr_flag ==1){

              do{

            if( can2_rx_isr_flag ==1){
                  can2RxMessage = CAN2_PassRXMessage();
                  can2_rx_isr_flag=0;
                }else{

                  CAN_Receive(CAN2, CAN_FIFO0, &can2RxMessage);
                }
                  GPIO_ToggleBits(GPIOG,GPIO_Pin_14);

                    ptr[0] = can2RxMessage.Data[0];
                    ptr[1] = can2RxMessage.Data[1];
                    ptr[2] = can2RxMessage.Data[2];
                    ptr[3] = can2RxMessage.Data[3];


                    if(( can2RxMessage.ExtId &   0x0000FFFF) == 1){
                        ptr = & receivedGyro1;
                    ptr[0] = can2RxMessage.Data[0];
                    ptr[1] = can2RxMessage.Data[1];
                    ptr[2] = can2RxMessage.Data[2];
                    ptr[3] = can2RxMessage.Data[3];


                        MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_RED,NEEDLE1_CENTER_X,NEEDLE1_CENTER_Y,-receivedGyro1,-receivedGyro1_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);
                        
                    receivedGyro1_prev = receivedGyro1;
                    }else if (( can2RxMessage.ExtId & 0x0000FFFF) == 2){
                        ptr = & receivedGyro2;
                    ptr[0] = can2RxMessage.Data[0];
                    ptr[1] = can2RxMessage.Data[1];
                    ptr[2] = can2RxMessage.Data[2];
                    ptr[3] = can2RxMessage.Data[3];
                        MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_RED,NEEDLE2_CENTER_X,NEEDLE2_CENTER_Y,-receivedGyro2,-receivedGyro2_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);
                        
                    receivedGyro2_prev = receivedGyro2;
                    }else if (( can2RxMessage.ExtId & 0x0000FFFF) == 3){
                        ptr = & receivedGyro3;
                    ptr[0] = can2RxMessage.Data[0];
                    ptr[1] = can2RxMessage.Data[1];
                    ptr[2] = can2RxMessage.Data[2];
                    ptr[3] = can2RxMessage.Data[3];
                        MoveNeedle(LCD_BACKGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_RED,NEEDLE3_CENTER_X,NEEDLE3_CENTER_Y,-receivedGyro3,-receivedGyro3_prev,NEEDLE_RADIUS,NEEDLE_BASE_WIDTH);
                        
                    receivedGyro3_prev = receivedGyro3;
                    }
                  // LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
                  // sprintf(lcd_text_main," ID :%d         ", can2RxMessage.StdId);
                  // LCD_DisplayStringLine(LINE(1), (uint8_t*)lcd_text_main);
                  // LCD_SetColors(LCD_COLOR_BLACK,LCD_COLOR_WHITE-1);
                  // sprintf(lcd_text_main," Data :%f        ", receivedGyro);
                  // LCD_DisplayStringLine(LINE(2), (uint8_t*)lcd_text_main);
                }while(CAN_MessagePending(CAN2, CAN_FIFO0) > 0);



            }



          // {
          //   uint8_t status=0;



          //   while(CAN_TransmitStatus(CAN2, 0) != CAN_TxStatus_Ok ){

          //     status = CAN_TransmitStatus(CAN2, 0);
          //        if(status == CAN_TxStatus_Failed){

          //         GPIO_ToggleBits(GPIOG,GPIO_Pin_14);


          //        }
          //  }

          // }
            // TxMessage.StdId = (uint32_t)board_ID;
            // TxMessage.RTR = CAN_RTR_DATA;
            // TxMessage.IDE = CAN_ID_STD;
            // TxMessage.DLC = 8;
            // TxMessage.Data[0] = 0x01;
            // TxMessage.Data[1] = 0x01;
            // TxMessage.Data[2] = 0x01;
            // TxMessage.Data[3] = 0x01;
            // TxMessage.Data[4] = 0x01;
            // TxMessage.Data[5] = 0x01;
            // TxMessage.Data[6] = 0x01;
            // TxMessage.Data[7] = 0x01;
            // CAN_Transmit(CAN2, &TxMessage);

        //CAN2_TransmitGyro(test_int++,test_float);

        test_float += 0.1f;

        GyX_prev = GyX;
        GyZ_prev = GyZ;
        GyY_prev = GyY;

        runner += 1.0f;


        /* Faster method */
        //MoveAndUpdateRectangular(LCD_FOREGROUND_LAYER,&buffer_screen,x_len,y_len,LCD_COLOR_BLACK,&prev_rect, &rect1);
        
        /* Regular method */
        // PadRectangular(&buffer_screen,x_len,y_len,LCD_COLOR_WHITE, &prev_rect);
        // PadRectangular(&buffer_screen,x_len,y_len,LCD_COLOR_BLACK, &rect1);
         //DrawBufferToScreen(LCD_FOREGROUND_LAYER,buf_ptr,0,0, x_len,y_len);

      }

    
  
}
コード例 #17
0
ファイル: MainMenu.c プロジェクト: Nilvero/SysWbud1
void MainMenu(){
	Button configuration={5,220,"  Configure   "};
	Button chart={5,270,"    Chats     "};

	Label temperatureLabel={10,10,"Temperature[C]:"};
	Label humidityLabel={10,50,"Humidity[%]:"};
	Label pressureLabel={10,90,"Pressure[hPa]:"};
	Label externalTemperatureLabel={10,130,"Ext Temperature[C]:"};

	float data[]={1,10,15,1,4,3,4,5};

	ButtonDraw(&configuration);
	ButtonDraw(&chart);
	LabelDraw(&temperatureLabel);
	LabelDraw(&humidityLabel);
	LabelDraw(&pressureLabel);
	LabelDraw(&externalTemperatureLabel);

	IOE_TP_Config();
	TP_STATE state;

	while(1){
		state=*IOE_TP_GetState();
		if (state.TouchDetected == 128 ) {
			int s=state.TouchDetected;
			if(ButtonCheckIfPressed(state.X,state.Y,&chart)==CLICKED){
				state.TouchDetected=0;
				results.changed=1;
				ChartsMenu();
				results.changed=1;
			}
			state.TouchDetected=0;

		}
		if(results.changed){
			LCD_SetColors(0x0000,0xffff);
			LCD_DrawFullRect(0,0,240,320);
			ButtonDraw(&configuration);
			ButtonDraw(&chart);

			if(results.temperatureAndHumidity.ERROR_CODE==0){
				LabelDraw(&temperatureLabel);
				LabelDraw(&humidityLabel);
				DrawFloat(150,30,(float)results.temperatureAndHumidity.temperature,2);
				DrawFloat(150,70,(float)results.temperatureAndHumidity.humidity,2);
			}
			else{
				Label tmp=temperatureLabel;
				tmp.string="DHT_11 Error";
				LabelDraw(&tmp);
			}

			if(results.externalTemperature.ERROR_CODE==0){
				LabelDraw(&externalTemperatureLabel);
				DrawFloat(150,150,(float)results.externalTemperature.temperature,2);
			}
			else{
				Label tmp=externalTemperatureLabel;
				tmp.string="DS18B20 Error";
				LabelDraw(&tmp);
			}

			if(results.pressure.ERROR_CODE==0){
				LabelDraw(&pressureLabel);
				DrawFloat(150,110,(float)results.pressure.pressure,2);
			}
			else{
				Label tmp=pressureLabel;
				tmp.string="LPS331 Error";
				LabelDraw(&tmp);
			}

			results.changed=0;
		}
		delayMSC(100);
	}
}
コード例 #18
0
ファイル: ui.c プロジェクト: rtenv-plus-stm32f4/guitar-tuner
void ui_start_tuner()
{

    int i = 0, solmization = 0;
    int index = 0,min = 999,tmp = 0;
    int stage = 0;
    int pos = 0;

    if(hz < frequency_stage_threshold[0]){
        stage = 0;
    }else if(hz > frequency_stage_threshold[0] && hz < frequency_stage_threshold[1]){
        stage = 1;
    }else{
        stage = 2;
    }
    
    for(i = 0; i < 7; i++){
        tmp = hz - frequency_stage[stage][i];
        if(tmp < 0)
        {
            tmp *= -1;
        }

        if(tmp < min){
            min = tmp;
            index = i;
        }
    }
    solmization = index;

    min = 9999;
    tmp = 0;

    for(i = 0; i < 7; i++){
        tmp = hz - frequency_stage[stage][i];
        if(tmp < min && tmp > 0){
            min = tmp;
            index = i;
        }
    }
    tmp = hz - frequency_stage[stage][index];
    if(hz <= 65){
        pos = 0;
    }else if(hz > 490){
        pos = 30*6;
    }else{
        pos = 30 * index + 30 * tmp/(frequency_stage[stage][index+1] - frequency_stage[stage][index]);
    }



    itoa(hz, hz_value_str, 10);

    frequency_str[0] = '\0';

    strcat((char *)frequency_str, (char *)space_str);
    strcat((char *)frequency_str, (char *)hz_value_str);
    strcat((char *)frequency_str, (char *)hz_str);

    LCD_SetColors(LCD_COLOR_MAGENTA , LCD_COLOR_WHITE);

    //base scale line 
    LCD_DrawLine(20, 200, 200, LCD_DIR_HORIZONTAL);
    LCD_DrawLine(30, 180, 40, LCD_DIR_VERTICAL);

    //draw scale
    for(i = 1; i <= 6; i++){
        LCD_DrawLine(30 + 30*i, 180, 40, LCD_DIR_VERTICAL);
    }

    LCD_DisplayChar(LCD_LINE_2, 115, solmization_char[solmization]);
    LCD_DisplayStringLine(LCD_LINE_4, frequency_str);

    ui_draw_solmization();
    ui_draw_pos(pos);

    ui_swap_layer();

}
コード例 #19
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);
}