#!/bin/bash -f I2C_ADDR="0x5d" # start ONE_SHOT convertion i2cset -y 2 ${I2C_ADDR} 0x21 0x01 b sleep 0.5 # get value PHI=` i2cget -y 2 ${I2C_ADDR} 0x2a b` PMID=`i2cget -y 2 ${I2C_ADDR} 0x29 b` PLO=` i2cget -y 2 ${I2C_ADDR} 0x28 b` THI=` i2cget -y 2 ${I2C_ADDR} 0x2c b` TLO=` i2cget -y 2 ${I2C_ADDR} 0x2b b` # value forming PHI=` echo ${PHI} | sed -e 's/0x//g' | tr "[:lower:]" "[:upper:]"` PMID=`echo ${PMID} | sed -e 's/0x//g' | tr "[:lower:]" "[:upper:]"` PLO=` echo ${PLO} | sed -e 's/0x//g' | tr "[:lower:]" "[:upper:]"` THI=` echo ${THI} | sed -e 's/0x//g' | tr "[:lower:]" "[:upper:]"` TLO=` echo ${TLO} | sed -e 's/0x//g' | tr "[:lower:]" "[:upper:]"` PHEX_VALUE="${PHI}${PMID}${PLO}" THEX_VALUE="${THI}${TLO}" # calc echo "scale=2; ibase=16; ${PHEX_VALUE} / 1000" | bc if [ `echo "ibase=16; 8000 <= ${THEX_VALUE}"|bc` = 1 ]; then TDEC_VALUE=`echo "ibase=16; ${THEX_VALUE} - 10000" | bc` else TDEC_VALUE=`echo "ibase=16; ${THEX_VALUE}" | bc` fi printf "%3.2f\n" `echo "scale=2; 42.5 + (${TDEC_VALUE} / 480)" | bc` # reset sensor ( for next conv. ) i2cset -y 2 ${I2C_ADDR} 0x21 0x80 b