diff options
Diffstat (limited to 'ssd1306.lua')
-rw-r--r-- | ssd1306.lua | 12 |
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 |