[SOLVED] SSD1306 with SPI?
It appears the ssd1306 driver (https://github.com/micropython/micropython/blob/master/drivers/display/ssd1306.py) isn't working for WiPy. I've had to modify the driver to change pin.high() -> pin.value(1) and pin.low() -> pin.value(0) but clearly there is something else going on.
I have an Adafruit 128x32 OLED SSD1306 display wired to my WiPy 2.0 (via Expansion Board) as follows:
This is the code I am using to test. I get nothing - no errors, nothing on the screen. Is it wired correctly? Something else messed up?
from machine import SPI, Pin
from ssd1306 import SSD1306_SPI as ssd
spi = SPI(0, SPI.MASTER, baudrate=100000, polarity=0, phase=0)
o = ssd(128,32,spi,Pin('P5'),Pin('P6'),Pin('P7'))
The OLED is good as I've used it with the Pyboard and it works. Just not with the WiPy.
I may be able to figure out what is wrong with the driver if I had a working SPI driver to compare. Anyone know of an SPI that actually works with the WiPy? Of any kind?
Those pins are connected to the LoRa chip (SX1272) using SPI so you may see unexpected behaviour
@jmarcelino i was thinking more generally, using P5, 6 and 7 on a LoPy - if it is OK to use these pins? On the official pinout sheet, they have exclamation marks and no pin names like the rest.. but it seems to work when I control an LED with one of them, I just had some strange behaviour while trying to use a color sensor
@jmarcelino is it totally out of the question to use pin 5, 6 and 7 for any I/O purpose at all?
Thanks for the tip and confirming it works! I have fixed the problem by upgrading the firmware to 1.9.1 and it fixed the problem. Aaahhh...better. :)
It does work for me but I use different pins than yours as I don't own any WiPy and on the SiPy/LoPy the signalling pins you use are reserved.
I setup mine as
disp = ssd(128,32,spi,Pin('P9'),Pin('P8'),Pin('P22'))
Yep, tried that too. Still doesn't work. Have verified it (still) works with Pyboard.