Arduino单片机OV7670实操指南
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
——大家好啊,笔者这几天有时间,开始把过去自己的一些实践分享给大家,但笔者并非这个方向的专家,有很多问题还麻烦大家指正。
之前我在淘宝上买了一个OV7676摄像头一直没机会使用,这次下定决心,但是市面上的学习资料一方面少,一方面参差不齐,我找了一个参考网页非常靠谱:https://circuitjournal.com/arduino-OV7670-to-pc(需要翻墙)https://circuitjournal.com/arduino-ov7670-10fps(需要翻墙)
提示:以下是本篇文章正文内容,下面案例可供参考
一、所需硬件介绍

——本次单片机采用的是arduino UNO开发板,也可以选用arduino NANO,但是由于OV7676摄像头接线很多,对应接口会有调整。带线的话售价在15元左右。

——OV7676摄像头不带FIFO,FIFO类似于一个数据储存器,会帮助单片机稳定输出图像。带固定框的话售价在8元左右。PS:别忘了摘罩子!!!

——1.8寸TFT LED彩色显示屏,售价在11元左右。
——重中之重,需要电阻10kΩ(2个),1kΩ(6个),680Ω(6个)
——其他需要的面包板、杜邦线什么的就不展示啦。
二、电脑端显示图像
1.安装 “ArduImageCapture” 插件
——这里默认大家都使用过Arduino IDE.exe啦

——有点坑的是必须要arduion 1.x版本才能运行,花了我太多时间了,泪目。。。。。。翻不了墙的兄弟们可以留邮箱啊,我可以发给你们。
把ArduImageCapture解压放到arduino的Tools目录,具体位置如下:
WIN端 C:\Users<username>\Documents\Arduino\tools
MAC端 /Users//Documents/Arduino/tools

——安装好就可以在Tools下看到了。
2.下载LiveOV7670库

——在Github上下载该库,地址:https://github.com/indrekluuk/LiveOV7670

——解压后内容如下,将src/lib/LiveOV7670Library和src/lib/Adafruit_GFX_Library两个库放到arduino的Libraries目录,具体位置如下:
WIN端 C:\Users<username>\Documents\Arduino\libraries
MAC端 /Users//Documents/Arduino/libraries
其实就是和刚才的Tools目录并列位置。
3.代码调试
打开src/LiveOV7670,其他的引用cpp文件也会打开,找到setup.h
代码修改如下:
//
// Created by indrek on 1.05.2016.
//
#ifndef LIVEOV7670_SETUP_H
#define LIVEOV7670_SETUP_H
/*
* EXAMPLE = 1
* Use LiveOV7670Library class that reads line into buffer and
* sends data to TFT over SPI during blank lines.
*
* EXAMPLE = 2
* Use LiveOV7670Library class that processes data pixel by pixel
* sends data to TFT during each pixel reading loop.
* VGA can not be used with line buffer since there is no
* time (no blank lines) to do something useful with a buffered line
*
* EXAMPLE = 3
* Reads data from LiveOV7670Library and send it over UART to computer
* Java application for receiving picture from UART
* https://github.com/indrekluuk/ArduImageCapture
*
* EXAMPLE = 4
* Gray scale image @20Hz. Interlaced image.
*
*/
#define EXAMPLE 3
void initializeScreenAndCamera();
void processFrame();
#endif //LIVEOV7670_SETUP_H
——将原来的#define EXAMPLE 1改为#define EXAMPLE 3,烧录串口

——图像变红,说明代码运行正确。
4.硬件连接

——这里就不多说了,按图连接即可。

——连到这里图像应该变绿,说明识别相机正确。

——这里就不多说了,按图连接即可。

——走到这步,恭喜你成功了,图像传输会有点卡,一方面是分辨率高,一方面是没有FIFO,有时候打印的Frame之间会出现其他东西,不用理睬。
4.LED显示屏进阶

BLK-3.3V;RST-pin 10;CS-pin 9;
DC-pin 8;SDA或DIN-pin 11;SCL或CLK-pin 13
电压线和接地线按图连接。
——别忘了将原来的#define EXAMPLE 3改回#define EXAMPLE 1。
在ExampleUart.cpp进行分辨率调整,烧录串口。
if (this.Component.Params.Input[2].SourceCount == 0)
// select resolution and communication speed:
// 1 - 115200bps 160x120 rgb
// 2 - 115200bps 160x120 grayscale
// 3 - 500000bps 160x120 rgb
// 4 - 500000bps 160x120 grayscale
// 5 - 500000bps 320x240 rgb
// 6 - 500000bps 320x240 grayscale
// 7 - 1Mbps 160x120 rgb
// 8 - 1Mbps 160x120 grayscale
// 9 - 1Mbps 320x240 rgb
// 10 - 1Mbps 320x240 grayscale
// 11 - 1Mbps 640x480 grayscale
// 12 - 2Mbps 160x120 rgb
// 13 - 2Mbps 160x120 grayscale
// 14 - 2Mbps 320x240 rgb
// 15 - 2Mbps 320x240 grayscale
// 16 - 2Mbps 640x480 rgb
// 17 - 2Mbps 640x480 grayscale
#define UART_MODE 3
——#define UART_MODE 3,笔者选的是160×120,接近LED的160×128。

——最后的效果很帅啊,加一个开关、储存器和电池就是古早数码相机啦。
作者:中禅寺lqc