工程训练 ~ 垃圾桶转桶最优路径选取问题

工程训练 ~ 垃圾桶转桶最优路径选取问题


前言


  此博客记录了在大学生工程训练赛中设计的一个简单的小算法。


   

需求:

  如下图所示,一个圆形转桶,分为四个扇形部分,分别为 1、 2、 3、4,有一个箭头 “ 0 ” 固定方向指向圆形转桶其中的一扇,转桶每次可转动 “ 90° ” ,箭头指向扇形部分需要变化时,要设计出最优路径,在完成要求的前提下使转桶转动角度最小 。

在这里插入图片描述

实现过程:

  代码如下,注释很详细,不再赘述,仅供参考。


#include<math.h>

u8 obj;   //串口数据,垃圾种类: 0x31 , 0x32 ,0x33 , 0x34
static u8 rec_obj = 0x31;    //!!!!(写在外面,全局变量)   
                      //启动时 1 号桶在正下方,逆时针依次为 2 3 4 号桶


if ( rec_obj - obj == 0 )
{
	//不用转
}
else if ( abs(rec_obj - obj) == 0x02 )   //绝对值等与 2 ,任一方向随便转两次
{
	//顺时针或者逆时针转 2 次

}
else if ( rec_obj - obj > 0 )
{
	if (abs(rec_obj - obj) < 0x02)
	{
		//逆时针旋转 1 次
	}
	else if (abs(rec_obj - obj) > 0x02)
	{
		//顺时针旋转 1 次
	}
}
else if (rec_obj - obj < 0)
{
	if (abs(rec_obj - obj) < 0x02)
	{
		//顺时针旋转 1 次
	}
	else if (abs(rec_obj - obj) > 0x02)
	{
		//逆时针旋转 1 次
	}
}

rec_obj = obj;  //记录当前转桶位置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值