sparkfun / SparkFun_HM01B0_Camera_ArduinoLibrary

Extensible library to use the Himax HM01B0 camera in Arduino
15 stars 4 forks source link

HM01B0 Not Supported on Micromod Artemis Processor #8

Open jamesWith opened 1 year ago

jamesWith commented 1 year ago

Using the sparkfun HM01B0 library with the Micromod Artemis Processor board on a Machine Learning Micromod carrier board. When the Example1_StopMotion example is used, it fails to compile stating: " #error "Unsupported platform: Submit an issue / pull request to https://github.com/sparkfun/SparkFun_HM01B0_Camera_ArduinoLibrary to add support for your target""

I found that using this repo : https://github.com/paulvha/apollo3/tree/master/hb01b0 and the instructions in the readme allowed me to get the camera working. I think there are only a few changes, it would be great if they could be included to save others the struggle.

I then also found that the exposure seem very off, this was helped by adding these values:

// W 24 2101 03 2 1 ; AE target mean {0x2101, 0x3C,}, // W 24 2102 03 2 1 ; AE min mean {0x2102, 0x0A,}, // W 24 2103 03 2 1 ; converge in th {0x2103, 0x0F,},

// W 24 2107 78 2 1 ; min INTG {0x2107, 0x02,},

// W 24 210A 03 2 1 ; Minimum Again {0x210A, 0x00,},

// W 24 210C 03 2 1 ; Minimum Dgain {0x210C, 0x40,}, // W 24 210D 03 2 1 ; Damping factor {0x210D, 0x00,}, // W 24 210E 03 2 1 ; Flicker Step contro {0x210E, 0x00,},

to the file: hm01b0_raw8_qvga_8bits_lsb_5fps.h @ line 144

StargazerX0 commented 1 year ago

How do you get the Micromod Artemis Processor board camera to work? I follow the instructions but face some pins mapping issues with Micromod and Artemis dev kit.

oclyke commented 4 months ago

@nseidle Is there anyone available to update supported platforms for this library?

@jamesWith @StargazerX0 the details for platform support are outlined here: https://github.com/sparkfun/SparkFun_HM01B0_Camera_ArduinoLibrary/tree/master/src/platforms

Here's a general sense of how it works: The hm01b0_platform.h is included as part of the library. Depending on the environment provided by the Arduino IDE (including AM_PART_APOLLO3 and ARDUINO_SFE_EDGE for example) this header will conditionally include other platform definitions. Right now the only platform definition is "platforms/apollo3/include/hm01b0_platform_apollo3.h" and it is only included when ARDUINO_SFE_EDGE is defined. Other Apollo3 boards will likely have different defined values. In order to support a new board look in the Apollo3 Arduino Core to find out the defined name of the board you are looking for.

This shows where ARDUINO_SFE_EDGE is defined in the Apollo3 Arduino Core: https://github.com/sparkfun/Arduino_Apollo3/blob/a0d99c5fc9b1112d46a9d11c1339898d01e586c9/boards.txt#L175

As you can see, all the supported boards are included in the boards.txt file. Additional settings for different boards can be found in the variants directory.