diff --git a/README.md b/README.md index 35c5d127..dcda1970 100644 --- a/README.md +++ b/README.md @@ -330,3 +330,33 @@ cu:send("hello") ds18b20 = nil package.loaded["ds18b20"]=nil ``` + +####Operate a display via I2c with u8glib +u8glib is a graphics library with support for many different displays. +The integration in nodemcu is developed for SSD1306 based display attached via the I2C port. Further display types and SPI connectivity will be added in the future. + +#####I2C connection +Hook up SDA and SCL to any free GPIOs. Eg. [lua_examples/graphics_test.lua](https://github.com/devsaurus/nodemcu-firmware/blob/dev/lua_examples/graphics_test.lua) expects SDA=5 (GPIO14) and SCL=6 (GPIO12). They are used to set up nodemcu's I2C driver before accessing the display: +```lua +sda = 5 +scl = 6 +i2c.setup(0, sda, scl, i2c.SLOW) +``` + +#####Library usage +The Lua bindings for this library closely follow u8glib's object oriented C++ API. Based on the u8g class, you create an object for your display type: +```lua +sla = 0x3c +disp = u8g.ssd1306_128x64_i2c(sla) +``` +This object provides all of u8glib's methods to control the display. +Again, refer to [lua_examples/graphics_test.lua](https://github.com/devsaurus/nodemcu-firmware/blob/dev/lua_examples/graphics_test.lua) to get an impression how this is achieved with Lua code. Visit the [u8glib homepage](https://code.google.com/p/u8glib/) for technical details. + +#####Fonts +u8glib comes with a wide range of fonts for small displays. Since they need to be compiled into the firmware image, you'd need to include them in [app/include/user_config.h](https://github.com/devsaurus/nodemcu-firmware/blob/dev/app/include/user_config.h) and recompile. Simply add the desired fonts to the font table: +```c +#define U8G_FONT_TABLE \ + U8G_FONT_TABLE_ENTRY(font_6x10) \ + U8G_FONT_TABLE_ENTRY(font_chikita) +``` +They'll be available as `u8g.` in Lua.