From ea73eef3149d47f5b88eda0c71b48f84031e5aef Mon Sep 17 00:00:00 2001 From: Lukian Date: Thu, 23 Jan 2025 14:15:44 +0100 Subject: [PATCH] Add autorun and screen management functionality --- autorun.lua | 1 + main.lua | 4 +++ screen.lua | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 autorun.lua create mode 100644 main.lua create mode 100644 screen.lua diff --git a/autorun.lua b/autorun.lua new file mode 100644 index 0000000..20ffb90 --- /dev/null +++ b/autorun.lua @@ -0,0 +1 @@ +dofile("main.lua") \ No newline at end of file diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..8f24e06 --- /dev/null +++ b/main.lua @@ -0,0 +1,4 @@ +dofile("screen.lua") + +-- connecte l'écran sur les pins 18 et 19 +attachscreen(18, 19, 0x3C) diff --git a/screen.lua b/screen.lua new file mode 100644 index 0000000..a127a76 --- /dev/null +++ b/screen.lua @@ -0,0 +1,73 @@ +function attachscreen(sda, scl, i2cadd) + try ( + function () + i2c.setpins(0,sda,scl) + gdisplay.attach(gdisplay.SSD1306_128_64, gdisplay.LANDSCAPE, false, i2cadd) + gdisplay.clear() + gdisplay.setfont(gdisplay.FONT_LCD) + gdisplay.setwrap(false) + end, + + function (where, line, error, message) + print("Couldn't attach the screen.\nError in "..where.." at "..line.." "..error..": "..message) + end, + + function () end + ) +end + +local consolepos = 0 +local consoletab = {} +local consolemax = 6 +local oledflip = 1 + +function flip() + oledflip = oledflip+1; if oledflip > 3 then oledflip = 0 end + if oledflip==0 then + consolemax = 6 + gdisplay.attach(gdisplay.SSD1306_128_64, gdisplay.LANDSCAPE_FLIP, false, i2cadd) + elseif oledflip==1 then + consolemax = 6 + gdisplay.attach(gdisplay.SSD1306_128_64, gdisplay.LANDSCAPE, false, i2cadd) + elseif oledflip==2 then + consolemax = 13 + gdisplay.attach(gdisplay.SSD1306_128_64, gdisplay.PORTRAIT, false, i2cadd) + else + consolemax = 13 + gdisplay.attach(gdisplay.SSD1306_128_64, gdisplay.PORTRAIT_FLIP, false, i2cadd) + end + cls() +end + +function cls() + if (consolemax==6) then gdisplay.clear() + else + gdisplay.rect( {0,0}, 128, 9*consolemax, {0,0,0}, {0,0,0} ) + end + if oledflip ~= 1 then gdisplay.clear() end + consolepos = 0 + consoletab={} + for i=0, consolemax do + consoletab[i] = "" + end +end + +function console(msg) + if (consolepos <= consolemax) then + consoletab[consolepos] = msg + gdisplay.write({0, consolepos*9},msg) + consolepos = consolepos+1 + else + for i = 1, consolemax do + consoletab[i-1] = consoletab[i] + end + consoletab[consolemax] = msg + if (consolemax==6) then gdisplay.clear() + else + gdisplay.rect( {0,0}, 128, 9*consolemax+9, {0,0,0}, {0,0,0} ) + end + for i=0, consolemax do + gdisplay.write({0, i*9},consoletab[i]) + end + end +end