From 888772a4aff8d290ac508d3c7ce4040dfbe8cf48 Mon Sep 17 00:00:00 2001 From: hypercubed-music <54119782+hypercubed-music@users.noreply.github.com> Date: Thu, 20 Aug 2020 21:59:54 -0400 Subject: [PATCH 1/5] Added Arduino functions --- src/arduino_functions.h | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/arduino_functions.h diff --git a/src/arduino_functions.h b/src/arduino_functions.h new file mode 100644 index 0000000..ef709e6 --- /dev/null +++ b/src/arduino_functions.h @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include + +static int l_pinMode(lua_State *L) { + double pin = lua_tonumber(L, 1); + double mode = lua_tonumber(L, 2); + pinMode((int)pin, (int)mode); + return 0; +} + +static int l_digitalWrite(lua_State *L) { + double pin = lua_tonumber(L, 1); + double state = lua_tonumber(L, 2); + digitalWrite((int)pin, (int)state); + return 0; +} + +static int l_digitalRead(lua_State *L) { + double pin = lua_tonumber(L, 1); + lua_pushnumber(L, digitalRead((int)pin)); + return 1; +} + +static int l_analogRead(lua_State *L) { + double pin = lua_tonumber(L, 1); + lua_pushnumber(L, analogRead(pin)); + return 1; +} + +static int l_analogWrite(lua_State *L) { + double pin = lua_tonumber(L, 1); + double value = lua_tonumber(L, 2); + analogWrite((int)pin, (int)value); + return 0; +} + +static int l_millis(lua_State *L) { + lua_pushnumber(L, millis()); + return 1; +} + +static const struct luaL_reg arduinolib [] = { + {"pinMode", l_pinMode}, + {"digitalWrite", l_digitalWrite}, + {"digitalRead", l_digitalRead}, + {"millis", l_millis}, + {"analogRead", l_analogRead}, + {"analogWrite", l_analogWrite}, + {NULL, NULL} /* sentinel */ +}; + +int luaopen_arduino(lua_State *L) { + lua_register(L, "pinMode", l_pinMode); + lua_register(L, "digitalWrite", l_digitalWrite); + lua_register(L, "digitalRead", l_digitalRead); + lua_register(L, "millis", l_millis); + lua_register(L, "analogRead", l_analogRead); + lua_register(L, "analogWrite", l_analogWrite); +} \ No newline at end of file From 9d344102f47d2063c85c594d7f262f56ec9a6635 Mon Sep 17 00:00:00 2001 From: hypercubed-music <54119782+hypercubed-music@users.noreply.github.com> Date: Thu, 20 Aug 2020 22:00:26 -0400 Subject: [PATCH 2/5] oops wrong folder --- src/arduino_functions.h | 62 ----------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 src/arduino_functions.h diff --git a/src/arduino_functions.h b/src/arduino_functions.h deleted file mode 100644 index ef709e6..0000000 --- a/src/arduino_functions.h +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include -#include -#include - -static int l_pinMode(lua_State *L) { - double pin = lua_tonumber(L, 1); - double mode = lua_tonumber(L, 2); - pinMode((int)pin, (int)mode); - return 0; -} - -static int l_digitalWrite(lua_State *L) { - double pin = lua_tonumber(L, 1); - double state = lua_tonumber(L, 2); - digitalWrite((int)pin, (int)state); - return 0; -} - -static int l_digitalRead(lua_State *L) { - double pin = lua_tonumber(L, 1); - lua_pushnumber(L, digitalRead((int)pin)); - return 1; -} - -static int l_analogRead(lua_State *L) { - double pin = lua_tonumber(L, 1); - lua_pushnumber(L, analogRead(pin)); - return 1; -} - -static int l_analogWrite(lua_State *L) { - double pin = lua_tonumber(L, 1); - double value = lua_tonumber(L, 2); - analogWrite((int)pin, (int)value); - return 0; -} - -static int l_millis(lua_State *L) { - lua_pushnumber(L, millis()); - return 1; -} - -static const struct luaL_reg arduinolib [] = { - {"pinMode", l_pinMode}, - {"digitalWrite", l_digitalWrite}, - {"digitalRead", l_digitalRead}, - {"millis", l_millis}, - {"analogRead", l_analogRead}, - {"analogWrite", l_analogWrite}, - {NULL, NULL} /* sentinel */ -}; - -int luaopen_arduino(lua_State *L) { - lua_register(L, "pinMode", l_pinMode); - lua_register(L, "digitalWrite", l_digitalWrite); - lua_register(L, "digitalRead", l_digitalRead); - lua_register(L, "millis", l_millis); - lua_register(L, "analogRead", l_analogRead); - lua_register(L, "analogWrite", l_analogWrite); -} \ No newline at end of file From 47e7ff4b4b807a0d0818000d581b1359753979f2 Mon Sep 17 00:00:00 2001 From: hypercubed-music <54119782+hypercubed-music@users.noreply.github.com> Date: Thu, 20 Aug 2020 22:00:50 -0400 Subject: [PATCH 3/5] Added Arduino functions --- src/lua/arduino_functions.h | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/lua/arduino_functions.h diff --git a/src/lua/arduino_functions.h b/src/lua/arduino_functions.h new file mode 100644 index 0000000..ef709e6 --- /dev/null +++ b/src/lua/arduino_functions.h @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include + +static int l_pinMode(lua_State *L) { + double pin = lua_tonumber(L, 1); + double mode = lua_tonumber(L, 2); + pinMode((int)pin, (int)mode); + return 0; +} + +static int l_digitalWrite(lua_State *L) { + double pin = lua_tonumber(L, 1); + double state = lua_tonumber(L, 2); + digitalWrite((int)pin, (int)state); + return 0; +} + +static int l_digitalRead(lua_State *L) { + double pin = lua_tonumber(L, 1); + lua_pushnumber(L, digitalRead((int)pin)); + return 1; +} + +static int l_analogRead(lua_State *L) { + double pin = lua_tonumber(L, 1); + lua_pushnumber(L, analogRead(pin)); + return 1; +} + +static int l_analogWrite(lua_State *L) { + double pin = lua_tonumber(L, 1); + double value = lua_tonumber(L, 2); + analogWrite((int)pin, (int)value); + return 0; +} + +static int l_millis(lua_State *L) { + lua_pushnumber(L, millis()); + return 1; +} + +static const struct luaL_reg arduinolib [] = { + {"pinMode", l_pinMode}, + {"digitalWrite", l_digitalWrite}, + {"digitalRead", l_digitalRead}, + {"millis", l_millis}, + {"analogRead", l_analogRead}, + {"analogWrite", l_analogWrite}, + {NULL, NULL} /* sentinel */ +}; + +int luaopen_arduino(lua_State *L) { + lua_register(L, "pinMode", l_pinMode); + lua_register(L, "digitalWrite", l_digitalWrite); + lua_register(L, "digitalRead", l_digitalRead); + lua_register(L, "millis", l_millis); + lua_register(L, "analogRead", l_analogRead); + lua_register(L, "analogWrite", l_analogWrite); +} \ No newline at end of file From b43283c4a6cf61cdbd0975cd69de16ce475b007d Mon Sep 17 00:00:00 2001 From: hypercubed-music <54119782+hypercubed-music@users.noreply.github.com> Date: Thu, 20 Aug 2020 22:01:24 -0400 Subject: [PATCH 4/5] Implemented Arduino functions into Lua --- src/LuaArduino.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/LuaArduino.cpp b/src/LuaArduino.cpp index 712f3b4..57ca590 100644 --- a/src/LuaArduino.cpp +++ b/src/LuaArduino.cpp @@ -1,5 +1,6 @@ #include "LuaArduino.h" #include "Arduino.h" +#include "lua/arduino_functions.h" // static class in and out objects Stream* Lua::in = nullptr; @@ -42,6 +43,18 @@ void Lua::initState() { // Clear the stack lua_settop(L, 0); + + //open Arduino libraries + luaopen_arduino(getState()); + + //Add Arduino variables + const char arduino_vars[] = + "LOW = 0\n" + "HIGH = 1\n" + "INPUT = 0\n" + "OUTPUT = 1\n" + "INPUT_PULLUP = 2\n"; + loadString(arduino_vars); } @@ -75,15 +88,15 @@ void Lua::loadString(const char lbuff[]) { } const char help_function[] = "function help ()\n" -" print('=== Lua Help =========================')\n" +" print('===== Lua Help ======')\n" " print()\n" " print('RAM Usage: ')\n" -" print(\" print(collectgarbage'count')\")\n" +" print(\"collectgarbage'count'\")\n" " print()\n" -" print('Force garbage collection: ')\n" -" print(\" collectgarbage'collect'\")\n" +" print('Garbage collection: ')\n" +" print(\"collectgarbage'collect'\")\n" " print()\n" -" print('Use EOT (Ctrl-D in miniterm.py) to exec code')\n" +" print('Ctrl-D to exec code')\n" " print()\n" "end\n"; From 0c65c8852f3b1ee2384018dc571eaeb4675a5554 Mon Sep 17 00:00:00 2001 From: hypercubed-music <54119782+hypercubed-music@users.noreply.github.com> Date: Sun, 23 Aug 2020 13:09:15 -0400 Subject: [PATCH 5/5] More arduino functions --- src/lua/arduino_functions.h | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/lua/arduino_functions.h b/src/lua/arduino_functions.h index ef709e6..822f4fe 100644 --- a/src/lua/arduino_functions.h +++ b/src/lua/arduino_functions.h @@ -1,8 +1,9 @@ #include -#include -#include #include -#include +#include + +#ifndef arduino_functions_h +#define arduino_functions_h static int l_pinMode(lua_State *L) { double pin = lua_tonumber(L, 1); @@ -42,6 +43,25 @@ static int l_millis(lua_State *L) { return 1; } +static int l_delay(lua_State *L) { + double length = lua_tonumber(L, 1); + delay((long)length); + return 0; +} + +static int l_tone(lua_State *L) { + double pin = lua_tonumber(L,1); + double freq = lua_tonumber(L,2); + tone((int)pin, (int)freq); + return 0; +} + +static int l_noTone(lua_State *L) { + double pin = lua_tonumber(L, 1); + noTone((int)pin); + return 0; +} + static const struct luaL_reg arduinolib [] = { {"pinMode", l_pinMode}, {"digitalWrite", l_digitalWrite}, @@ -59,4 +79,9 @@ int luaopen_arduino(lua_State *L) { lua_register(L, "millis", l_millis); lua_register(L, "analogRead", l_analogRead); lua_register(L, "analogWrite", l_analogWrite); -} \ No newline at end of file + lua_register(L, "delay", l_delay); + lua_register(L, "tone", l_tone); + lua_register(L, "noTone", l_noTone); +} + +#endif \ No newline at end of file