playNumber(value, unit [, attributes])

Play a numerical value (text to speech)

@status current Introduced in 2.0.0

OpenTX 2.0:

Unit Sound File (.wav) Automatic conversion rules
0
1 Volts 116
2 Amps 118
3 Meters per Second 120
4 missing file 122
5 Kilometers per Hour / Miles per Hour 124 / 142 Input value is KPH
6 Meters / Feet 126 / 140 Input value is meters
7 Degrees 128 Input value is celsius, converted to Fahrenheit for Imperial
8 Percent 130
9 Milliamps 132
10 Milliamp Hours 134
11 Watts 136
12 DB 138
13 Feet 140
14 Kilometers per Hour / Miles per Hour 124 / 142 Input value is in Knots, converted to KPH or MPH
15 Hours 144
16 Minutes 146
17 Seconds 148
18 RPM 150
19 Gee 152
20 Degrees 128

OpenTX 2.1:

2.1 Unit Sound Sound File (.wav)
1 Volts 116
2 Amps 118
3 Milliamps 120
4 Knots 122
5 Meters per Second 124
6 Feet per Second 126
7 Kilometers per Hour 128
8 Miles per Hour 130
9 Meters 132
10 Feet 134
11 Degrees Celsius 136
12 Degrees Fahrenheit 138
13 Percent 140
14 Milliamp Hours 142
15 Watts 144
16 DB 146
17 RPM 148
18 Gee 150
19 Degrees 152
20 Milliliters 154
21 Fluid Ounces 156
22 Hours 158
23 Minutes 160
24 Seconds 162

Parameters

  • value (number) number to play. Value is interpreted as integer.

  • unit (number) unit identifier (see table todo)

  • attributes (unsigned number) possible values:

    • 0 or not present plays integral part of the number (for a number 123 it plays 123)
    • PREC1 plays a number with one decimal place (for a number 123 it plays 12.3)
    • PREC2 plays a number with two decimal places (for a number 123 it plays 1.23)

Return value

none

Notice

2.0 Only - automatic conversion of units for distance, speed, and temperature.


Examples

Example mix script

local nbr = 0
local unit = 0
local prec = 0
local lastnbr = 0
local lastunit = 0
local lastprec = 0
local lasttime = 0

local input =
    {
        { "innbr", SOURCE},
        { "inprec", SOURCE},
        { "toggle", SOURCE}
    }

local output = {"nbr", "prec", "unit"}

local function run(innbr, inprec, toggle)
  local change = false
  local advance = false
  local timenow = getTime()

  nbr = innbr -- will range from - 1024 thru + 1024
  prec = math.floor((inprec + 1024) * (2 / 2014)) -- force range to 0 thru 2

  if (toggle > 0) then
    change = true
    advance = true
  end

  if math.abs(lastnbr - nbr) > 10 then
    change = true
  end

  if not (lastprec == prec) then
    change = true
  end

  if change and ((timenow - lasttime) > 200) then
    lasttime = timenow
    lastnbr = nbr
    if advance then
      lastunit = (lastunit + 1) % 31
    end
    lastprec = prec
    if (lastprec == 0) then
      playNumber(lastnbr, lastunit, 0)
    elseif (lastprec == 1) then
      playNumber(lastnbr, lastunit, PREC1)
    else
      playNumber(lastnbr, lastunit, PREC2)
    end
  end
  return lastnbr * 10.24, lastprec * 10.24, lastunit * 10.24
end

return {run=run, input=input, output=output}