annotate README.md @ 9:21eb7e575820 draft default tip

Fix offset when mirroring in uc1701x
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Thu, 22 Mar 2018 03:05:09 +0100
parents 3d7d948fc7e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
1 MicroPython OLED
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
2 ================
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
3
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
4 This is a collection of drivers for handling monochrome OLED displays. There
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
5 are many versions of such drivers, and there is even a driver for the SSD1306
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
6 included in MicroPython's repository, but I decided to make my own, because I
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
7 needed something a little bit more optimized.
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
8
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
9 To conserve memory, each version of each driver is in a separate self-contained
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
10 file that you need to copy to your board. There is no inheritance and no
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
11 multiple imports -- I'm only using the build-in `framebuf` module. Of course
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
12 that means there is some repetition between the different drivers, but that's a
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
13 price I'm willing to pay. There are also no constants that would need to be
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
14 converted to bytes before sending -- I'm using raw byte strings everywhere.
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
15
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
16 To make it fast, I'm calling MicroPython's built-in functions directly, without
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
17 wrapping them into convenience functions. I'm also only allocating any memory
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
18 once, at the beginning, and then re-using those buffers for everything.
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
19
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
20 Finally, I have added some convenience functions for flipping and mirroring the
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
21 display, reversing its colors, hardware scrolling, setting contrast and
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
22 switching it off and on.
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
23
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
24 There are no drawing functions on the display object itself, they are available
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
25 on the frame buffer object, available as the `fb` attribute.
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
26
0
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
27 Examples
1
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
28 ========
0
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
29
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
30 SH1106 I2C Example
1
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
31 ------------------
0
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
32
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
33 ```python
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
34 import sh1106_i2c
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
35 from machine import I2C, Pin
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
36
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
37 i2c = I2C(-1, sda=Pin(4), scl=Pin(5), freq=400000)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
38 d = sh1106_i2c.Display(i2c)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
39 d.fb.fill(1)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
40 d.fb.pixel(64, 32, 0)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
41 d.update()
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
42 ```
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
43
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
44 SH1106 SPI Example
1
3d7d948fc7e9 Add more docs
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents: 0
diff changeset
45 ------------------
0
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
46
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
47 ```python
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
48 import sh1106_spi
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
49 from machine import SPI, Pin
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
50
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
51 spi = SPI(1, baudrate=20000000)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
52 dc = Pin(12, Pin.OUT)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
53 cs = Pin(15, Pin.OUT)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
54 d = sh1106_spi.Display(spi, dc, cs)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
55 d.fb.fill(1)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
56 d.fb.pixel(64, 32, 0)
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
57 d.update()
a28b87ff3a97 Initial commit
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
58 ```