⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control_match.c

📁 STM32+ov7670
💻 C
字号:
#include "Control_Match.h"



#define YG_MAX_VALUE		35
#define YG_MIN_VALUE		-35
#define YG_MID_VALUE		128




void ControlKeyInit(void)
{
	//RCC->APB2ENR|= BIT(2);
	
	GPIOA->CRL &= 0x00FFFFFF;				//PA 6 7 8 11 12
	GPIOA->CRL |= 0x88000000;
	
	GPIOA->CRH &= 0xFFF00FF0;
	GPIOA->CRH |= 0x00088008;
	
	GPIOA->ODR |= 0x19C0;					
}
void ContorlMatch(u8*pnrf2401, u8* pbuf)
{
	u8 i = 0;
	u8 temp_dir = 0;
	s16 temp = 0;
	for(i = 3; i < 6; i ++)
	{
		pbuf[i] = 0;
	}	

//////////////////////////////////////////////
	//方向键->左边4个
	temp_dir = pnrf2401[DIR_BIT] & 0x0f;	//屏蔽右方向键的高4位
	
	if(pnrf2401[DIR_BIT] == L_UP)
	{
		pbuf[DATA_3] |= BIT(1);				//1前进
	}
	else if(pnrf2401[DIR_BIT] ==L_DN)
	{
		pbuf[DATA_3] |= BIT(0);				//3后退
	}
	else if(pnrf2401[DIR_BIT] == L_LEFT)
	{
		pbuf[DATA_3] |= BIT(2);				//4右大转
	}
	else if(pnrf2401[DIR_BIT] == L_RIGHT)
	{
		pbuf[DATA_3] |= BIT(4);				//2左大转
	}
	else if(pnrf2401[DIR_BIT] == L_LEFT_UP)
	{
		pbuf[DATA_3] |= BIT(3);				//1+4右小转
	}
	else if(pnrf2401[DIR_BIT] == L_RIGHT_UP)
	{
		pbuf[DATA_3] |= BIT(5);				//1+2左小转
	}
	
//////////////////////////////////////////////
	//方向键->右边4个
	temp_dir = pnrf2401[DIR_BIT] & 0xf0;	//屏蔽左方向键的低4位
	if(pnrf2401[DIR_BIT] == R_UP)
	{
		pbuf[DATA_2] |= BIT(3);				//5大臂伸展
	}
	else if(pnrf2401[DIR_BIT] == R_DN)
	{
		pbuf[DATA_2] |= BIT(2);				//7大臂收缩
	}
	
	if(pnrf2401[DIR_BIT] == R_LEFT)
	{
		pbuf[DATA_1] |= BIT(1);				//6中臂伸展
	}
	else if(pnrf2401[DIR_BIT] == R_RIGHT)
	{
		pbuf[DATA_1] |= BIT(0);				//8中臂收缩
	}
	
//////////////////////////////////////////////
	//左右摇杆
	temp = pnrf2401[L_YG_X_BIT] - YG_MID_VALUE;
	if(temp > YG_MAX_VALUE)
	{
		pbuf[DATA_2] |= BIT(0);				//9机械臂右旋转
	}
	else if(temp < YG_MIN_VALUE)
	{
		pbuf[DATA_2] |= BIT(1);				//9机械臂左旋转
	}
	
	temp = pnrf2401[R_YG_X_BIT] - YG_MID_VALUE;
	if(temp > YG_MAX_VALUE)
	{
		pbuf[DATA_1] |= BIT(5);				//10机械手左旋转
	}
	else if(temp < YG_MIN_VALUE)
	{
		pbuf[DATA_1] |= BIT(4);				//10机械手右旋转
	}
//////////////////////////////////////////////
	//正前方4键
	//左两键
	if(pnrf2401[LR_FNT_BIT] & L_FNT_UP)
	{
		pbuf[DATA_1] |= BIT(2);				//12小臂收缩
	}
	else if(pnrf2401[LR_FNT_BIT] & L_FNT_DN)
	{
		pbuf[DATA_1] |= BIT(3);				//11小臂伸展
	}
	//右两键
	if(pnrf2401[LR_FNT_BIT]& R_FNT_UP)
	{
		pbuf[DATA_1] |= BIT(7);				//13机械手闭合
	}
	else if(pnrf2401[LR_FNT_BIT] & R_FNT_DN)
	{
		pbuf[DATA_1] |= BIT(6);				//14机械手张开
	}
	
}






















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -