Fra*_*eth 7 camera arduino clock
我知道有很多关于OV7670的互联网(例如http://forum.arduino.cc/index.php?topic=159557.0),我读了很多关于它的内容,但似乎缺少了一些内容.
首先,我看看我们如何从相机逐像素地读取以构建矩形600 X 480图像的方式,考虑到文档中描述的HREF,VSYNCH和PCLOCK,这很容易理解:http:/ /www.voti.nl/docs/OV7670.pdf.我理解XCLOCK是一个输入,我需要将OV7670作为一种循环控制器给出,RESET可以重置它.
所以在这一点上,我认为通过连接以下引脚可以覆盖这种相机的功能:
从我的角度来看,这种方法的实现类似于:代码:
for each loop function do
   write high to XCLK
   if VSYNCH is HIGH 
      return;
   if HREF is LOW 
      return;
   if lastPCLOCK was HIGH and currentPCLOCK is LOW 
      readPixelFromDataPins();
end for
我readPixelFromDataPins()基本上只读了第一个字节(因为我只是测试我是否能从相机中读取内容),它的编写如下:
码:
byte readPixelFromDataPins() {
  byte result = 0;
  for (int i = 0; i < 8; i++) {
    result = result << 1 | digitalRead(data_p[i]);
  }
  return result;
}
为了检查是否正在从相机读取某些东西,我只需将其打印到Serial 9600,从数据引脚读取的字节为数字.但目前我只收到零值.我用来检索图像的代码存储在这里:https://gist.github.com/franciscospaeth/8503747.
让OV7670与Arduino合作的人是否已经弄清楚我做错了什么?我想我正在错误地使用XCLOCK吗?我该怎么办才能让它发挥作用?
我搜索了很多,我没有找到任何SSCCE(http://sscce.org/)使用arduino的相机,如果有人有它请告诉我.
这个问题也存在于arduino论坛(http://forum.arduino.cc/index.php?topic=211741.0)上.
小智 5
你的想法还不错但是...... xclock需要是一个时钟(在你的程序中只是一个从0到1的过渡并且在那里冻结)你还需要使用带有SIOC和SIOD的I2C来配置相机(或者你可以使用默认设置,但我不确定你是否是正确的输出格式,30F/s,VGA,YUV格式....)
使用读取数据的同一循环中的串行输出,您的代码执行速度较慢我建议您切换xclock引脚并在if()中移动像素打印.此外,您只能在非常精确的时间内读取数据,如果您只想读取一个字节,那么在从0到1的HREF转换之后,您需要等待从PCLK的0到1的新转换(您在PCLK的784x2转换之后,将只能看到HREF的一个0-1转换(640个有效像素+每行144个死区时间)x 2(对于YUV或RGB,每个像素接收2个字节))
| 归档时间: | 
 | 
| 查看次数: | 33404 次 | 
| 最近记录: |