capstone_finish
Dependencies: BufferedSerial motor_sn7544
main.cpp@4:7b63cf3d205f, 2019-08-13 (annotated)
- Committer:
- kangmingyo
- Date:
- Tue Aug 13 06:01:16 2019 +0000
- Revision:
- 4:7b63cf3d205f
- Parent:
- 3:2a3664dc6634
- Child:
- 6:fe8b32cb9357
revised 190813
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mio | 0:f3f80a0695ff | 1 | // |
mio | 0:f3f80a0695ff | 2 | // OV7670 + FIFO AL422B camera board test |
mio | 0:f3f80a0695ff | 3 | // |
mio | 0:f3f80a0695ff | 4 | #include "mbed.h" |
mio | 0:f3f80a0695ff | 5 | #include "ov7670.h" |
Jeonghoon | 3:2a3664dc6634 | 6 | #include <ros.h> |
Jeonghoon | 3:2a3664dc6634 | 7 | #include <ros/time.h> |
Jeonghoon | 3:2a3664dc6634 | 8 | #include <std_msgs/UInt8MultiArray.h> |
kangmingyo | 2:e98408458d2b | 9 | |
Jeonghoon | 3:2a3664dc6634 | 10 | std_msgs::UInt8MultiArray img; |
Jeonghoon | 3:2a3664dc6634 | 11 | ros::NodeHandle nh; |
Jeonghoon | 3:2a3664dc6634 | 12 | ros::Publisher img_pub("image_data", &img); |
kangmingyo | 2:e98408458d2b | 13 | |
mio | 0:f3f80a0695ff | 14 | |
mio | 0:f3f80a0695ff | 15 | OV7670 camera( |
kangmingyo | 2:e98408458d2b | 16 | D14,D15, // SDA,SCL(I2C / SCCB) |
kangmingyo | 4:7b63cf3d205f | 17 | D9,D8,D11, // VSYNC,HREF,WEN(FIFO) |
mio | 0:f3f80a0695ff | 18 | //p18,p17,p16,p15,p11,p12,p14,p13, // D7-D0 |
kangmingyo | 2:e98408458d2b | 19 | PortB,0xFF, |
kangmingyo | 2:e98408458d2b | 20 | D13,D12,D6) ; // RRST,OE,RCLK |
mio | 0:f3f80a0695ff | 21 | |
Jeonghoon | 3:2a3664dc6634 | 22 | //Serial pc(USBTX,USBRX,115200) ; |
mio | 0:f3f80a0695ff | 23 | Timer t; |
mio | 0:f3f80a0695ff | 24 | |
kangmingyo | 2:e98408458d2b | 25 | //#undef QQVGA |
kangmingyo | 2:e98408458d2b | 26 | #define QQVGA |
mio | 1:509676f3be32 | 27 | |
mio | 0:f3f80a0695ff | 28 | #ifdef QQVGA |
Jeonghoon | 3:2a3664dc6634 | 29 | # define SIZEX (12) |
Jeonghoon | 3:2a3664dc6634 | 30 | # define SIZEY (8) |
mio | 0:f3f80a0695ff | 31 | #else |
mio | 0:f3f80a0695ff | 32 | # define SIZEX (320) |
mio | 0:f3f80a0695ff | 33 | # define SIZEY (240) |
mio | 0:f3f80a0695ff | 34 | #endif |
mio | 0:f3f80a0695ff | 35 | |
Jeonghoon | 3:2a3664dc6634 | 36 | |
Jeonghoon | 3:2a3664dc6634 | 37 | uint8_t fdata[SIZEX*SIZEY]; |
Jeonghoon | 3:2a3664dc6634 | 38 | |
Jeonghoon | 3:2a3664dc6634 | 39 | size_t size = SIZEX*SIZEY; |
kangmingyo | 2:e98408458d2b | 40 | |
mio | 0:f3f80a0695ff | 41 | int main() { |
mio | 0:f3f80a0695ff | 42 | int last ; |
Jeonghoon | 3:2a3664dc6634 | 43 | // pc.baud(115200) ; |
mio | 0:f3f80a0695ff | 44 | camera.Reset() ; |
Jeonghoon | 3:2a3664dc6634 | 45 | nh.advertise(img_pub); |
mio | 0:f3f80a0695ff | 46 | |
mio | 0:f3f80a0695ff | 47 | #ifdef QQVGA |
kangmingyo | 2:e98408458d2b | 48 | // camera.InitQQVGA565(true,false) ; |
Jeonghoon | 3:2a3664dc6634 | 49 | camera.InitQVGAYUV(false,false); |
kangmingyo | 2:e98408458d2b | 50 | |
kangmingyo | 2:e98408458d2b | 51 | #else |
kangmingyo | 2:e98408458d2b | 52 | //camera.InitQVGA565(true,false) ; |
mio | 0:f3f80a0695ff | 53 | #endif |
Jeonghoon | 3:2a3664dc6634 | 54 | |
Jeonghoon | 3:2a3664dc6634 | 55 | |
mio | 0:f3f80a0695ff | 56 | // CAPTURE and SEND LOOP |
mio | 0:f3f80a0695ff | 57 | t.start(); |
mio | 0:f3f80a0695ff | 58 | last = t.read_ms() ; |
Jeonghoon | 3:2a3664dc6634 | 59 | |
Jeonghoon | 3:2a3664dc6634 | 60 | |
Jeonghoon | 3:2a3664dc6634 | 61 | while(1) |
Jeonghoon | 3:2a3664dc6634 | 62 | { |
Jeonghoon | 3:2a3664dc6634 | 63 | |
Jeonghoon | 3:2a3664dc6634 | 64 | img.data_length = size; |
Jeonghoon | 3:2a3664dc6634 | 65 | |
mio | 0:f3f80a0695ff | 66 | camera.CaptureNext() ; |
mio | 0:f3f80a0695ff | 67 | while(camera.CaptureDone() == false) ; |
Jeonghoon | 3:2a3664dc6634 | 68 | |
mio | 0:f3f80a0695ff | 69 | last = t.read_ms() ; |
mio | 0:f3f80a0695ff | 70 | camera.ReadStart() ; |
Jeonghoon | 3:2a3664dc6634 | 71 | |
Jeonghoon | 3:2a3664dc6634 | 72 | |
Jeonghoon | 3:2a3664dc6634 | 73 | for (int y = 0; y < SIZEX*SIZEY ; y++) { |
Jeonghoon | 3:2a3664dc6634 | 74 | |
Jeonghoon | 3:2a3664dc6634 | 75 | camera.ReadOneByte(); |
Jeonghoon | 3:2a3664dc6634 | 76 | fdata[y]=camera.ReadOneByte(); |
Jeonghoon | 3:2a3664dc6634 | 77 | |
mio | 0:f3f80a0695ff | 78 | } |
Jeonghoon | 3:2a3664dc6634 | 79 | |
mio | 0:f3f80a0695ff | 80 | camera.ReadStop() ; |
mio | 0:f3f80a0695ff | 81 | last = t.read_ms() ; |
Jeonghoon | 3:2a3664dc6634 | 82 | |
Jeonghoon | 3:2a3664dc6634 | 83 | img.data = &fdata[0]; |
Jeonghoon | 3:2a3664dc6634 | 84 | img_pub.publish(&img); |
Jeonghoon | 3:2a3664dc6634 | 85 | |
Jeonghoon | 3:2a3664dc6634 | 86 | |
Jeonghoon | 3:2a3664dc6634 | 87 | nh.spinOnce(); |
Jeonghoon | 3:2a3664dc6634 | 88 | wait_ms(1); //max... |
Jeonghoon | 3:2a3664dc6634 | 89 | } |
mio | 0:f3f80a0695ff | 90 | } |