mirror of
https://github.com/kidoman/embd
synced 2024-06-14 14:49:53 +02:00
make SetCriticalTempLock and SetWindowTempLock exported and don't auto lock when setting temps since the device doesn't seem to respond well to it
This commit is contained in:
parent
24db7580a4
commit
31f3386652
|
@ -4,7 +4,6 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/kidoman/embd"
|
"github.com/kidoman/embd"
|
||||||
_ "github.com/kidoman/embd/host/rpi"
|
_ "github.com/kidoman/embd/host/rpi"
|
||||||
|
@ -28,6 +27,8 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
therm.SetShutdownMode(false)
|
therm.SetShutdownMode(false)
|
||||||
|
therm.SetCriticalTempLock(false)
|
||||||
|
therm.SetWindowTempLock(false)
|
||||||
therm.SetAlertMode(true)
|
therm.SetAlertMode(true)
|
||||||
therm.SetInterruptClear(true)
|
therm.SetInterruptClear(true)
|
||||||
therm.SetAlertStatus(true)
|
therm.SetAlertStatus(true)
|
||||||
|
@ -35,6 +36,9 @@ func main() {
|
||||||
therm.SetAlertSelect(false)
|
therm.SetAlertSelect(false)
|
||||||
therm.SetAlertPolarity(true)
|
therm.SetAlertPolarity(true)
|
||||||
|
|
||||||
|
// get faster results (130ms vs 250ms default)
|
||||||
|
therm.SetTempResolution(mcp9808.EighthC)
|
||||||
|
|
||||||
config, _ := therm.Config()
|
config, _ := therm.Config()
|
||||||
fmt.Printf("New Config: %b\n", config)
|
fmt.Printf("New Config: %b\n", config)
|
||||||
|
|
||||||
|
@ -47,7 +51,7 @@ func main() {
|
||||||
}
|
}
|
||||||
fmt.Printf("Critical Temp set to: %fC\n", critTemp)
|
fmt.Printf("Critical Temp set to: %fC\n", critTemp)
|
||||||
|
|
||||||
if err := therm.SetWindowTempLower(TempFToC(50)); err != nil {
|
if err := therm.SetWindowTempLower(TempFToC(60)); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
lowerTemp, err := therm.WindowTempLower()
|
lowerTemp, err := therm.WindowTempLower()
|
||||||
|
@ -62,6 +66,9 @@ func main() {
|
||||||
upperTemp, _ := therm.WindowTempUpper()
|
upperTemp, _ := therm.WindowTempUpper()
|
||||||
fmt.Printf("Upper Temp Limit set to: %fC\n", upperTemp)
|
fmt.Printf("Upper Temp Limit set to: %fC\n", upperTemp)
|
||||||
|
|
||||||
|
therm.SetCriticalTempLock(true)
|
||||||
|
therm.SetWindowTempLock(true)
|
||||||
|
|
||||||
alert, err := embd.NewDigitalPin(23)
|
alert, err := embd.NewDigitalPin(23)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -87,10 +94,11 @@ func main() {
|
||||||
cancel <- true
|
cancel <- true
|
||||||
}()
|
}()
|
||||||
|
|
||||||
timer := time.Tick(time.Duration(5) * time.Second)
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-timer:
|
case <-cancel:
|
||||||
|
return
|
||||||
|
default:
|
||||||
temp, err := therm.AmbientTemp()
|
temp, err := therm.AmbientTemp()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error reading temp: %s\n", err.Error())
|
fmt.Printf("Error reading temp: %s\n", err.Error())
|
||||||
|
@ -98,8 +106,6 @@ func main() {
|
||||||
fmt.Printf("Current temp is: %fF (%fC), Window Alert: %v, Critical Alert: %v\n",
|
fmt.Printf("Current temp is: %fF (%fC), Window Alert: %v, Critical Alert: %v\n",
|
||||||
TempCToF(temp.CelsiusDeg), temp.CelsiusDeg, temp.AboveUpper || temp.BelowLower, temp.AboveCritical)
|
TempCToF(temp.CelsiusDeg), temp.CelsiusDeg, temp.AboveUpper || temp.BelowLower, temp.AboveCritical)
|
||||||
}
|
}
|
||||||
case <-cancel:
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,7 @@ func (d *MCP9808) CriticalTempLock() (bool, error) {
|
||||||
// 1 (true) = Locked. TCRIT register can not be written
|
// 1 (true) = Locked. TCRIT register can not be written
|
||||||
// When enabled, this bit remains set to ‘1’ or locked until cleared by an internal Reset
|
// When enabled, this bit remains set to ‘1’ or locked until cleared by an internal Reset
|
||||||
// This bit can be programmed in Shutdown mode.
|
// This bit can be programmed in Shutdown mode.
|
||||||
func (d *MCP9808) setCriticalTempLock(locked bool) error {
|
func (d *MCP9808) SetCriticalTempLock(locked bool) error {
|
||||||
return d.flipConfigBit(configCriticalTempLock, locked)
|
return d.flipConfigBit(configCriticalTempLock, locked)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,12 +176,12 @@ func (d *MCP9808) WindowTempLock() (bool, error) {
|
||||||
return d.readConfigValue(configWindowTempLock)
|
return d.readConfigValue(configWindowTempLock)
|
||||||
}
|
}
|
||||||
|
|
||||||
// setWindowTempLock - TUPPER and TLOWER Window Lock bit
|
// SetWindowTempLock - TUPPER and TLOWER Window Lock bit
|
||||||
// 0 (false) = Unlocked; TUPPER and TLOWER registers can be written (power-up default)
|
// 0 (false) = Unlocked; TUPPER and TLOWER registers can be written (power-up default)
|
||||||
// 1 (true) = Locked; TUPPER and TLOWER registers can not be written
|
// 1 (true) = Locked; TUPPER and TLOWER registers can not be written
|
||||||
// When enabled, this bit remains set to ‘1’ or locked until cleared by a Power-on Reset
|
// When enabled, this bit remains set to ‘1’ or locked until cleared by a Power-on Reset
|
||||||
// This bit can be programmed in Shutdown mode.
|
// This bit can be programmed in Shutdown mode.
|
||||||
func (d *MCP9808) setWindowTempLock(locked bool) error {
|
func (d *MCP9808) SetWindowTempLock(locked bool) error {
|
||||||
return d.flipConfigBit(configWindowTempLock, locked)
|
return d.flipConfigBit(configWindowTempLock, locked)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,17 +329,9 @@ func (d *MCP9808) CriticalTemp() (float64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetCriticalTemp when the temperature goes above the set value the alert will be
|
// SetCriticalTemp when the temperature goes above the set value the alert will be
|
||||||
// triggered if enabled.
|
// triggered if enabled. This has no effect if CriticalTempLock is set.
|
||||||
func (d *MCP9808) SetCriticalTemp(newTemp float64) error {
|
func (d *MCP9808) SetCriticalTemp(newTemp float64) error {
|
||||||
if err := d.setCriticalTempLock(false); err != nil {
|
return d.setTemp(regCriticalTemp, newTemp)
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := d.setTemp(regCriticalTemp, newTemp); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return d.setCriticalTempLock(true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WindowTempUpper reads the current temperature set in the upper window temperature register.
|
// WindowTempUpper reads the current temperature set in the upper window temperature register.
|
||||||
|
@ -348,17 +340,9 @@ func (d *MCP9808) WindowTempUpper() (float64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetWindowTempUpper when the temperature goes above the set value the alert will be
|
// SetWindowTempUpper when the temperature goes above the set value the alert will be
|
||||||
// triggered if enabled.
|
// triggered if enabled. This has no effect if WindowTempLock is set.
|
||||||
func (d *MCP9808) SetWindowTempUpper(newTemp float64) error {
|
func (d *MCP9808) SetWindowTempUpper(newTemp float64) error {
|
||||||
if err := d.setWindowTempLock(false); err != nil {
|
return d.setTemp(regUpperTemp, newTemp)
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := d.setTemp(regUpperTemp, newTemp); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return d.setWindowTempLock(true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WindowTempLower reads the current temperature set in the lower window temperature register.
|
// WindowTempLower reads the current temperature set in the lower window temperature register.
|
||||||
|
@ -367,17 +351,9 @@ func (d *MCP9808) WindowTempLower() (float64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetWindowTempLower when the temperature goes below the set value the alert will be
|
// SetWindowTempLower when the temperature goes below the set value the alert will be
|
||||||
// triggered if enabled.
|
// triggered if enabled. This has no effect if WindowTempLock is set.
|
||||||
func (d *MCP9808) SetWindowTempLower(newTemp float64) error {
|
func (d *MCP9808) SetWindowTempLower(newTemp float64) error {
|
||||||
if err := d.setWindowTempLock(false); err != nil {
|
return d.setTemp(regLowerTemp, newTemp)
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := d.setTemp(regLowerTemp, newTemp); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return d.setWindowTempLock(true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TempResolution reads the current temperature accuracy from the sensor (affects temperature read speed)
|
// TempResolution reads the current temperature accuracy from the sensor (affects temperature read speed)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user