kopia lustrzana https://github.com/peterhinch/micropython-nano-gui
101 wiersze
4.1 KiB
Markdown
101 wiersze
4.1 KiB
Markdown
|
# Adafruit and other OLED displays
|
||
|
|
||
|
###### [Main README](../README.md)
|
||
|
|
||
|
# SPI Pin names and wiring
|
||
|
|
||
|
The names used on the Pyboard are the correct names for SPI signals. Some OLED
|
||
|
displays use different names. Adafruit use abbreviated names where space is at
|
||
|
a premium. The following table shows the correct names followed by others I
|
||
|
have seen. The column labelled "Adafruit" references pin numbers on the 1.27
|
||
|
and 1.5 inch displays. Pin numbering on the 0.96 inch display differs: pin
|
||
|
names are as below (SCK is CLK on this unit).
|
||
|
|
||
|
Pyboard pins are for SPI(1). Adapt for SPI(2) or other hardware.
|
||
|
|
||
|
| Pin | Pyboard | Display | Adafruit | Alternative names |
|
||
|
|:---:|:-------:|:-------:|:--------:|:---------:|
|
||
|
| 3V3 | 3V3 | | Vin (10) | |
|
||
|
| Gnd | Gnd | | Gnd (11) | |
|
||
|
| X1 | X1 | | DC (3) | |
|
||
|
| X2 | X2 | | CS (5) | OC OLEDCS |
|
||
|
| X3 | X3 | | Rst (4) | R RESET |
|
||
|
| X6 | SCK | SCK | CL (2) | SCK CLK |
|
||
|
| X8 | MOSI | MOSI | SI (1) | DATA SI |
|
||
|
| X7 | MISO | MISO | SO (7) | MISO (see below) |
|
||
|
| X21 | X21 | | SC (6) | SDCS (see below) |
|
||
|
|
||
|
The last two pins above are specific to Adafruit 1.27 and 1.5 inch displays and
|
||
|
only need to be connected if the SD card is to be used. The pin labelled CD on
|
||
|
those displays is a card detect signal; it can be ignored. The pin labelled 3Vo
|
||
|
is an output: these displays can be powered from +5V.
|
||
|
|
||
|
Pyboard pins are arbitrary with the exception of MOSI, SCK and MISO. These can
|
||
|
be changed if software SPI is used.
|
||
|
|
||
|
# I2C pin names and wiring
|
||
|
|
||
|
I2C is generally only available on monochrome displays. Monochrome OLED panels
|
||
|
typically use the SSD1306 chip which is
|
||
|
[officially supported](https://github.com/micropython/micropython/blob/master/drivers/display/ssd1306.py).
|
||
|
At the time of writing (Sept 2018) this works only with software SPI. See
|
||
|
[this issue](https://github.com/micropython/micropython/pull/4020). Wiring
|
||
|
details:
|
||
|
|
||
|
| Pin | Pyboard | Display |
|
||
|
|:---:|:-------:|:-------:|
|
||
|
| 3V3 | 3V3 | Vin |
|
||
|
| Gnd | Gnd | Gnd |
|
||
|
| Y9 | SCL | CLK |
|
||
|
| Y10 | SDA | DATA |
|
||
|
|
||
|
Typical initialisation on a Pyboard:
|
||
|
```python
|
||
|
pscl = machine.Pin('Y9', machine.Pin.OPEN_DRAIN)
|
||
|
psda = machine.Pin('Y10', machine.Pin.OPEN_DRAIN)
|
||
|
i2c = machine.I2C(scl=pscl, sda=psda)
|
||
|
```
|
||
|
|
||
|
# Adafruit - use of the onboard SD card
|
||
|
|
||
|
If the SD card is to be used, the official `scdard.py` driver should be
|
||
|
employed. This may be found
|
||
|
[here](https://github.com/micropython/micropython/tree/master/drivers/sdcard).
|
||
|
Note that `sdtest.py` initialises the SPI bus before accessing the SD card.
|
||
|
This is necessary because the display drivers use a high baudrate unsupported
|
||
|
by SD cards. Ensure applications do this before the first SD card access and
|
||
|
before subsequent ones if the display has been refreshed.
|
||
|
|
||
|
# Hardware note: SPI clock rate
|
||
|
|
||
|
For performance reasons the drivers for the Adafruit color displays run the SPI
|
||
|
bus at a high rate (currently 10.5MHz). Leads should be short and direct. An
|
||
|
attempt to use 21MHz failed. The datasheet limit is 20MHz. Whether a 5%
|
||
|
overclock caused this is moot: with very short leads or a PCB this might well
|
||
|
work. Note that the Pyboard hardware SPI supports only 10.5MHz and 21MHz.
|
||
|
|
||
|
In practice the 41ms update time is visually fast for most purposes except some
|
||
|
games.
|
||
|
|
||
|
# Notes on OLED displays
|
||
|
|
||
|
## Power consumption
|
||
|
|
||
|
The power consumption of OLED displays is roughly proportional to the number
|
||
|
and brightness of illuminated pixels. I tested a 1.27 inch Adafruit display
|
||
|
running the `clock.py` demo. It consumed 19.7mA. Initial current with screen
|
||
|
blank was 3.3mA.
|
||
|
|
||
|
## Wearout
|
||
|
|
||
|
OLED displays suffer gradual loss of luminosity over long periods of
|
||
|
illumination. Wikipedia refers to 15,000 hours for significant loss, which
|
||
|
equates to 1.7 years of 24/7 usage. However it also refers to fabrication
|
||
|
techniques which ameliorate this which implies the likelihood of better
|
||
|
figures. I have not seen figures for the Adafruit displays.
|
||
|
|
||
|
Options are to blank the display when not required, or to design screens where
|
||
|
the elements are occasionally moved slightly to preserve individual pixels.
|
||
|
|
||
|
###### [Main README](../README.md)
|