openmv/scripts/examples/12-Thermopile-Shield/fir_lcd.py

62 lines
1.6 KiB
Python

# Thermopile Shield Demo with LCD
#
# Note: To run this example you will need a Thermopile Shield for your OpenMV
# Cam and a LCD Shield. Also, please disable JPEG mode in the IDE.
#
# The Thermopile Shield allows your OpenMV Cam to see heat!
import sensor, image, time, fir, lcd
# Reset sensor
sensor.reset()
# Set sensor settings
sensor.set_contrast(1)
sensor.set_brightness(0)
sensor.set_saturation(2)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA2)
# The following registers fine-tune the image
# sensor window to align it with the FIR sensor.
if (sensor.get_id() == sensor.OV2640):
sensor.__write_reg(0xFF, 0x01) # switch to reg bank
sensor.__write_reg(0x17, 0x19) # set HSTART
sensor.__write_reg(0x18, 0x43) # set HSTOP
# Initialize the thermal sensor
fir.init()
# Initialize the lcd sensor
lcd.init()
# FPS clock
clock = time.clock()
while(True):
clock.tick()
# Capture an image
image = sensor.snapshot()
# Capture FIR data
# ta: Ambient temperature
# ir: Object temperatures (IR array)
# to_min: Minimum object temperature
# to_max: Maximum object temperature
ta, ir, to_min, to_max = fir.read_ir()
# Draw IR data on the framebuffer
fir.draw_ir(image, ir)
# Draw ambient, min and max temperatures.
image.draw_string(0, 0, "Ta: %0.2f"%ta, color = (0xFF, 0x00, 0x00))
image.draw_string(0, 8, "To min: %0.2f"%to_min, color = (0xFF, 0x00, 0x00))
image.draw_string(0, 16, "To max: %0.2f"%to_max, color = (0xFF, 0x00, 0x00))
# Display image on LCD
lcd.display(image)
# Print FPS.
print(clock.fps())