IO

io.output(io, boolean)

IOのHigh/Lowを切り替えます。起動時はHi-z状態のIOからプッシュプルの出力が開始されます。

以下はIO1,IO2にLEDを繋いだ場合交互に点滅する例です

local tick = 0
local flag = false

os.log(" - Lua PowerOn");
io.retain(1, true);
io.retain(2, true);

function on_offline_loop()
  loop()
end

function on_online_loop()
  loop()
end

function loop()
  if tick + 300 < os.getTick() then
    tick = os.getTick()
    io.output(1, flag);
    io.output(2, not flag);
    flag = not flag
  end
end

io.input(io)

IOのLHigh/Lowを読み取ります。

outputを行ったあとにinputすることでIOをHi-z状態にすることができます。

以下はIO2の入力をIO1から出力する例です。

function on_offline_loop()
  loop()
end

function on_online_loop()
  loop()
end

function loop()
  io.output(1, io.input(2));
end

os.log(" - Lua Start");
io.retain(1, true);
io.retain(2, true);

io.drive(io, mode)

ピンの出力方式を選びます。

OS7.1.0以降

引数

引数 説明
io number 操作するIOの番号です。
mode string 出力方式です(下表を参照)。
モード 説明
"3v" 3Vのプッシュプル出力です。既定値です。
"5v" 5Vのプッシュプル出力です。
"open-drain" オープンドレイン出力です。

注意: "5v"はobniz Boardでのみ利用できます。ESP32系のIOは3Vで動作します。

io.drive(1, "open-drain");  -- IO1をオープンドレインで駆動する
io.output(1, true);

io.pull(io, mode)

ピンに与えるプル抵抗を選びます。

OS7.1.0以降

引数

引数 説明
io number 操作するIOの番号です。
mode string プルの設定です(下表を参照)。
モード 説明
null プル抵抗なし(フローティング)です。既定値です。
"5v" 5Vへプルアップします。
"3v" 3Vへプルアップします。
"0v" 0Vへプルダウンします。

注意: "5v"はobniz Boardでのみ利用できます。ESP32系のIOは3Vで動作します。

io.pull(2, "3v");       -- IO2を3Vへプルアップする
local val = io.input(2);

io.pull(2, nil);        -- フローティング(プル抵抗なし)へ戻す