设置状态的单线DS2408

今天我尝试使用 DS2408 和开发用的 NodeMCU 进行工作。 https://datasheets.maximintegrated.com/en/ds/DS2408.pdf 我使用 https://github.com/queezythegreat/arduino-ds2408/blob/master/DS2408/DS2408.cpp 作为示例。

local pin = 3
local addr = '29-example'
local DS2408_CHANNEL_WRITE_CMD   = 0x5A

function set_state(state)
    ow.setup(pin)

    if (ow.reset(pin) == 1) then
        ow.select(pin, addr)
        ow.write(pin, DS2408_CHANNEL_WRITE_CMD, 1)
        ow.write(pin, state, 1)
        ow.write(pin, bit.bnot(state), 1)

        if (ow.read(pin) == 0xAA) then
            if (ow.read(pin) == state) then
                return true
            end
        end
    else
        return false
    end
end

print(set_state(0x02))

设置状态正常工作。设置后,One Wire 发送 0xAA 进行确认(正常工作),下一个字节是 IOs 当前具有的状态。 正如您所看到的,我在我的代码中将第二个字节与原始状态进行比较。 我总是得到错误的第二个字节0x0……

有人有什么想法吗?

顺祝商祺, 马可

点赞