Hello World example program for the OV528 Camera Module

Dependencies:   CameraOV528

Committer:
jplunkett
Date:
Fri Jul 07 20:10:15 2017 +0000
Revision:
0:ac819fa0198f
Child:
1:67a9d5cee87c
OV528 Example init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jplunkett 0:ac819fa0198f 1 #include "mbed.h"
jplunkett 0:ac819fa0198f 2 #include "CameraOV528.h"
jplunkett 0:ac819fa0198f 3 #include "FATFileSystem.h"
jplunkett 0:ac819fa0198f 4 #include "SDBlockDevice.h"
jplunkett 0:ac819fa0198f 5 #include <stdio.h>
jplunkett 0:ac819fa0198f 6
jplunkett 0:ac819fa0198f 7 CameraOV528 camera(D1, D0);// DX, RX
jplunkett 0:ac819fa0198f 8 SDBlockDevice bd(PTE3, PTE1, PTE2, PTE4); // MOSI, MISO, SCLK, CS
jplunkett 0:ac819fa0198f 9 FATFileSystem fs("fs");
jplunkett 0:ac819fa0198f 10 DigitalOut led(LED_GREEN);
jplunkett 0:ac819fa0198f 11 DigitalIn btn(SW2);
jplunkett 0:ac819fa0198f 12 int picture_count;
jplunkett 0:ac819fa0198f 13
jplunkett 0:ac819fa0198f 14 int format_fs(){
jplunkett 0:ac819fa0198f 15 int error = 0;
jplunkett 0:ac819fa0198f 16 printf("Welcome to the filesystem example.\r\n"
jplunkett 0:ac819fa0198f 17 "Formatting a FAT, RAM-backed filesystem. ");
jplunkett 0:ac819fa0198f 18 error = FATFileSystem::format(&bd);
jplunkett 0:ac819fa0198f 19 if (error)
jplunkett 0:ac819fa0198f 20 printf("Failure. %d\r\n", error);
jplunkett 0:ac819fa0198f 21 else
jplunkett 0:ac819fa0198f 22 printf("done.\r\n");
jplunkett 0:ac819fa0198f 23 return error;
jplunkett 0:ac819fa0198f 24 }
jplunkett 0:ac819fa0198f 25
jplunkett 0:ac819fa0198f 26 int mount_fs() {
jplunkett 0:ac819fa0198f 27 printf("Mounting the filesystem on \"/fs\". ");
jplunkett 0:ac819fa0198f 28 int error = fs.mount(&bd);
jplunkett 0:ac819fa0198f 29 if (error)
jplunkett 0:ac819fa0198f 30 printf("Failure. %d\r\n", error);
jplunkett 0:ac819fa0198f 31 else
jplunkett 0:ac819fa0198f 32 printf("done.\r\n");
jplunkett 0:ac819fa0198f 33 return error;
jplunkett 0:ac819fa0198f 34 }
jplunkett 0:ac819fa0198f 35
jplunkett 0:ac819fa0198f 36 void init_fs() {
jplunkett 0:ac819fa0198f 37 if (mount_fs()) {
jplunkett 0:ac819fa0198f 38 format_fs();
jplunkett 0:ac819fa0198f 39 mount_fs();
jplunkett 0:ac819fa0198f 40 }
jplunkett 0:ac819fa0198f 41 }
jplunkett 0:ac819fa0198f 42
jplunkett 0:ac819fa0198f 43 void blink() {
jplunkett 0:ac819fa0198f 44 led = !led;
jplunkett 0:ac819fa0198f 45 }
jplunkett 0:ac819fa0198f 46
jplunkett 0:ac819fa0198f 47 void take_and_store_photo() {
jplunkett 0:ac819fa0198f 48 blink();
jplunkett 0:ac819fa0198f 49
jplunkett 0:ac819fa0198f 50 if(camera.take_picture() == 0) {
jplunkett 0:ac819fa0198f 51 printf("Picture taken.\r\n");
jplunkett 0:ac819fa0198f 52
jplunkett 0:ac819fa0198f 53 uint32_t size = camera.get_picture_size();
jplunkett 0:ac819fa0198f 54 uint8_t* data_buff = (uint8_t*)malloc(size);
jplunkett 0:ac819fa0198f 55 uint32_t bytes_read = camera.read_picture_data(data_buff, size);
jplunkett 0:ac819fa0198f 56 char filename[30];
jplunkett 0:ac819fa0198f 57 sprintf(filename, "/fs/img%d.jpg", picture_count++);
jplunkett 0:ac819fa0198f 58
jplunkett 0:ac819fa0198f 59 printf("Opening a new file, %s.\r\n", filename);
jplunkett 0:ac819fa0198f 60
jplunkett 0:ac819fa0198f 61 FILE* fd = fopen(filename, "wb");
jplunkett 0:ac819fa0198f 62 fwrite(data_buff, sizeof(uint8_t), bytes_read, fd);
jplunkett 0:ac819fa0198f 63 fclose(fd);
jplunkett 0:ac819fa0198f 64
jplunkett 0:ac819fa0198f 65 printf("Picture saved.\r\n\n");
jplunkett 0:ac819fa0198f 66
jplunkett 0:ac819fa0198f 67 free(data_buff);
jplunkett 0:ac819fa0198f 68 }
jplunkett 0:ac819fa0198f 69 else {
jplunkett 0:ac819fa0198f 70 printf("Failed to take photo.\r\n\n");
jplunkett 0:ac819fa0198f 71 }
jplunkett 0:ac819fa0198f 72 }
jplunkett 0:ac819fa0198f 73
jplunkett 0:ac819fa0198f 74 int main() {
jplunkett 0:ac819fa0198f 75 picture_count = 0;
jplunkett 0:ac819fa0198f 76 init_fs();
jplunkett 0:ac819fa0198f 77 camera.powerup();
jplunkett 0:ac819fa0198f 78 while (true) {
jplunkett 0:ac819fa0198f 79 if (!btn.read()) {
jplunkett 0:ac819fa0198f 80 take_and_store_photo();
jplunkett 0:ac819fa0198f 81 }
jplunkett 0:ac819fa0198f 82 }
jplunkett 0:ac819fa0198f 83 }