如何在tinygo中映射两个值范围
How to map two value ranges in tinygo
我正在使用 Golang 和 tinygo 对 arduino uno 进行编程。我正在尝试映射两个值范围。
一种是编码器,范围在 0-1000 之间,另一种是 tinygo 的 ADC 范围在 0-65535 之间。我正在读取 ADC 范围,需要将其转换为 0-1000(编码器)的范围。
我已经尝试了几种方法,但我 运行 遇到的基本问题是数据类型。例如下面的公式等于 0:
var encoderValue uint16 = 35000
float := float64(1000/65535) * float(encoderValue)
1000/65535
是一个整数除法,结果是 0
。如果将结果转换为 float64
没有关系,那么它将是 0.0
.
使用浮点常量:
var encoderValue uint16 = 35000
x := float64(1000.0/65535) * float64(encoderValue)
fmt.Println(x)
这将输出(在 Go Playground 上尝试):
534.0657663843748
我正在使用 Golang 和 tinygo 对 arduino uno 进行编程。我正在尝试映射两个值范围。
一种是编码器,范围在 0-1000 之间,另一种是 tinygo 的 ADC 范围在 0-65535 之间。我正在读取 ADC 范围,需要将其转换为 0-1000(编码器)的范围。
我已经尝试了几种方法,但我 运行 遇到的基本问题是数据类型。例如下面的公式等于 0:
var encoderValue uint16 = 35000
float := float64(1000/65535) * float(encoderValue)
1000/65535
是一个整数除法,结果是 0
。如果将结果转换为 float64
没有关系,那么它将是 0.0
.
使用浮点常量:
var encoderValue uint16 = 35000
x := float64(1000.0/65535) * float64(encoderValue)
fmt.Println(x)
这将输出(在 Go Playground 上尝试):
534.0657663843748