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 ); }
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 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; } }
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); }
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); } }
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); }
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); } }
//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(); }
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(); }
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); }
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); }
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) { } }
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; } } } }
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"); }
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); } }
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); } }
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); } }
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(); }
void ui_draw_pos(int pos){ LCD_SetColors(LCD_COLOR_BLUE2, LCD_COLOR_BLUE2); LCD_DrawFullCircle(30+pos, 200, 5); }