The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

SYNOPSIS

        use PINE64::MCP9808;

        my $temp_sensor = PINE64::MCP9808->new(0, '0x18');
        my @reading = $temp_sensor->read_temperature(); 
        my $celsius = $reading[0];
        my $fahrenheit = $reading [1]; 

DESCRIPTION

This module allows you to take temperature readings with the highly accurate MCP9808 I2C temperature sensor using a PINE64A+ board.

METHODS

new(0, 0x18)

You can optionally pass the I2C device id and the address of the MCP9808 on the I2C bus. The PINE64A+ I2C bus is /dev/i2c-0, and the default I2C address for an MCP9808 is 0x18. new() called with no arguments will default to /dev/i2c-0 and 0x18.

read_temperature()

Reads the ambient temperature register of the MCP9808 and returns an array containing the reading in celsius and fahrenheit. The ambient temperature register is 0x05. Bits 13-15 have to be masked out. Bit 12 is the sign bit. The two's complement temperature reading is bits 0-11. $reading[0] is temperature in celsius, $reading[1] is the reading in temperature.