在判断两个物体有没有完全对准,或两物体间有没有障碍物时,可以使用光敏三极管。
做两块如图所示的小板子,一侧二极管发光,另一个光敏三极管感应到,sig端电压会变为低电平,否则是高电平,这里输入电压是5v,可以直接连到avr和51单片机,如果是3.3v供电,可以直接连到stm32的单片机。端口配置程序如下,以PB12为例。
void GUANGOU_Init(void)//读取光耦信号线,判断齿轮是否停止转动
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PE端时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; // -->PB12 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; // 上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB,&GPIO_InitStructure); //根据参数设定初始化GPIOB12
mode=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12); //读取PB12端口电平状态,mode=1齿轮停止转动,mode=0齿轮转动
}