两个值之间的振荡控制频率

我想制造一个简单的两个数字(0,1)之间的振荡,并能够控制频率(时序)。我卡住了,但我相信math.sinos.clock函数可能会有所帮助。

点赞
用户2858170
用户2858170

如果你想在0和1之间交替,math.sin将无法帮助你。 math.sin(x) 计算x的正弦值。基于时间的信号立即在1和0之间切换通常称为方波。在这里使用 math.sin 没有意义,因为值将以正弦形状在0和1之间转换。

要在0和1之间交替使用值,可以执行各种操作:

local value = 0

-- 通常在循环中:

if value == 0 then
  value = 1
else
  value = 0
end

-- 或者

value = value == 0 and 1 or 0

-- 或者

value = (value + 1) % 2

在每次交替之间触发该交替或添加延迟(通常为程序中的阻塞)。

无法在vanilla Lua中实现4ms的定时。

  1. 通常你在非实时操作系统上
  2. os.clock 精度低

我想不到任何应用会使得在125Hz交替值意义非凡。这些东西通常在微控制器中使用,而不是在PC上。

2021-03-27 12:08:09
用户11491395
用户11491395

最终我成功了,它比我想象中简单。 我只需创建一个函数来控制频率和状态。

function oscillation()
    if state < 1 then
        state = state + 3 * SIM_PERIOD
    else
        state = 0
    end
end

SIM_PERIOD 是我使用的软件的内部变量,类似于 os.clock

2021-03-27 19:36:48