——文档转载自电子发烧友
前段时间申请到一套摄像头组件,可与电脑连接来显示拾取的图像,但却无法直接将采集的图像显示到一般的显示屏上。如今网友已使用ESP32 开发板同摄像头相结合实现了在屏上的显示功能,这就为制作小巧的操控型摄像装置提供新途径。
该如何来实现摄像头的操控呢?那就是为摄像头配上一个可操控的云台,并通过 步进电机来驱动云台的转动。而云台的操控则是通过迪文智能屏来完成,并直接显示出摄像头所转动的视角,其界面及制作见图1和图2所示。
图1 操控界面 图2界面制作
此外,为了防止缠绕性地转动,还设置了边界的提示保护功能,即达到边界后自动停止自动,并提供蜂鸣器来报警提示。该装置在硬件方面由迪文5寸触摸屏、步进电机、驱动模块及蜂鸣器模块所组成,见如图3所示。其中,步进电机所使用的引脚为P1.0~P1.3,蜂鸣器所使用的引脚为P1.4。
图3 硬件构成
在使用时,是通过触摸界面上的正转、 反转及停止键即可操作云台运转。云台的转动范围在0~360度之间。
正反转功能函数为: void zx(void) { u8 j; for(j=0;j<8;j++) { MDH; MAH; delay_ms(n); MAL; delay_ms(n); MCH; delay_ms(n); MDL; delay_ms(n); MBH; delay_ms(n); MCL; delay_ms(n); MAH; delay_ms(n); MBL; delay_ms(n); } }
void fx(void) { u8 j; for(j=0;j<8;j++) { MDL; MAH; delay_ms(n); MBH; delay_ms(n); MAL; delay_ms(n); MCH; delay_ms(n); MBL; delay_ms(n); MDH; delay_ms(n); MCL; delay_ms(n); MAH; delay_ms(n); } }
实现视角显示与边界提示的主程序为: void main(void) { u16 n,i,m; InitCPU(); delay_ms(200); IO_OUT(); MAL; MBL; MCL; MDL; BEEP=1; i=0; n=0; Write_Dgus(0x2004,0); while(1) { m=Read_Dgus(0x2000); { zx(); i=i+1; } if(m==2) { fx(); i=i-1; } n=i*360/64; Write_Dgus(0x2004,n); if((i>=64)||(i==0)) { m=0; Write_Dgus(0x2000,m); BEEP=0; delay_ms(1000); BEEP=1; } if(m==3) { m=0; } delay_ms(10); } }
本作品完全是利用迪文屏的自身资源来实现云台的控制,并配以转动位置显示及边界提示功能。
|