1

今天我尝试使用 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 来确认(工作),下一个字节是 IO 当前的状态。如您所见,我将第二个字节与代码中的原始状态进行了比较。我总是把 0x0 作为第二个字节有什么问题......

有人知道发生了什么吗?

亲切的问候,马可

4

0 回答 0