Pixy CMUCAM5 开源示例代码模运算
Pixy CMUCAM5 Open Source Example Code Modulo Operation
我一直忙于 PIXYCAM 和 Arduino Uno,我已经从他们的网站下载了下面的代码。现在有一个 (i%50) 操作,我不知道它做了什么?有人可以为我解释这部分代码吗?
#include <SPI.h>
#include <Pixy.h>
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];
blocks = pixy.getBlocks();
if (blocks)
{
i++;
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();
}
}
}
}
当 i 是 50 的整数倍时执行 if 子句的内容,所以当 i = 50, 100, 150, ...时表达式为真
我对PIXYCAM一无所知,但代码似乎每隔一段时间打印一组块...
i++;
if (i%50==0)
每 50 帧执行一次(打印),因为打印每一帧会使 Arduino 陷入困境。
%符号是i/50的余数,换句话说,i mod50。这意味着代码只在第50帧执行一次。
我一直忙于 PIXYCAM 和 Arduino Uno,我已经从他们的网站下载了下面的代码。现在有一个 (i%50) 操作,我不知道它做了什么?有人可以为我解释这部分代码吗?
#include <SPI.h>
#include <Pixy.h>
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];
blocks = pixy.getBlocks();
if (blocks)
{
i++;
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();
}
}
}
}
当 i 是 50 的整数倍时执行 if 子句的内容,所以当 i = 50, 100, 150, ...时表达式为真
我对PIXYCAM一无所知,但代码似乎每隔一段时间打印一组块...
i++;
if (i%50==0)
每 50 帧执行一次(打印),因为打印每一帧会使 Arduino 陷入困境。
%符号是i/50的余数,换句话说,i mod50。这意味着代码只在第50帧执行一次。