2019-10-07 17:19:07 +08:00

57 lines
1.7 KiB
Markdown

# ESP8266/ESP32 Arduino Lua
This Arduino library provides the [lua](https://www.lua.org/) 5.3.4 scripting engine for ESP8266/ESP32 sketches. This allows dynamic execution of code on Arduino without having to compile and flash a new firmware. As an example, the following standard Arduino functions are available in lua scripts as bindings:
* *pinMode()*
* *digitalWrite()*
* *delay()*
* *millis()*
* *print()* which redirects to *Serial.println()*
## Installation into the Arduino IDE
Download the content of this Github repository as a ZIP archive by clicking on *Clone or download* then *Download ZIP*. Follow the instructions on [installing additional Arduino libraries](https://www.arduino.cc/en/Guide/Libraries#toc4) and navigate to the file downloaded previously.
## Arduino sketch examples
After installing the library, some sketch examples are available from the *File* menu, then *Examples* and finally under *ESP8266-Arduino-Lua*. The examples include **ExecuteScriptFromSerial** which takes a lua script from the serial line and executes it:
```
# Enter the lua script and press Control-D when finished:
print("My first test!")
# Executing script:
My first test!
# Enter the lua script and press Control-D when finished:
print("Current uptime: "..millis())
# Executing script:
Current uptime: 159926.0
```
## Lua script examples
The lua language syntax is described in the [reference manual](https://www.lua.org/manual/). It is extended by the Arduino functions listed above.
### Hello world
```
print("Hello world!")
```
### Blinking LED
```
pinLED = 2
period = 500
pinMode(pinLED, OUTPUT)
while(true)
do
print("LED on")
digitalWrite(pinLED, LOW)
delay(period)
print("LED off")
digitalWrite(pinLED, HIGH)
delay(period)
end
```