2019-5-28 16:38:24 [显示全部楼层]
9764浏览
查看: 9764|回复: 1

Pixy CMUcam5图像识别传感器教程(三):连接PIXY与Arduino

[复制链接]
(三)连接Pixy与Arduino

Pixy CMUcam5图像识别传感器教程(一):教PIXY识别物体
Pixy CMUcam5图像识别传感器教程(二):与PIXY对话
Pixy CMUcam5图像识别传感器教程(三):连接PIXY与Arduino
Pixy CMUcam5图像识别传感器教程(四):连接PIXY与树莓派
Pixy CMUcam5图像识别传感器教程(五):摄像头云台安装

原文链接

本教程说明如何使用Arduino与Pixy通信

开箱即用,Pixy已准备好与Arduino对话。 它以1 Mbits /秒的速度向Arduino发送块信息,这意味着Pixy每秒可以发送超过6000个检测到的对象,每帧发送135个检测到的对象(Pixy可以每秒处理50帧)。

下面我们让Pixy和Arduino对话。

  • 使用Pixy包装中提供的Arduino线将Pixy连接到Arduino主控板。
注意:如果主控板是Arduino Nano,带状线缆要面向Nano的内部,而不会像Uno上那样从侧面退出(如图)。
如果电缆向外插入,程序会无法上传到Nano,也无法与其进行串行通信。
注意观察图中线缆的插入方式。上图是UNO,线缆是朝外的;如果是Nano,线缆是朝里的。

Pixy线缆的插入方向只有一种,如上图。

接好后Arduino线缆如下图(图中我用的是Pixy2代,1代的接线方法完全一样):

  • 接下来,在这里下载最新的Arduino库“arduino_pixy-x.y.z.zip”(x, y, z为数字,代表版本)。
在Arduino IDE中选择Sketch项目➜Include Library加载库➜Add .ZIP添加.ZIP库 ...(如果使用的是旧版本的Arduino IDE,则是:Sketch项目➜Import Library导入库),将刚才下载的Arduino zip添加到库中。

  • 接下来在File文件➜Examples➜Pixy中选择“hello_world”加载示例。

  • 示例代码如下:
[mw_shl_code=cpp,true]//
// begin license header
//
// This file is part of Pixy CMUcam5 or "Pixy" for short
//
// All Pixy source code is provided under the terms of the
// GNU General Public License v2 (https://www.gnu.org/licenses/gpl-2.0.html).
// Those wishing to use Pixy source code, software and/or
// technologies under different licensing terms should contact us at
// cmucam@cs.cmu.edu. Such licensing terms are available for
// all portions of the Pixy codebase presented here.
//
// end license header
//
// This sketch is a good place to start if you're just getting started with
// Pixy and Arduino.  This program simply prints the detected object blocks
// (including color codes) through the serial console.  It uses the Arduino's
// ICSP port.  For more information go here:
//
// http://cmucam.org/projects/cmuca ... _a_Microcontroller_(like_an_Arduino)
//
// It prints the detected blocks once per second because printing all of the
// blocks for all 50 frames per second would overwhelm the Arduino's serial port.
//
   
#include <SPI.h>  
#include <Pixy.h>

// This is the main Pixy object
Pixy pixy;

void setup()
{
  Serial.begin(9600);
  Serial.print("Starting...\n");

  pixy.init();
}

void loop()
{
  static int i = 0;
  int j;
  uint16_t blocks;
  char buf[32];
  
  // grab blocks!
  blocks = pixy.getBlocks();
  
  // If there are detect blocks, print them!
  if (blocks)
  {
    i++;
   
    // do this (print) every 50 frames because printing every
    // frame would bog down the Arduino
    if (i%50==0)
    {
      sprintf(buf, "Detected %d:\n", blocks);
      Serial.print(buf);
      for (j=0; j<blocks; j++)
      {
        sprintf(buf, "  block %d: ", j);
        Serial.print(buf);
        pixy.blocks[j].print();
      }
    }
  }  
}[/mw_shl_code]

  • 上传并启动串行监视器。

  • 串口监视器如下显示:

注意,hello_world示例仅在Pixy运行“默认程序Default Program”时才会打印消息(可以在Action菜单下选择PixyMon中的默认模式),在打印出来的消息中我们可以看到有一个与颜色特征匹配的对象。当Pixy运行默认程序并检测到对象时,PixyMon显示如下图。Pixy检测到了两个颜色特征:

Arduino API
在Arduino上使用Pixy非常简单。只需在代码中包含SPI和Pixy的头文件:
#include <SPI.h>#include <Pixy.h>

将下面这行代码放在setup()和loop()函数之外来创建Pixy的全局实例:
Pixy pixy;

Arduino库中最重要的方法是getBlocks(),它返回Pixy检测​​到的对象数目。然后在pixy.blocks[]数组中查找每个检测到的对象信息(每个对象对应一个​​数组成员)。每个数组成员(i)包含以下字段:
  • pixy.blocks.signature  检测到的对象的颜色特征号(正常特征号为1-7)
  • pixy.blocks.x  检测到的对象中心的x位置(0~319)
  • pixy.blocks.y  检测到的对象中心的y位置(0~199)
  • pixy.blocks.width  检测到的对象的宽度(1~320)
  • pixy.blocks.height  检测到的对象的高度(1~200)
  • pixy.blocks.angle  检测到的对象的角度,如果检测到的对象是颜色代码color code
  • pixy.blocks.print()  一个成员函数,用于将检测到的对象信息输出到串口


有关Arduino库和API的更多信息,请转到此处

为Arduino更新Pixy库
在安装新版本的Arduino Library之前,建议删除现有的库。
方法:进入C:\Users\<yourname>\Documents\Arduino\libraries删除Pixy目录。 然后重新运行Arduino IDE,按照上面所述方法重新添加库。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

gada888  版主

发表于 2019-6-26 15:53:22

这个摄像头很不错哟
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail