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对话。
注意:如果主控板是Arduino Nano,带状线缆要面向Nano的内部,而不会像Uno上那样从侧面退出(如图)。 如果电缆向外插入,程序会无法上传到Nano,也无法与其进行串行通信。 注意观察图中线缆的插入方式。上图是UNO,线缆是朝外的;如果是Nano,线缆是朝里的。 Pixy线缆的插入方向只有一种,如上图。 接好后Arduino线缆如下图(图中我用的是Pixy2代,1代的接线方法完全一样):
在Arduino IDE中选择Sketch项目➜Include Library加载库➜Add .ZIP添加.ZIP库 ...(如果使用的是旧版本的Arduino IDE,则是:Sketch项目➜Import Library导入库),将刚才下载的Arduino zip添加到库中。
// 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)包含以下字段:
有关Arduino库和API的更多信息,请转到此处。 为Arduino更新Pixy库 在安装新版本的Arduino Library之前,建议删除现有的库。 方法:进入C:\Users\<yourname>\Documents\Arduino\libraries删除Pixy目录。 然后重新运行Arduino IDE,按照上面所述方法重新添加库。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed