void testLine2 () { char x=64,y=32; while (1) { if (GPIO_ReadInputDataBit(JOYSTICK_LEFT) == Bit_RESET) { // Wait until button is released hal_ui_anti_rebonds (JOYSTICK_LEFT); y--; x=(128-y)/-10; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306DrawPixel(x,y); ssd1306DrawPixel(64,32); ssd1306Refresh(); } // Validate button if(GPIO_ReadInputDataBit(JOYSTICK_RIGHT) == Bit_RESET) { hal_ui_anti_rebonds (JOYSTICK_RIGHT); y++; x=(128-y)/-10; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306Refresh(); } } }
void testLine () { char x=64,y=32; while (1) { if (GPIO_ReadInputDataBit(JOYSTICK_LEFT) == Bit_RESET) { // Wait until button is released hal_ui_anti_rebonds (JOYSTICK_LEFT); x--; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306DrawPixel(x,y); ssd1306DrawPixel(64,32); ssd1306Refresh(); } // Joystick down if (GPIO_ReadInputDataBit(JOYSTICK_DOWN) == Bit_RESET) { hal_ui_anti_rebonds (JOYSTICK_DOWN); y++; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306DrawPixel(x,y); ssd1306DrawPixel(64,32); ssd1306Refresh(); } // Joystick up if (GPIO_ReadInputDataBit(JOYSTICK_UP) == Bit_RESET) { hal_ui_anti_rebonds (JOYSTICK_UP); y--; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306DrawPixel(x,y); ssd1306DrawPixel(64,32); ssd1306Refresh(); } // Validate button if(GPIO_ReadInputDataBit(JOYSTICK_RIGHT) == Bit_RESET) { hal_ui_anti_rebonds (JOYSTICK_RIGHT); x++; ssd1306ClearScreen(); ssd1306DrawLine(64,32,x,y); ssd1306DrawPixel(x,y); ssd1306DrawPixel(64,32); ssd1306Refresh(); } } }
void printGraphMotor (float acceleration, float maxSpeed, float deceleration) { char str[10]; ssd1306ClearScreen(); char point1[2]={(char)((0-maxSpeed)/(0-acceleration)),64-(char)maxSpeed}; char point2[2]={(char)(128-(0-maxSpeed)/(0-deceleration)),64-(char)(maxSpeed)}; ssd1306DrawLine(0,64,point1[0],point1[1]); ssd1306DrawLine(point1[0],point1[1],point2[0],point2[1]); ssd1306DrawLine(point2[0],point1[1],128,64); sprintf(str,"%.2fM.S^2",acceleration); ssd1306DrawString((0+point1[0])/2+2,(64+point1[1])/2+2,str,&Font_3x6); sprintf(str,"%.2fM.S",maxSpeed); ssd1306DrawString((point1[0]+point2[0])/2,(point1[1]+point2[1])/2,str,&Font_3x6); sprintf(str,"%.2fM.S^2",deceleration); ssd1306DrawString((point2[0]+128)/2-27,(point2[1]+64)/2,str,&Font_3x6); ssd1306Refresh(); }
void test_Oled(void) { int i; ExpanderSetbit(7,0); HAL_Delay(100); ExpanderSetbit(7,1); HAL_Delay(100); ssd1306Init(0); ssd1306ClearScreen(); ssd1306Refresh(); ssd1306DrawBmp(Pacabot_bmp, 1, 10, 128, 40); ssd1306Refresh(); HAL_Delay(3500); ssd1306ClearScreen(); ssd1306Refresh(); // miniature bitmap display ssd1306DrawCircle(40, 30, 20); // ssd1306DrawCircle(50, 20, 10); ssd1306FillCircle(100, 40, 15); ssd1306DrawRect(110, 3, 15, 6); ssd1306FillRect(1, 60, 10, 20); ssd1306DrawLine(5, 45, 70, 60); ssd1306Refresh(); HAL_Delay(5500); ssd1306ClearScreen(); for (i = 0; i <= 100; i+=2) { ssd1306ProgressBar(10, 20, i); // HAL_Delay(1); ssd1306Refresh(); } ssd1306ShiftFrameBuffer(8); ssd1306DrawString(13, 1, "Oled 128x64", &Font_8x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(1500); ssd1306DrawString(1, 25, "Driver for STM32f4xx", &Font_5x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(500); ssd1306DrawString(1, 35, "2 Wire SPI mode", &Font_5x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(1500); ssd1306DrawString(10, 55, "BY PLF, PACABOT TEAM", &Font_3x6); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(5000); ssd1306ClearScreen(); ssd1306Refresh(); }
int test_oled1(void) { int i; ssd1306Init(0); ssd1306Refresh(); ssd1306ClearScreen(); ssd1306DrawBmp(Pacabot_bmp, 1, 1, 128, 40); ssd1306Refresh(); HAL_Delay(3500); ssd1306ClearScreen(); ssd1306Refresh(); // miniature bitmap display ssd1306DrawCircle(40, 30, 20); // ssd1306DrawCircle(50, 20, 10); ssd1306FillCircle(100, 40, 15); ssd1306DrawRect(110, 3, 15, 6); ssd1306FillRect(1, 60, 10, 20); ssd1306DrawLine(5, 45, 70, 60); ssd1306Refresh(); HAL_Delay(5500); ssd1306ClearScreen(); for (i = 0; i <= 100; i++) { ssd1306ProgressBar(10, 20, i); HAL_Delay(1); ssd1306Refresh(); } ssd1306ShiftFrameBuffer(8); ssd1306DrawString(13, 1, "Oled 128x64", &Font_8x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(1500); ssd1306DrawString(1, 25, "Driver for STM32f10x", &Font_5x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(500); ssd1306DrawString(1, 35, "4 Wire SPI mode", &Font_5x8); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(1500); ssd1306DrawString(10, 55, "BY PLF ALL RIGHTS RESERVED", &Font_3x6); // 3x6 is UPPER CASE only ssd1306Refresh(); HAL_Delay(5000); ssd1306ClearScreen(); ssd1306Refresh(); return 0; }
void displayMenu(const menuItem menu,int line) { //char str[5]; ssd1306ClearScreen(); ssd1306DrawString(0,0,menu.name,&Font_5x8); ssd1306DrawLine(0,8,128,8); for (int i=0;i<MAX_LINE_SCREEN;i++) { if(menu.line[i].name!=null) ssd1306DrawString(0,MARGIN*i+MARGIN+1,menu.line[line+i].name,&Font_5x8); switch (menu.line[line+i].type) { case 'b': if(*((bool*)menu.line[i+line].param)==true) ssd1306DrawString(90,MARGIN*i+MARGIN+1,"yes",&Font_5x8); else ssd1306DrawString(90,MARGIN*i+MARGIN+1,"no",&Font_5x8); break; case 'i': ssd1306PrintInt(90,MARGIN*i+MARGIN+1," ",*((unsigned int*)menu.line[i+line].param),&Font_3x6); break; case 'l': ssd1306PrintInt(90,MARGIN*i+MARGIN+1," ",*((unsigned long*)menu.line[i+line].param),&Font_3x6); break; case 'f': ssd1306DrawString(110,i*MARGIN+MARGIN+1,"->",&Font_3x6); break; case 'm': ssd1306DrawString(115,i*MARGIN+MARGIN+1,">",&Font_3x6); break; // case 'a': // sprintf(str,"%f.2",*(float*)menu.line[i+line].param); // ssd1306DrawString(110,i*MARGIN+MARGIN+1,str,&Font_3x6); } } uint8_t nmbr_item = 0; while(menu.line[nmbr_item].name != null) { nmbr_item++; } if (nmbr_item>MAX_LINE_SCREEN) { //int heightOneItem=54/nmbr_item; ssd1306DrawRect(123,(54*line)/nmbr_item+MARGIN,3,(54*MAX_LINE_SCREEN)/nmbr_item); } ssd1306Refresh(); }
int modifyLongParam( char *param_name,long *param) { int step=1; char str[40]; long param_copy = *param; char collone=0; ssd1306ClearScreen(); // Write the parameter name ssd1306DrawString(0, 0,param_name, &Font_5x8); ssd1306DrawLine(0, 9, 128, 9); sprintf(str, "%10i", (int)param_copy); ssd1306DrawString(0, 28, str, &Font_8x8); ssd1306DrawString(0, 50, "PRESS 'RIGHT' TO VALIDATE", &Font_3x6); ssd1306DrawString(0, 57, " 'LEFT' TO RETURN.", &Font_3x6); ssd1306DrawString((10-collone)*8,20,"^",&Font_8x8); ssd1306DrawString((10-collone)*8,36,"v",&Font_8x8); ssd1306Refresh(); while (1) { // Exit Button int joystick=expanderJoyFiltered(); switch (joystick) { case JOY_LEFT : if (collone==10) return SUCCESS; else { collone++; ssd1306ClearRect(0,20,128,8); ssd1306ClearRect(0,36,128,8); ssd1306DrawString((9-collone)*9,20,"^",&Font_8x8); ssd1306DrawString((9-collone)*9,36,"v",&Font_8x8); ssd1306Refresh(); } break; case JOY_UP: //param_copy +=1; param_copy += (step*pow(10,collone)); ssd1306ClearRect(0, 28, 164, 8); sprintf(str, "%10i", (int)param_copy); ssd1306DrawString(0, 28, str, &Font_8x8); ssd1306Refresh(); break; case JOY_DOWN : param_copy -= (step*pow(10,collone)); //param_copy -= 1; ssd1306ClearRect(0, 28, 164, 8); sprintf(str, "%10i", (int)param_copy); ssd1306DrawString(0, 28, str, &Font_8x8); ssd1306Refresh(); break; case JOY_RIGHT : if(collone==0) { *param = param_copy; ssd1306Refresh(); return SUCCESS; } else { collone--; ssd1306ClearRect(0,20,128,8); ssd1306ClearRect(0,36,128,8); ssd1306DrawString((9-collone)*9,20,"^",&Font_8x8); ssd1306DrawString((9-collone)*9,36,"v",&Font_8x8); ssd1306Refresh(); } break; default: break; } } return SUCCESS; }
int modifyBoolParam( char *param_name, unsigned char *param) { char str[4]; bool param_copy = (bool)*param; ssd1306ClearScreen(); // Write the parameter name ssd1306DrawString(0, 0,param_name, &Font_5x8); ssd1306DrawLine(0, 9, 128, 9); if (param_copy == true) { sprintf(str, "YES"); } else { sprintf(str, "NO"); } ssd1306DrawString(0, 28, str, &Font_8x8); ssd1306DrawString(0, 50, "PRESS 'RIGHT' TO VALIDATE", &Font_3x6); ssd1306DrawString(0, 57, " 'LEFT' TO RETURN.", &Font_3x6); ssd1306Refresh(); while (1) { int joystick=expanderJoyFiltered(); switch (joystick) { case JOY_LEFT : return SUCCESS; break; case JOY_DOWN: case JOY_UP : if (param_copy == true) { param_copy = false; sprintf(str, "NO"); } else { param_copy = true; sprintf(str, "YES"); } ssd1306ClearRect(0, 28, 164, 8); ssd1306DrawString(0, 28, str, &Font_8x8); ssd1306Refresh(); break; case JOY_RIGHT: *param = param_copy; ssd1306ClearScreen(); ssd1306Refresh(); return SUCCESS; break; } } return SUCCESS; }