コード例 #1
0
ファイル: dealdata.c プロジェクト: zou-can/ji-bu-qi
void Record_data()
{
	keyscan();
	
	if(flag_new)
	{
		
		switch(key)
		{
			case 1:	if(flag_d==1) Height++;
					if(flag_d==2) Weight++;
					break;
			case 2:	if(flag_d==1) Height--;
					if(flag_d==2) Weight--;
					break;
			case 3:	flag_d++;break;
			default:  break;
		}
		if(flag_d==1)	{	LCD_WriteChar(78,2,'*');LCD_WriteChar(78,3,' ');}
		if(flag_d==2)   {	LCD_WriteChar(78,3,'*');LCD_WriteChar(78,2,' ');}
		if(flag_d==3)	flag_data=1; 
	   	LCD_WriteNum(45,2,Height);
		LCD_WriteNum(51,3,Weight);

	   flag_new=0;
	}		
}
コード例 #2
0
ファイル: other.c プロジェクト: zou-can/tai-yang-gen-zhong
void read_Twarn(uint a,uint b)
{
	key_T();
	DHT11_Receive();		
	if(!T_warn&&TH>10&&TH<40) T_warn=TH+2;
	LCD_WriteNum(60,a,T_warn);
	LCD_WriteNum(36,b,TH);		
}
コード例 #3
0
ファイル: dealdata.c プロジェクト: zou-can/ji-bu-qi
void Run_jibu()
{
	keyscan();
	if(flag_new)
	{
		
		switch(key)
		{
			case 1:	if(run_mode==0) run_mode=1;
					else if(run_mode==1) run_mode=0;
					else if(run_mode==2) run_mode=0;
					break;
			case 2:	run_mode=2;
					break;
			case 3:	flag_running=1;run_bu=run_bushu;break;
			default:  break;
		}

	   	flag_new=0;

	   	switch(run_mode)
		{
			case 0:	Display_time();
					break;
			case 1:	Display_step();
					break;
			case 2:	LCD_WriteString(0,2,"Height:    cm");
					LCD_WriteString(0,3,"Weight:    kg");
					LCD_WriteNum(45,2,Height);
					LCD_WriteNum(51,3,Weight);
					break;
			default:  break;
		}	
	}
	if(flag_time&&(run_mode==0))
	{
		flag_time=0;
		LCD_WriteNum(30,3,time_m);
		LCD_WriteNum(55,3,time_s);
	}

	if(run_flag&&(run_mode==1))
	{
		run_flag=0;
		LCD_WriteNum(20,3,run_bushu);
	}
		
}
コード例 #4
0
ファイル: duoji.c プロジェクト: zou-can/tai-yang-gen-zhong
void duoji_saomiao(void)
{
	uint a_saomiao,b_saomiao;
	duoji1=1500;duoji2=750;
	for(a_saomiao=0;a_saomiao<=14;a_saomiao++)
	{
		for(b_saomiao=0;b_saomiao<=149;b_saomiao++)
		{
			if(flag_fanzhuan==0)	duoji2=duoji2+10;
			else duoji2=duoji2-10;
			LCD_WriteNum(0,4,duoji1);
			LCD_WriteNum(0,2,duoji2);	
		}
		duoji1=duoji1+100;
		flag_fanzhuan=!flag_fanzhuan;
	}	
}
コード例 #5
0
ファイル: dealdata.c プロジェクト: zou-can/ji-bu-qi
void Display_step()
{
	LCD_WriteString(0,2,"              ");
	LCD_WriteString(0,3,"              ");

	LCD_WriteString(10,2,"You have run");
	LCD_WriteString(45,3,"steps!");
	LCD_WriteNum(20,3,run_bushu);
}
コード例 #6
0
ファイル: dealdata.c プロジェクト: zou-can/ji-bu-qi
void run_end()
{
	uint Ener,bup,shijian; 	
	shijian=time_m*10+time_s/6;
	if(shijian==0)  bup=0;
	else bup=run_bu*10/shijian;
	Ener=(43*Height/10+57*Weight/10+92*shijian/10+26*bup/10)/10;
	LCD_WriteString(0,0,"Height:    cm");
	LCD_WriteString(0,1,"Weight:    kg");
	LCD_WriteNum(45,0,Height);
	LCD_WriteNum(51,1,Weight);
	LCD_WriteString(0,2,"Time:");
	
	LCD_WriteNum(35,2,time_m);
	LCD_WriteNum(60,2,time_s);
	LCD_WriteChar(49,2,':');

	LCD_WriteString(0,3,"Step:");
	LCD_WriteNum(35,3,run_bu);

/*	LCD_WriteNum(0,0,43*Height/10);
	LCD_WriteNum(0,1,57*Weight/10);
	LCD_WriteNum(0,2,92*shijian/10);
	LCD_WriteNum(0,3,26*bup/10);*/


	LCD_WriteString(0,4,"Ener:     kcal");
	LCD_WriteNum(35,4,Ener);

	LCD_WriteString(0,5,"YOU ARM GREAT!");
	
			 
}
コード例 #7
0
ファイル: segment_path.c プロジェクト: EasternRise/AGV
void GoRoute3(void)//放最远的树叶
{
	struct Pointfp64 pos_scan1,pos_scan2,pos_tmp;
	struct Pointfp64 pos_real1,pos_real2;
	struct Pointfp64 pos_ring1= C_Ring1,pos_ring2=C_Ring2;
	struct Pointfp64 pos_robot;
	uint8 flag1=0,flag2=0,i;
	fp64 dist1,dist2,radian1,radian2,robot_radian;
	struct Pointfp64 error1,error2;
	int flaglidar;
	struct Pointfp64 temp;
	
	
	Route_Num=3;
//	SetPointPath(Route[2]+1,Route[3],PointRoute[Route[3]].selfangle,PointRoute[Route[3]].position);
	flaglidar=1;
	
	while(RouteFinish) 
	{

		if((Point_NowNum>=Point_EndNum-250)&&flaglidar==1)
		{
			pos_robot=Gps_List[0].position;
			dist1=MATH_Distance(pos_robot,pos_ring1);
			dist2=MATH_Distance(pos_robot,pos_ring2);
			radian1=atan((pos_robot.y-pos_ring1.y)/(pos_robot.x-pos_ring1.x))-Gps_List[0].radian;
			radian2=atan((pos_robot.y-pos_ring2.y)/(pos_robot.x-pos_ring2.x))-Gps_List[0].radian;
			pos_real1.x=dist1*sin(-radian1);
			pos_real1.y=dist1*cos(-radian1)-335;
			pos_real2.x=dist2*sin(-radian2);
			pos_real2.y=dist2*cos(-radian2)-335;
			Lidar_Stat=Lidar_Route_3;//第三段的修正方式
			flaglidar=0;
			robot_radian=Gps_List[0].radian;
			
	 			#if WalkGroundEnable
	 		RouteForm=RouteStop;
				#endif

			
		}
		if(Lidar_Stat==Lidar_Route_3)//在雷达传输完成前,液晶屏显示"waiting"
		{
			LCD_SetXY(0,0);
			LCD_WriteString("Waiting1");
		}
		else if (flaglidar==0)
		{
			//雷达任务会给出 Lidar_Num_Result 个圆环中心
			for (i=0;i<Lidar_Num_Result;i++)//处理雷达数据,将其他环的圆心剔除
			{
				pos_tmp.x=Lidar_ResultX[i]-Ring1_Shift.x; 
				pos_tmp.y=Lidar_ResultY[i]-Ring1_Shift.y;
				dist1=MATH_Distance(pos_tmp,pos_real1);
				dist2=MATH_Distance(pos_tmp,pos_real2);
			    if (dist1<500)//若圆心相对车体距离误差小于500,取之
			    {
			    	flag1=i+1; pos_scan1=pos_tmp;
			    	error1.x=pos_tmp.x-pos_real1.x;
			    	error1.y=pos_tmp.y-pos_real1.y;
			    }
			    if (dist2<200)
			    {
			    	flag2=i+1; pos_scan2=pos_tmp;
			    	error2.x=pos_tmp.x-pos_real2.x;
			    	error2.y=pos_tmp.y-pos_real2.y;
			    }
			}

			 error2=error1;
						
			if (flag1!=0)//修改坐标
			{
				temp.y=(error1.y+error2.y)/2;
				temp.x=(error1.x+error2.x)/2;
				Gps_List[0].position.x-=temp.y*cos(-robot_radian)-temp.x*sin(-robot_radian);
			   	Gps_List[0].position.y+=temp.y*sin(-robot_radian)+temp.x*cos(-robot_radian);
				fix_2.x=temp.y*cos(-robot_radian)-temp.x*sin(-robot_radian);
				fix_2.y=-(temp.y*sin(-robot_radian)+temp.x*cos(-robot_radian));
					#if WalkGroundEnable
				rGPJDAT|=0x1000;     //开蜂鸣器
					#endif
				flaglidar=-1;
			}
			else
			{
				flaglidar=-2;
		 		rGPJDAT&=~0x1000;    //关蜂鸣器 				
			}
			LCD_Clear();
			LCD_SetXY(10,0);
			LCD_WriteInt(flaglidar);  //-3
			LCD_SetXY(0,3);
			LCD_WriteInt(pos_real1.x); //495
			LCD_SetXY(10,3); 
			LCD_WriteInt(pos_real1.y); //1448
			LCD_SetXY(0,4);
			LCD_WriteInt(pos_scan1.x); //
			LCD_SetXY(10,4);
			LCD_WriteInt(pos_scan1.y); //

			LCD_SetXY(0,5);
			LCD_WriteInt(temp.y*cos(-robot_radian)-temp.x*sin(-robot_radian)); //
			LCD_SetXY(10,5);
			LCD_WriteInt(-(temp.y*sin(-robot_radian)+temp.x*cos(-robot_radian))); //

			LCD_SetXY(0,6);
			LCD_WriteNum(radian1/PI*180); //-15
			LCD_SetXY(10,6);
			LCD_WriteInt(radian2/PI*180); //-46
			OSTimeDly(1);

				#if WalkGroundEnable
			for(;;)
			{	
				if(Button7_On)
				{
					RouteForm=PointLine;
					LCD_SetXY(0,7);
					LCD_WriteString("out break!");
					break;
				}
				OSTimeDly(1);
			}
				#endif 

		}
 

		if(Point_NowNum>=Point_EndNum-1)
	 	{
	 		RouteFinish=0;	
	 			
	 		Route_Num++;		
	 		OSMboxPost(ArmMbox,&Route_Num); 		

			LCD_SetXY(0,0);
			LCD_WriteString("route3 done");	


		}
		OSTimeDly(1);
	}
	
	
} 
コード例 #8
0
ファイル: lcd.c プロジェクト: EasternRise/AGV
void LCD_WriteNumXY(double data,int x,int y)
{
	LCD_SetXY(x,y);
	LCD_WriteNum(data);
}
コード例 #9
0
ファイル: time.c プロジェクト: zou-can/ji-bu-qi
void Display_time(void)
{
	LCD_WriteNum(40,1,time_s);

	LCD_WriteNum(60,1,time_ms);			
}
コード例 #10
0
ファイル: lcd_keyboard.c プロジェクト: yangjian940712/robot
void LCD_WriteDouble(double val)
{
	LCD_WriteNum(val);
}
コード例 #11
0
ファイル: lcd_keyboard.c プロジェクト: yangjian940712/robot
void Input_List(struct Input_ListValue *list,int num)
{
	rt_uint32_t key_value;
	int i,index;
	int allpage=(num-1)/3;
	int nowpage=0;
	fp64 out;

	while(1)
	{
		LCD_Clear();	
		for(i=0;i<3;i++)
		{
			index=nowpage*3+i;
			if(index<num)
			{
				LCD_SetXY(0,i);
				LCD_Printf("%d.",i+1);
				LCD_WriteString(list[index].name);
				LCD_WriteString(":");
				switch(list[index].type)
				{
					case TYPE_INT8:
						LCD_WriteNum(*(int8_t*)(list[index].value));
					break;
					case TYPE_UINT8:
						LCD_WriteNum(*(uint8_t*)(list[index].value));
					break;
					case TYPE_INT16:
						LCD_WriteNum(*(int16_t*)(list[index].value));
					break;
					case TYPE_UINT16:
						LCD_WriteNum(*(uint16_t*)(list[index].value));
					break;
					case TYPE_INT32:
						LCD_WriteNum(*(int32_t*)(list[index].value));
					break;
					case TYPE_UINT32:
						LCD_WriteNum(*(uint32_t*)(list[index].value));
					break;
					case TYPE_INT64:
						LCD_WriteNum(*(int64_t*)(list[index].value));
					break;
					case TYPE_UINT64:
						LCD_WriteNum(*(uint64_t*)(list[index].value));
					break;
					case TYPE_FP32:
					  LCD_WriteNum(*(fp32*)(list[index].value));
					break;
					case TYPE_FP64:
						LCD_WriteNum(*(fp64*)(list[index].value));
					break;
				}
			}
		  else
			{
				LCD_SetXY(0,i);
				LCD_WriteString("                    ");
			}
			LCD_SetXY(0,3);
			LCD_Printf("5.save 6.go %d/%d ",nowpage+1,allpage+1);
		}
		
		if(rt_mb_recv(&Mb_Key, &key_value, RT_WAITING_NO) == RT_EOK)
		{
			switch(key_value)
			{
				case pageup:
					if(nowpage>0)
						nowpage--;
					else
						nowpage=allpage;
				break;
				case pagedown:
					if(nowpage<allpage)
						nowpage++;
					else
						nowpage=0;
				break;
				case 1:
				case 2:
				case 3:
					index=key_value+nowpage*3-1;
					switch(list[index].type)
					{
						case TYPE_INT8:
							out=(*(int8_t*)(list[index].value));
						break;
						case TYPE_UINT8:
							out=(*(uint8_t*)(list[index].value));
						break;
						case TYPE_INT16:
							out=(*(int16_t*)(list[index].value));
						break;
						case TYPE_UINT16:
							out=(*(uint16_t*)(list[index].value));
						break;
						case TYPE_INT32:
							out=(*(int32_t*)(list[index].value));
						break;
						case TYPE_UINT32:
							out=(*(uint32_t*)(list[index].value));
						break;
						case TYPE_INT64:
							out=(*(int64_t*)(list[index].value));
						break;
						case TYPE_UINT64:
							out=(*(uint64_t*)(list[index].value));
						break;
						case TYPE_FP32:
							out=(*(fp32*)(list[index].value));
						break;
						case TYPE_FP64:
							out=(*(fp64*)(list[index].value));
						break;
					}
					Input_DoubleValue(&out,list[index].name);
					switch(list[index].type)
					{
						case TYPE_INT8:
							(*(int8_t*)(list[index].value))=out;
						break;
						case TYPE_UINT8:
							(*(uint8_t*)(list[index].value))=out;
						break;
						case TYPE_INT16:
							(*(int16_t*)(list[index].value))=out;
						break;
						case TYPE_UINT16:
							(*(uint16_t*)(list[index].value))=out;
						break;
						case TYPE_INT32:
							(*(int32_t*)(list[index].value))=out;
						break;
						case TYPE_UINT32:
							(*(uint32_t*)(list[index].value))=out;
						break;
						case TYPE_INT64:
							(*(int64_t*)(list[index].value))=out;
						break;
						case TYPE_UINT64:
							(*(uint64_t*)(list[index].value))=out;
						break;
						case TYPE_FP32:
							(*(fp32*)(list[index].value))=out;
						break;
						case TYPE_FP64:
							(*(fp64*)(list[index].value))=out;
						break;
					}
				break;
				case key6:
					return;
			}
		}
		Delay_ms(5);
	}
}
コード例 #12
0
ファイル: lcd_keyboard.c プロジェクト: yangjian940712/robot
void Input_FloatValue(float * address,char *name)//浮点输入
{
	u32 key_value;
    u32 point=0;
	char str[20]={'\0'};
	float temp;
	int i,j;

	str[0]=' ';
	
	i=1;
	point=0;
	for(;;)
	{
		LCD_Clear();
		LCD_SetXY(0,0);
		LCD_WriteString(name);
		LCD_SetXY(0,1);
		LCD_WriteString("old:");
		LCD_WriteNum(*address);
		LCD_SetXY(0,2);
		LCD_WriteString("new:");
		LCD_WriteString(str);
		
		if(i<=1)
		{
			LCD_SetXY(5,2);
			LCD_WriteString("Value=0!!!");
		}
		
		Delay_ms(20);
		
        if(rt_mb_recv(&Mb_Key, (rt_uint32_t*)&key_value, 0)==RT_EOK)
        {
            switch(key_value)
            {
                case 1://1
                    if(i<14)
                        str[i++]='1';
                break;
                case 2://2
                    if(i<14)
                        str[i++]='2';
                break;
                case 3://3
                    if(i<14)
                        str[i++]='3';
                break;
                case 4://4
                    if(i<14)
                        str[i++]='4';
                break;
                case 7://5
                    if(i<14)
                        str[i++]='5';
                break;
                case 8://6
                    if(i<14)
                        str[i++]='6';
                break;
                case 9://7
                    if(i<14)
                        str[i++]='7';
                break;
                case 10://8
                    if(i<14)
                        str[i++]='8';
                break;
                case 13://9
                    if(i<14)
                        str[i++]='9';
                break;
                case 14://0
                    if(i<14)
                        str[i++]='0';
                break;
                case 15://.
                    if(point==0&&i<14)
                    {
                        str[i++]='.';
                        point=1;
                    }
                break;
				case 16://-
                    if(str[0] == ' ')
                        str[0] = '-';
                    else
                        str[0] = ' ';
                break;
                case 17://del
                    if(i>1)
                    {
                        if(str[i-1]=='.')
                            point=0;
                        str[--i]='\0';
                    }
                break;
                case 18://ok
                    temp=0;
                    point=0;
                    for(j=1;j<i;j++)// 
                    {
                        if(str[j]=='.')
                        {
                            point=10;
                        }
                        else if(point==0)
                        {
                            temp=temp*10+str[j]-'0';
                        }
						else
						{
							temp+=(str[j]-'0')/(float)point;
							point=point*10;
						}
                    }
                    if(str[0]=='-')
                        temp=-temp;
                    *address=temp;
                    return;
                
                case 5://cancel
                    return;
            }
        }
	}
}