Lua je odlehčený, reflexivní, imperativní a procedurální programovací jazyk navržený jako skriptovací jazyk s rozšiřitelnou sémantikou. Název je odvozen z portugalského slova pro měsíc. Jeho celá implementace se vejde do 100 kB. Pokud umíte něco naprogramovat v PHP nebo Pythonu nebude pro vás LUA žádný problém.
1. Proměnné
Rozlišujeme dva druhy proměnných. Globální a lokální. Globální existují všude a lokální pouze v bloku (funkci) kde vznikly. Název proměnné by měl začínat vždy písmenem a pozor jsou rozlišována velká a malá písmena.
Proměnné můžou být těchto typů: nill - nic, prázdná hodnota, čísla, znaky, stav (true/false - 0/1), řetězce, tabulky, funkce.
Příklad:
i=nill
k=1
flag=true
bname="ahoj"
2. Komentáře a klíčová slova
-- komentář
Klíčová slova:
and break do else elseif
end false for function if
in local nil not or
repeat return then true until
while
3. Podmínky, funkce, cykly
Podmínka if
1. if condition then
block
end
2. if condition then
block1
else
block2
end
3. if condition1 then
block1
elseif condition2 then
block2
elseif condition3 then
block3
else
block4
end
Funkce
1. function Name()
block
end
2. Name = function()
block
end
Cykly
1. for variable = beginning, end, step do
block
end
2. for variable, name in table do
block
end
3. while condition do
block
end
4. repeat
block
until condition
Není cílem popsat ze celou syntaxi jazyka LUA. Chtěl jsem pouze na příkladech ukázat, že je přehledná a jednoduchá. Více informací o jazyce LUA je v češtině třeba na root.cz nebo je k dispozici i kniha v češtině.
NodeMCU API implementuje rozhraní k funkcím čipu, kompletní popis je zde ve wiki.
Několik ukázek práce s API
Manipulace s GPIO
pin = 1
-- nastaví pin jako výstup
gpio.mode(pin,gpio.OUTPUT)
-- nastaví pin na log 1
gpio.write(pin,gpio.HIGH)
-- přečte a vypíše hodnotu pin
print(gpio.read(pin))
Jednoduchý webserver
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
print(payload)
conn:send("<h1> Hello, NodeMcu.</h1>")
end)
conn:on("sent",function(conn) conn:close() end)
end)
Jak je vidět i vytvoření jednoduchého web serveru díky dobré implementaci v API zabere pár řádek kódu.
V příštím díle si ukážeme jak udělat WIFI teploměr s uploadem dat na thingspeak.com.
2 komentáře:
Dobrý den, mám prosbu...nedokážete vysvětlit konstrukci "srv:listen(80,function(conn)"
přesněji řečeno jaký má význam znak ':'? Nejsem schopen to pochopit. Dík
Dobrý den,
dovolím si odpovědět. : přidá k volání funkce extra parametr self, který se právě tímto voláním skryje. Stejně by se dala funkce zavolat srv.listen(srv, 80, function(conn)) kde je self parametr hned videt. V dokumentaci LUA je to popsano https://www.lua.org/pil/16.html
Okomentovat