From 1d6d8f4d116ce4e80af671c876d2e082aae69863 Mon Sep 17 00:00:00 2001
From: Daniel Eichhorn <dani.eichhorn@squix.ch>
Date: Mon, 30 May 2016 07:48:28 +0200
Subject: [PATCH] Added section about hardware abstraction

---
 README.md | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index afe8344..d9ca73c 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ You can either download this library as a zip file and unpack it to your Arduino
 
 ## Credits
 Many thanks go to Fabrice Weinberg (@FWeinb) for optimizing and refactoring the UI library.
-The init sequence for the SSD1306 was inspired by Adafruits library for the same display.
+The init sequence for the SSD1306 was inspired by Adafruit's library for the same display.
 
 ## Usage
 
@@ -38,9 +38,39 @@ Choose the font family, style and size, check the preview image and if you like
 
 ![FontTool](https://github.com/squix78/esp8266-oled-ssd1306/raw/master/resources/FontTool.png)
 
+## Hardware Abstraction
+
+The library supports different protocols to access the OLED display. Currently there is support for I2C using the built in Wire.h library, I2C by using the much faster BRZO I2C library [https://github.com/pasko-zh/brzo_i2c] written in assembler and it also supports displays which come with the SPI interface.
+
+### I2C with Wire.h
+
+```C++
+#include <Wire.h>  
+#include "SSD1306.h"
+
+SSD1306  display(ADDRESS, SDA, SDC);
+```
+
+### I2C with brzo_i2c
+
+```C++
+#include <brzo_i2c.h>
+#include "SSD1306Brzo.h"
+
+SSD1306Brzo display(ADDRESS, SDA, SDC);
+```
+### SPI
+
+```C++
+#include <SPI.h>
+#include "SSD1306Spi.h"
+
+SSD1306Spi        display(RES, DC, CS);
+```
 
 ## API
 
+
 ### Display Control
 
 ```C++
-- 
GitLab