int blobsSetup() { // setup camera mode cam_setMode(CAM_MODE1); // setup spi spi_setCallback(spiCallback); // setup qqueue and M0 g_qqueue->flush(); exec_runM0(0); return 0; }
int main(void) { pixyInit(SRAM3_LOC, &LR0[0], sizeof(LR0)); cc_init(g_chirpUsb); #if 0 uint32_t a = 0xffffffff; uint32_t b = 0; uint32_t c = b - a; printf("*** %d\n", c); #endif #if 0 uint32_t i = 0; uint32_t timer; setTimer(&timer); while(1) { if (getTimer(timer)>1000000) { printf("%d\n", i++); setTimer(&timer); } } #endif #if 1 uint16_t buf[16]; spi_setCallback(transmitCallback); while(1) { if (spi_receive(buf, 1)) { printf("%x\n", buf[0]); if (buf[0]!=0xa5a5) spi_sync(); } } #endif #if 0 // 0 pan, 0 to 1000 clockwise // 1 tilt, 0 to 1000 tilt up while(1) { // bring up servoMove(1, 650, 900, r(800, 50), 0, 550, 450); servoMove(1, 900, 1000, 600, 0, 450, 350); servoMove(1, 1000, 1025, 100, 0, 350, r(320, 20)); servoMove(1, 1025, 1000, 150, 0, 320, r(360, 20)); delayus(2000000); // bring down servoMove(1, 1000, 900, r(600, 50), 0, 350, 460); servoMove(1, 900, 650, r(850, 50), 0, 450, 550); servoMove(1, 650, 670, 100, 0, 550, r(520, 20)); servoMove(1, 670, 650, 150, 0, 520, r(550, 20)); delayus(1500000); // test 1 servoMove(1, 650, 900, r(800, 50), 0, 550, 450); servoMove(1, 900, 1000, 600, 0, 450, 350); servoMove(1, 1000, 1025, 100, 0, 350, r(320, 20)); servoMove(1, 1025, 1000, 150, 0, 320, r(360, 20)); servoMove(1, 1000, 900, r(600, 50), 0, 350, 460); servoMove(1, 900, 650, r(850, 50), 0, 450, 550); servoMove(1, 650, 670, 100, 0, 550, r(520, 20)); servoMove(1, 670, 650, 150, 0, 520, r(550, 20)); // test 2 servoMove(1, 650, 900, r(800, 50), 0, 550, 450); servoMove(1, 900, 1000, 600, 0, 450, 350); servoMove(1, 1000, 1025, 100, 0, 350, r(320, 20)); servoMove(1, 1025, 1000, 150, 0, 320, r(360, 20)); servoMove(1, 1000, 900, r(600, 50), 0, 350, 460); servoMove(1, 900, 650, r(850, 50), 0, 450, 550); servoMove(1, 650, 670, 100, 0, 550, r(520, 20)); servoMove(1, 670, 650, 150, 0, 520, r(550, 20)); delayus(5000000); } #endif #if 0 while(1) { g_chirpUsb->service(); handleButton(); } #endif #if 0 g_chirpM0->getProc("getRLSFrame", (ProcPtr)getRLSFrameCallback); blobProcess(); #endif #if 0 #define SERVO int32_t result, row; uint32_t i, j, numRls, startCol, length, model, xsum, ysum, n, xavg, yavg; uint32_t *qVals = (uint32_t *)RLS_MEMORY; //motor(0, 0); // to switch between servo and motor-- // uncomment servo or motor below, respectively // for motor, change pixy_init.cpp, SCT init // LPC_SCT->MATCH[0].L = 4000; // LPC_SCT->MATCHREL[0].L = 4000; // this will increase the pwm freq and reduce the latency // (these values are normally 20000) // Servo connectors --- black wire down, yellow up. // tilt: edge // pan: inner // note, tilt servo has wire facing forward j = 0; while(1) { g_chirpUsb->service(); handleButton(); if (g_loop) { //cc_getRLSFrame(qVals, RLS_MEMORY_SIZE, LUT_MEMORY, &numRls); cc_getMaxBlob(NULL); #if 0 for (i=0, row=-1, n=0, xsum=0, ysum=0; i<numRls; i++) { if (qVals[i]==0) { row++; continue; } model = qVals[i]&0x03; qVals[i] >>= 3; startCol = qVals[i]&0x1ff; qVals[i] >>= 9; length = qVals[i]&0x1ff; xsum += startCol + (length>>1); ysum += row; n++; } if (n>15) { xavg = xsum/n; yavg = ysum/n; } else { xavg = XCENTER; #ifdef SERVO yavg = YCENTER; #else yavg = YTRACK; #endif } #ifdef SERVO servo(xavg, yavg); #else motor(xavg, yavg); #endif // printf("%d %d\n", xavg, yavg); #endif if (j%50==0) printf("%d\n", j); j++; } } #endif }