#include "Tool.h"
/* ===================================================================
** OLED按鍵操作
** ===================================================================*/
void OLED_Debug()
{
OLED_P6x8Str(6,0,"U_P");
OLED_P6x8Str(6,1,"U_D");
OLED_P6x8Str(6,2,"T_P");
OLED_P6x8Str(6,3,"T_D");
OLED_P6x8Str(6,4,"R_P");
OLED_P6x8Str(6,5,"R_I");
OLED_P6x8Str(6,6,"G_L");
OLED_P6x8Str(6,7,"G_R");
OLED_P6x8Str(70,0,"X");//互補濾波參數
OLED_P6x8Str(70,1,"L");
OLED_P6x8Str(70,2,"R");
OLED_P6x8Str(70,3,"");
OLED_P6x8Str(70,4,"");
OLED_P6x8Str(70,5,"");
OLED_P6x8Str(70,6,"");
OLED_P6x8Str(70,7,"");
int i = 0;
while(1)
{ Ad_Value();
/********上按鍵 按下*光標向上一行移動*********/
if( gpio_get(E6) == 0 )
{
while(gpio_get(E6) ==0);
i--;
if( i < 0) i = 15;
switch(i)
{
case 0 : {OLED_P6x8Str(0,0,"*");OLED_P6x8Str(63,7," ");OLED_P6x8Str(0,1," ");}break;
case 1 : {OLED_P6x8Str(0,1,"*");OLED_P6x8Str(0,0," ");OLED_P6x8Str(0,2," ");}break;
case 2 : {OLED_P6x8Str(0,2,"*");OLED_P6x8Str(0,1," ");OLED_P6x8Str(0,3," ");}break;
case 3 : {OLED_P6x8Str(0,3,"*");OLED_P6x8Str(0,2," ");OLED_P6x8Str(0,4," ");}break;
case 4 : {OLED_P6x8Str(0,4,"*");OLED_P6x8Str(0,3," ");OLED_P6x8Str(0,5," ");}break;
case 5 : {OLED_P6x8Str(0,5,"*");OLED_P6x8Str(0,4," ");OLED_P6x8Str(0,6," ");}break;
case 6 : {OLED_P6x8Str(0,6,"*");OLED_P6x8Str(0,5," ");OLED_P6x8Str(0,7," ");}break;
case 7 : {OLED_P6x8Str(0,7,"*");OLED_P6x8Str(0,6," ");OLED_P6x8Str(63,0," ");}break;
case 8 : {OLED_P6x8Str(63,0,"*");OLED_P6x8Str(0,7," ");OLED_P6x8Str(63,1," ");}break;
case 9 : {OLED_P6x8Str(63,1,"*");OLED_P6x8Str(63,0," ");OLED_P6x8Str(63,2," ");}break;
case 10 : {OLED_P6x8Str(63,2,"*");OLED_P6x8Str(63,1," ");OLED_P6x8Str(63,3," ");}break;
case 11 : {OLED_P6x8Str(63,3,"*");OLED_P6x8Str(63,2," ");OLED_P6x8Str(63,4," ");}break;
case 12 : {OLED_P6x8Str(63,4,"*");OLED_P6x8Str(63,3," ");OLED_P6x8Str(63,5," ");}break;
case 13 : {OLED_P6x8Str(63,5,"*");OLED_P6x8Str(63,4," ");OLED_P6x8Str(63,6," ");}break;
case 14 : {OLED_P6x8Str(63,6,"*");OLED_P6x8Str(63,5," ");OLED_P6x8Str(63,7," ");}break;
case 15 : {OLED_P6x8Str(63,7,"*");OLED_P6x8Str(63,6," ");OLED_P6x8Str(0,0," ");}break;
}
}
/**************下按鍵 按下光標向下一行移動***************************/
if( gpio_get(E5) == 0 )
{
while(gpio_get(E5) ==0);
i++;
if( i > 15 ) i = 0;
switch(i)
{
case 0 : {OLED_P6x8Str(0,0,"*");OLED_P6x8Str(63,7," ");OLED_P6x8Str(0,1," ");}break;
case 1 : {OLED_P6x8Str(0,1,"*");OLED_P6x8Str(0,0," ");OLED_P6x8Str(0,2," ");}break;
case 2 : {OLED_P6x8Str(0,2,"*");OLED_P6x8Str(0,1," ");OLED_P6x8Str(0,3," ");}break;
case 3 : {OLED_P6x8Str(0,3,"*");OLED_P6x8Str(0,2," ");OLED_P6x8Str(0,4," ");}break;
case 4 : {OLED_P6x8Str(0,4,"*");OLED_P6x8Str(0,3," ");OLED_P6x8Str(0,5," ");}break;
case 5 : {OLED_P6x8Str(0,5,"*");OLED_P6x8Str(0,4," ");OLED_P6x8Str(0,6," ");}break;
case 6 : {OLED_P6x8Str(0,6,"*");OLED_P6x8Str(0,5," ");OLED_P6x8Str(0,7," ");}break;
case 7 : {OLED_P6x8Str(0,7,"*");OLED_P6x8Str(0,6," ");OLED_P6x8Str(63,0," ");}break;
case 8 : {OLED_P6x8Str(63,0,"*");OLED_P6x8Str(0,7," ");OLED_P6x8Str(63,1," ");}break;
case 9 : {OLED_P6x8Str(63,1,"*");OLED_P6x8Str(63,0," ");OLED_P6x8Str(63,2," ");}break;
case 10 : {OLED_P6x8Str(63,2,"*");OLED_P6x8Str(63,1,"");OLED_P6x8Str(63,3," ");}break;
case 11 : {OLED_P6x8Str(63,3,"*");OLED_P6x8Str(63,2," ");OLED_P6x8Str(63,4," ");}break;
case 12 : {OLED_P6x8Str(63,4,"*");OLED_P6x8Str(63,3," ");OLED_P6x8Str(63,5," ");}break;
case 13 : {OLED_P6x8Str(63,5,"*");OLED_P6x8Str(63,4," ");OLED_P6x8Str(63,6," ");}break;
case 14 : {OLED_P6x8Str(63,6,"*");OLED_P6x8Str(63,5," ");OLED_P6x8Str(63,7," ");}break;
case 15 : {OLED_P6x8Str(63,7,"*");OLED_P6x8Str(63,6," ");OLED_P6x8Str(0,0," ");}break;
}
}
/***************左按鍵 按下參數減小********************************/
if( gpio_get(B3) == 0 )
{
while( gpio_get(B3) == 0);
switch(i)
{
case 0 : P_Up= P_Up-5;break;
case 1 : D_Up=D_Up-1;break;
case 2 : P_Turn=P_Turn-1;break;
case 3 : D_Turn=D_Turn-2;break;
case 4 : P_Run = P_Run-1;break;
case 5 : I_Run = I_Run-0.2;break;
case 6 : {};break;
case 7 : {};break;
case 8 : X=X-0.002;break;
case 9 : {};break;
case 10 : {};break;
case 11 : {};break;
case 12 : {};break;
case 13 : {};break;
case 14 : {};break;
case 15 : {};break;
}
}
/***************右按鍵 按下參數的值增加********************************/
if( gpio_get(B2) == 0 )
{
while(gpio_get(B2) ==0);
switch(i)
{
case 0 : P_Up= P_Up+5;break;
case 1 : D_Up=D_Up+1;break;
case 2 : P_Turn=P_Turn+1;break;
case 3 : D_Turn=D_Turn+2;break;
case 4 : P_Run = P_Run+ 1;break;
case 5 : I_Run = I_Run+ 0.2;break;
case 6 : {};break;
case 7 : {};break;
case 8 : X=X+0.002;break;
case 9 : {};break;
case 10 : {};break;
case 11 : {};break;
case 12 : {};break;
case 13 : {};break;
case 14 : {};break;
case 15 : {};break;
}
}
OLED_Print_Num1(25, 0, (int)( P_Up));
OLED_Print_Num1(25, 1, (int)(D_Up));
OLED_Print_Num1(25, 2, (int)(P_Turn));
OLED_Print_Num1(25, 3, (int)(D_Turn));
OLED_Print_Num1(25, 4, (int)(P_Run));
OLED_Print_Num1(25, 5, (int)(10*I_Run));
OLED_Print_Num1(25, 6, (int)(Gy_Left_AD));
OLED_Print_Num1(25, 7, (int)(Gy_Right_AD));
OLED_Print_Num1(85, 0, (int)(X*1000));
OLED_Print_Num1(85, 1, (int)(RightAverage));
OLED_Print_Num1(85, 2, (int)(LeftAverage));
/****************中間鍵 確認鍵 按下就退出按鍵調參數函數**************/
if( gpio_get(D5) == 0 )
{
while(gpio_get(D5) ==0);
OLED_Fill(0x00); //初始清屏
break;
}
}
}
|