summaryrefslogtreecommitdiff
path: root/ssd1306.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ssd1306.lua')
-rw-r--r--ssd1306.lua12
1 files changed, 8 insertions, 4 deletions
diff --git a/ssd1306.lua b/ssd1306.lua
index 2ab3491..a6e4cd3 100644
--- a/ssd1306.lua
+++ b/ssd1306.lua
@@ -40,7 +40,7 @@ function ssd1306.init(width, height)
s_COM_PIN_CFG, height == 32 and 0x02 or 0x12, s_DISP_CLK_DIV, 0x80,
s_PRECHARGE, 0x88, s_VCOM_DESEL, 0x30, s_CONTRAST, 0x80, s_ENTIRE_ON,
s_NORM_INV, s_CHARGE_PUMP, 0x14, s_DISP + 0x01, s_COL_ADDR, 0, 127,
- s_PAGE_ADDR, 0, 7}
+ s_PAGE_ADDR, 0, height/8-1}
for i, v in ipairs(tab) do
ssd1306.wc(v)
end
@@ -55,9 +55,13 @@ end
function ssd1306.show(fb)
local txbuf = {0x40}
- for i = 1, ssd1306.w * ssd1306.h / 8, 128 do
- for j = 0, 127 do
- txbuf[j+2] = fb[i+j] or 0
+ for i = 1, ssd1306.w * ssd1306.h / 32, 32 do
+ for j = 0, 31 do
+ local dw = fb[i+j] or 0
+ for k = 2, 5 do
+ txbuf[j*4+k] = bit.band(dw, 0xff)
+ dw = bit.rshift(dw, 8)
+ end
end
ssd1306.wd(txbuf)
end