[H6X] State of the build #4

A project log for [H6X] POD (2021 Hackaday Prize Entry)

- your companion for the next Apocalypse - AirQualityIndex, UV, GPS, HeartRate, Thermal Cam, 21Ah 60w Charger, LEDs for days and more

Manu BenderManu Bender 06/09/2021 at 21:560 Comments

(4/28/21) Progress:  65,6%      Hardware: v9       Code: v9.8



AMG8833 Functions:

Using Algorithm from the Adafruit AMG88xx Library.

Screen shows:    Center Point Value, Max Value, Min Value, fps,  Interpolation Time

Button Single-Click:    Trigger Burst Measurement (small 0.49" screen shows 3-sec countdown) 

Button Double-Click:  Toggle Measurement Area (Center Point, Full Screen)

In HighRes mode i maxed out the Resolution so the frame Rate drops to 1. The Colour Temperatures are mapped to onscreen Min and Max Temps. Kinda works like a simple exposure compensation in a normal camera. The adjusted values get passed on to the LowRes mode if switched. Default temperature scale is 22C - 33C.

It features a Burst Mode (Averaging Mode) to get a more accurate reading with the 8 bit sensor values, by averaging 50 samples over 3 seconds. Measurement will always be taken from the highest temperature seen by the Sensors inside the selected Measurement Area (Full Screen (64px) or Center Point (2px)).

Issue: i can't, for the life of me, figure out how to access the full color spectrum to have smooth color transitions. I tried using the eSPI colors and a conversion method, but could only get it to work by accident with smooth colors going from dark blue to purple, and dropping 6 fps. no good. Has something to do with the 16bit color mapping and how they are arranged in the array, but i don't understand how to access/map them correctly.

more after the jump:
---------- more ----------

Burst Measurement Mode Full Screen:

In LowRes mode measurement happens while displaying. In HiRes mode no displaying is happening during measuring, because we are displaying at 1 fps. So it is a true burst reading, only acquiring data and then going back to displaying, and is much faster because of that (ca 1 sec, 50 samples). Temp Numbers are still being updated and last image stays on screen.

 maxTemp = pixels[64];  // find biggest value  for (idx = 1; idx < 64; ++idx) {    if (pixels[idx] > maxTemp) maxTemp = pixels[idx];   }
  minTemp = pixels[0]; // find smallest value  for (idx = 1; idx < 64; ++idx) {    if (pixels[idx] < minTemp) minTemp = pixels[idx];   }

the bit of code that finds the highest and lowest value and index of the 64 pixel array. 

i know, it's just a simple for loop, but haven't used it like this before. then again, i'm pretty new to this.

Burst Measurement Mode Center Point

Small 0.49" Screen Shows Burst measurement reading. this picture is from earlier in the process.