Guc 发表于 2017-11-14 19:36:48

[GUC 1元 DIY ]让MINIMOSD多个功能——摄像头切换

本帖最后由 Guc 于 2017-11-14 19:45 编辑

    大家好,我是Guc。前段时间我发了两个关于MINIMOSD的帖子,一个是使用arduino板给minimosd刷bootloader,另一个是MINIIMOSD二次开发,实现界面定制【转】,其实是为接下来的帖子做铺垫的。今天我给大家带来的是[让MINIMOSD多个功能]系列DIY的第一贴——摄像头切换功能。摄像头切换功能是用于切换多个摄像头的视频信号,可以为飞行提供更多的视角。    我们先来看看需要写什么材料:一块minimosd板;一个cd4066芯片;一些导线;一些排针;只需要这么多,cd4066芯片才几毛钱,花1元多一个功能很值,大家说呢?先让大家看看我做好的实验板:    很丑吧,因为需要测试我就做成了两层,而且我把很多空闲的引脚都接出线了,为了方便其他功能的添加,看起起来有点乱,大家做的时候可以通过引脚进行飞线,使用更小贴片的4066芯片,然后直接用热熔胶固定在OSD板背后,体积就小很多了。    接下来看看效果:http://v.youku.com/v_show/id_XMzE1NzYzNTYzMg==.html    视频信号切换功能靠的是4066这个芯片,它的使用方法也很简单,通过给控制引脚加高电平,视频引脚就导通,输入输出可以互换,它最多能够切换4路的视频信号,我这次只用了2路,下图是它的引脚图:    再看下MINIMOSD上的328p芯片的引脚图:    MINIMOSD使用的引脚不多,主要使用的是SPI接口引脚,其他都是可以利用的。这次我用到的是模拟引脚A2,数字引脚3和4。    我们看看添加的代码:先是定义引脚:const int moshi=A2;const int shiping1=3;const int shiping2=4;进行循环的部分{int duoliang= pulseIn(moshi,1); if(duoliang>1600){    digitalWrite(shiping1, HIGH);     digitalWrite(shiping2, LOW);} else{ digitalWrite(shiping2, HIGH);     digitalWrite(shiping1, LOW); }代码是不是超级简单?    pulseIn可以检测最长达2秒的脉冲时间,所以如果使用了这个固件必须接上接收机,不连接会使osd数据更新变慢。    最重要的接线图来了:    接线中接收机的接线需要再连接一根共地线,其他接线安排好就可以固定在板子背后就可以了,要注意的是328p引脚飞线的焊接,引脚比较小,要小心着焊,焊好后可以像我一样给它上点热熔胶。    关于固件的刷入方法请看帖子:【GUC CIY】超声波辅助飞行模块这个帖子中有详细说明,和arduino mini pro的写入方法一样。当然也可以使用OSD工具进行刷入,不过经常出现掉bootloader的问题,不过也没事还有这个帖子:使用arduino板给minimosd刷bootloader可以解决。    更重要的固件在这里:    如果大家有去DIY,希望能在帖子下把你的作品分享给大家看看,谢谢阅贴!

大爱猩猩 发表于 2017-11-14 20:22:28

6666大神啊

smartphone 发表于 2017-11-14 20:24:38

技术贴看了是必须要回的

anyhow18 发表于 2017-11-14 21:18:25

羡慕技术大神,值得学习

dys0155 发表于 2017-11-14 21:18:54

這個厲害了,動手能力強

阿明flying 发表于 2017-11-14 21:35:19

厉害啊,技术大神

zhangsen1450 发表于 2017-11-14 22:59:58

楼主厉害啊,顶 顶 顶 顶 顶 顶

川师鲤鱼 发表于 2017-11-14 23:11:03

技术贴 顶一下

螺丝 发表于 2017-11-14 23:15:43

能不能单独做一个切换模块呢?

ken 发表于 2017-11-14 23:29:21

pulsein可以设置超时时间,默认2s,可以改小一点

Guc 发表于 2017-11-15 07:13:42

ken 发表于 2017-11-14 23:29 static/image/common/back.gif
pulsein可以设置超时时间,默认2s,可以改小一点

谢谢提醒http://www.moz8.com//mobcent//app/data/phiz/default/03.png

Guc 发表于 2017-11-15 07:14:39

补充关于pulseIn()函数的用法

pulseIn()函数用来读取一个引脚的脉冲(HIGH或LOW)。
例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。
返回脉冲的长度,单位毫秒。
如果在指定的时间内无脉冲函数返回。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒)
语法:pulseIn(pin, value) pulseIn(pin, value, timeout)
参数:pin:你要进行脉冲计时的引脚号(int)。
value:要读取的脉冲类型,HIGH或LOW(int)。
timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)​​

Guc 发表于 2017-11-15 07:16:05

螺丝 发表于 2017-11-14 23:15 static/image/common/back.gif
能不能单独做一个切换模块呢?

可以啊,用个arduino pro mini就可以,代码都一样。

Guc 发表于 2017-11-15 07:16:19

川师鲤鱼 发表于 2017-11-14 23:11 static/image/common/back.gif
技术贴 顶一下

谢谢帮顶

永远的零 发表于 2017-11-15 07:37:01

定点版头追http://www.moz8.com//mobcent//app/data/phiz/default/01.png

木马 发表于 2017-11-15 10:13:52

厉害了,我的哥

明月清风2015 发表于 2017-11-15 10:15:00

{:1_20:}{:1_20:}{:1_20:}

wurenji 发表于 2017-11-15 12:15:43

楼主厉害啊,顶 顶 顶 顶 顶 顶

追梦♂ 发表于 2017-11-15 14:07:07

听说回帖可也拿分,同时也是一种美德!!

tam1974 发表于 2017-11-15 19:17:04

好贴,顶一个,这样的话可以把芯片直接绑在OSD上
页: [1] 2 3
查看完整版本: [GUC 1元 DIY ]让MINIMOSD多个功能——摄像头切换