Когда вы захотите расширить функционал, вам понадобится
-- инициализация пинов
for i = 1, 5 do hw.gpio_init(hw.pin(i), hw.out) end
for i = 6, 9 do hw.gpio_init(hw.pin(i), hw.inp) end
hw.gpio_init(hw.p10, hw.inp)
-- парсер команд
while true do
if cmd.begin() then
if cmd.word("get") then
local n = cmd.int()
if cmd.done() then
if n >= 0 and n <= 9 then
hw.cdc_write(hw.gpio_get(n) .. "\n")
else
hw.cdc_write("ERR pin\n")
end
else
hw.cdc_write("ERR syntax\n")
end
elseif cmd.word("set") then
local n = cmd.int()
local m = cmd.int()
if cmd.done() then
if n >= 1 and n <= 5 then
hw.gpio_set(n, m)
hw.cdc_write("OK\n")
else
hw.cdc_write("ERR pin\n")
end
else
hw.cdc_write("ERR syntax\n")
end
elseif cmd.word("rled") then
local m = cmd.int()
if cmd.done() then
hw.rled(m ~= 0)
hw.cdc_write("OK\n")
else
hw.cdc_write("ERR syntax\n")
end
elseif cmd.word("gled") then
local m = cmd.int()
if cmd.done() then
hw.gled(m ~= 0)
hw.cdc_write("OK\n")
else
hw.cdc_write("ERR syntax\n")
end
else
cmd.done()
hw.cdc_write("ERR unknown\n")
end
end
end hw.gpio_init(pin, mode)
Устанавливает режим hw.inp, hw.out, hw.pwm, hw.adc, hw.capture и т.д.
hw.gpio_init(hw.p1, hw.out)
hw.gpio_set(pin, value)
Устанавливает логический уровень 0 или 1.
hw.gpio_set(hw.p1, 1)
hw.gpio_get(pin) -> int
Читает уровень 0 или 1.
local level = hw.gpio_get(hw.p1) hw.gpio_init(hw.p5, hw.adc)
local v = hw.adc_read(hw.p5)
hw.pwm_init(pin, frequency_hz)
Инициализирует PWM на заданной частоте.
hw.pwm_set(pin, duty_percent)
Устанавливает duty cycle 0..100.
Пример:
hw.gpio_init(hw.p3, hw.pwm)
hw.pwm_init(hw.p3, 1000)
hw.pwm_set(hw.p3, 50) hw.capture_freq(pin) -> int
Возвращает частоту входного сигнала в Гц.
hw.capture_duty(pin) -> int
Возвращает duty cycle в процентах. hw.uart_setup(baud, bits, parity, stop)
Настраивает UART2.
Пример:
hw.gpio_init(hw.p2, hw.uart_tx)
hw.gpio_init(hw.p6, hw.uart_rx)
hw.uart_setup(115200, 8, hw.parity_none, 1)
hw.uart_write(str)
Пишет строку в UART.
hw.uart_available() -> int
Возвращает число байт в RX buffer.
hw.uart_read() -> int
Читает один байт или возвращает -1, если данных нет. hw.ws2812_write(pin, data)
Отправляет бинарные данные о цвете на ленту. Цвет - код в палитре на 256 цветов. Длина строки ограничена памятью. Если строка - результат конкатенации, то - максимум 128 байт.
hw.gpio_init(hw.p4, hw.ws2812)
hw.ws2812_write(hw.p4, "\x10\x00\x00") DHT22
hw.dht_temp(pin) -> int
Температура в десятых долях градуса Цельсия.
hw.dht_hum(pin) -> int
Влажность в десятых долях процента.
hw.gpio_init(hw.p1, hw.dht22)
local t = hw.dht_temp(hw.p1)
local h = hw.dht_hum(hw.p1) hw.delay_ms(ms)
Задержка в миллисекундах.
hw.uptime() -> int
Секунды с момента старта устройства.
hw.now() -> int
Миллисекунды с момента старта устройства.
hw.timer_after(ms, func[, arg1[, arg2]]) -> int
Однократный запуск таймера через ms.
hw.timer_every(ms, func[, arg1[, arg2]]) -> int
Периодический запуск таймера через ms.
hw.timer_cancel(timer_id)
Отмена таймера. hw.rled(on)
Управляет красным светодиодом.
hw.gled(on)
Управляет зелёным светодиодом.
Пример:
hw.rled(true)
hw.gled(false)