Home > Back-end >  How to map two value ranges in tinygo
How to map two value ranges in tinygo

Time:11-06

I'm using Golang to program a arduino uno with tinygo. I am trying to map two value ranges.
One is an encoder with a range between 0-1000 and the other is tinygo's ADC range between 0-65535. I am reading the ADC range and need to covert it to the range of 0-1000 (encoder).

I have tried several things but the basic issue that I'm running into is data types. The below formula for example equals 0:

var encoderValue uint16 = 35000
float := float64(1000/65535) * float(encoderValue)

CodePudding user response:

1000/65535 is an integer division and will result in 0. It doesn't matter if you convert the result to float64, then it'll be 0.0.

Use floating point constant(s):

var encoderValue uint16 = 35000
x := float64(1000.0/65535) * float64(encoderValue)
fmt.Println(x)

This will output (try it on the Go Playground):

534.0657663843748
  • Related