micropython tft display libraries for sale

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot pip install MicroPython libraries. See the MicroPython docs for more information on managing packages with MicroPython.
ucrypto - MicroPython package for doing fast RSA and elliptic curve cryptography, specifically digital signatures. ECDSA API design inspired from fastecdsa and implementation based on tomsfastmath.
MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
micropython-captiveportal - Minimal async captive portal for MicroPython (compatible with uasyncio v3/MicroPython 1.13+ as well as earlier versions).
sensor-mqtt-homeassistant - An ESP8266/ESP32 MicroPython-based sensor platform for GPIO, DHT, analog, LED and more. Includes remote updates for .py code from web server and MQTT/Home Assistant integration.
MicroWebSrv - A micro HTTP web server that supports WebSockets, HTML/Python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
MicroWebSrv2 - The last micro web server for IoTs (MicroPython) or large servers (CPython), that supports WebSocket, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
micropython-nano-gui - A tiny display-only GUI with a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. With drivers for TFT, ePaper and OLED displays.
micropython-rgbled - This wrapper module aims to reduce the work needed to work with NeoPixel (WS2812) and DotStar (APA102) RGB LED strips and matrixes.
MicroPython-SN74HCS264 - MicroPython Driver for SN74HCS264 8-Bit Parallel-Out Serial Shift Registers With Schmitt-Trigger Inputs and Inverted Outputs.
ADXL345_spi_micropython - Library for interacting through the SPI protocol with an "Analog Devices ADXL345" accelerometer from an MCU flashed with MicroPython.
MicroWorkers - A micro workers class that easily manages a pool of threads to optimise simultaneous jobs and jobs endings, for MicroPython (used on Pycom modules & ESP32).
micropython-package-template - GitHub workflow supported MicroPython package template with deploys to the Python Package Index on a push to the main branch and test deploys to the Test Python Package Index on PRs.
BIPES - Web-based IDE for MicroPython with file manager, editor, code generation from blocks, IoT dashboard and Serial/USB/Bluetooth/WebREPL console on the web browser. Source: https://github.com/BIPES.

Unfortunately, this device does not use SPI and I have no other choice to use the 8-bit parallel interface. The circuitpython displayio library seems to offer a parallel bus driver but I do not find anything equivalent for micropython.
Since i was able to have this TFT screen running fine witn my ESP32 Devkit (ESP32-WROOM-32 chip) with the arduino framework, I know it uses an ILI9341 parallel bus. I"d really like to have it running with micropython, using the same board.
I am far from being an expert in micropython (and coding in general) and i"m trying to understand the way your driver is working. I see you are using viper code and I guess the purpose is to achieve the pixel operations in a reduced time (I think if not it would take ages to get a drawing/picture).
It uses 4-bit color to minimise the size of the frame buffer because of the relatively large size of the display. The color value has to be expanded to 16 bits at runtime which is time consuming hence the Viper code. You would need to retain this feature. 4-bit color does limit the capabilities of the display: you aren"t going to be able to display pictures, but it works well with my GUI designs which use a limited set of colors.
@peter : Thank you for the hints. I still do not really understand how to rewrite the "write" function. Do you mean I could listen to the command using a scope or a logic analyzer and then cut the SPI sequence in an appropriate way to send it in 8 different parts to the data pins of my TFT using 8 available pins of my board? (-> that"s what "parallel" means, right ?)
Since I"m here, and I have this TFT running with the Arduino framework using the MCUfriend driver, I could listen to all ports using various commands and rewrite everything from scratch, do you think that could be done?
I started coding an IL9341 TFT driver using parallel interface. I did not use the piece of code suggested by peter, but I started from the MCUFriend_kbv driver written in C for the arduino framework, since I had it running on my ESP32 board. This avoid any source of erors since I"m using the exact same board and identical pins. What I do is basically tranlate, one function after another, the methods writen in C into micropython scripts.
Since I have now a logic analyzer (Yes!) I can see that speeds are significantly different between the arduino C driver and the Micropython method. (nanoseconds vs microseconds)
Since I have now an operational method to send commands and data to my TFT, and to received data from it. I"am currently experimenting and understanding the use of the TFT ILI9341 driver datasheet (available here). As you can see, rewriting it all from scratch is just a way to learn, and from there i will play with the speed using different method. I understood that, to use assembly, I will have to change to another board, maybe a pi pico since I ordered one.

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot pip install micropython libraries. See MicroPython docs for more information on upip.
MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
MicroWebSrv - A micro HTTP Web server that supports WebSockets, html/python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
MicroWebSrv2 - The last Micro Web Server for IoTs (MicroPython) or large servers (CPython), that supports WebSockets, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
micropython-nano-gui - Nano-Gui provides a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. Which includes LCD and OLED displays.

In this tutorial Tony Goodhew explains how to use the basic graphics procedures which are included in the display driver, and for the ambitious makers out there he also provides examples for advanced shapes and graphics!
All the other graphical and text objects we would like to display can be built from this single pixel instruction; such as lines, circles, rectangles, triangles and text strings at different sizes.
This is all carried out with code. Display manufacturers usually supply some of these procedures/methods but leave the rest up to the end user to construct.
At the top of our driver program we will always import a minimal set of libraries using this block at the top of our MicroPython script (we add even more later when we want to do advanced programs):
The third line here imports the Framebuffer library which includes several very useful routines to draw objects on the display. The garbage collection library, gc, has also been imported so that we can check how much memory is available.
Each program contains the screen driver code, sets up the buttons/joystick (if applicable), sets the width and height variables, loads the essential libraries, defines the colour (R, G, B) and clear (c) procedures, then displays some colour checking text like this:
Draw a dark grey rectangle in the centre of the screen. Draw 500 white pixels inside the square, none touching the edge. (Random was explained in the previous display tutorial.)
This is routine is very complicated. It splits the original triangle into two with a horizontal line and then fills them in. If you uncomment all the # lcd.show() lines and sleep instructions it will slow right down and you can see it working (unfortunately, the 2” display needs such a large buffer that there is not enough memory for the filled triangles code):
In the centre of the screen display a ‘bull’s eye’ circular target with a ‘gold’ centre, 4 other colours and scores 10, 8, 6, 4 and 2 written in the appropriate positions.
You may have noticed that on some screens the text is very small and difficult to read. In a following tutorial will add an extra font, with more characters, which we can display in different sizes.
This article was written by Tony Goodhew. Tony is a retired teacher of computing who starting writing code back in 1968 when it was called programming - he started with FORTRAN IV on an IBM 1130! An active Raspberry Pi community member, his main interests now are coding in MicroPython, travelling and photography.

There"s two ways you can use the 1.3" 240x240 display.Be aware that you can only choose to do one way at a time. If you choose the hard way, it will install the kernel driver, which will prevent you from doing it the easy way.
The easy way is to use "pure Python 3" and Pillow library to draw to the display from within Python. This is great for showing text, stats, images etc that you design yourself. If you want to do that, skip this page and go to the Python install/usage page
The hard way is to install a kernel module to add support for the TFT display that will make the console appear on the display. This is cute because you can have any program print text or draw to the framebuffer (or, say, with pygame) and Linux will take care of displaying it for you. If you don"t need the console or direct framebuffer access, please consider using the "pure Python" technique instead as it is not as delicate.
to shutdown the Pi safely. Remove power and attach the miniPiTFT. Watch that the pins plug into the first 2x12 headers! The rounded corner and mounting hole should line up.

If you"d like a compact color display, with buttons and a joystick - we"ve got what you"re looking for. The Adafruit 1.3" Color TFT Bonnet for Raspberry Pi is the big sister to Adafruit"s mini PiTFT add-ons. This bonnet has 240x240 color pixels in an IPS TFT display controlled over SPI. This display is super small, only about 1.3" diagonal, but since it is an IPS display, it"s very readable with high contrast and visibility.
With the TFT display in the center, there was some space on either side so Adafruit added a 5-way joystick and two pushbuttons. Great for when you want to have a control interface for your project.On the bottom, there is a Qwiic/STEMMA QT connector for I2C sensors and devices so you can plug and play any of our STEMMA QT devices.
Using the display is very easy, Adafruit has a kernel driver and Python library for the ST7789 chipset. You can set it up as a console output so you can have text and user interface through the Raspberry Pi OSoryou draw images, text, whatever you like, using the Python imaging library. Adafruit also has Python code you can use to read the joystick and buttons. Our tests showed ~15 FPS update rates so you can do animations or simple video.

In this guide we’re going to show you how you can use the 1.8 TFT display with the Arduino. You’ll learn how to wire the display, write text, draw shapes and display images on the screen.
The 1.8 TFT is a colorful display with 128 x 160 color pixels. The display can load images from an SD card – it has an SD card slot at the back. The following figure shows the screen front and back view.
This module uses SPI communication – see the wiring below . To control the display we’ll use the TFT library, which is already included with Arduino IDE 1.0.5 and later.
The TFT display communicates with the Arduino via SPI communication, so you need to include the SPI library on your code. We also use the TFT library to write and draw on the display.
In which “Hello, World!” is the text you want to display and the (x, y) coordinate is the location where you want to start display text on the screen.
The 1.8 TFT display can load images from the SD card. To read from the SD card you use the SD library, already included in the Arduino IDE software. Follow the next steps to display an image on the display:
Note: some people find issues with this display when trying to read from the SD card. We don’t know why that happens. In fact, we tested a couple of times and it worked well, and then, when we were about to record to show you the final result, the display didn’t recognized the SD card anymore – we’re not sure if it’s a problem with the SD card holder that doesn’t establish a proper connection with the SD card. However, we are sure these instructions work, because we’ve tested them.
In this guide we’ve shown you how to use the 1.8 TFT display with the Arduino: display text, draw shapes and display images. You can easily add a nice visual interface to your projects using this display.

This is a MicroPython library that provides the means for drawing sprites with tiled background on 16-bit SPI-based displays. It consists of a small part written in C that needs to be compiled into the firmware, and the rest written in Python, usually also included in the firmware as frozen modules.

We"ve expanded this how to and it now includes sections on drawing shapes and objects to the display, how to convert bitmap images for OLED displays and how to animate images.
The Raspberry Pi Pico has no shortage of options when it comes to digital displays. We can use LCD screens, output to VGA / DVI or use bespoke screens such as the Pico Display or Pico Explorer Base’s IPS display. But sometimes we need a small, cheap option to get the job done. OLEDscreens such as the 0.96 inch model used in this tutorial, are trivial to use with MicroPython and they cost only a few bucks (or pounds) making them ideal for projects.
In this tutorial, we will learn how to connect an OLED screen to a Raspberry Pi Pico via the I2C interface, then we will install a MicroPython library via the Thonny editor and learn how to use it to write text to the display.
The OLED screen uses the I2C protocol to interface with the Raspberry Pi Pico. Which means that we only require.A Raspberry Pi Pico running MicroPython
Simple shapes and lines can be drawn to the display with just a single command. Each of these commands will need oled.show() in order to be seen. Note that most of these methods have a color parameter but, with a monochrome screen, you’ll always put a color of “1” (0 means pixel off).oled.pixel(x,y,c): Draw a pixel at position x,y and uses c to set the color of the pixel, with 1 being lit, 0 being off. Example:oled.pixel(10,10,1)oled.hline(x,y,w,c):Draw a horizontal line from point x,y that has a set width (w) in pixels, and color ( c ). Example:oled.hline(2,3,4,1)oled.vline(x,y,h,c):Draw a vertical line from point x,y that has a set height (h) in pixels, and color ( c ). Example:oled.vline(0, 0, 64, 1)oled.line(x1,y1,x2,y2,1):Draw a diagonal line from points x1, y1 to x2, y2 with the color ( c ). Example:oled.line(0, 0, 128, 64, 1)oled.rect(x,y,w,h,c):Draw a rectangle starting at point x.y and for a set width (w) and height(h). Use ( c ) to set the color of the pixels. For example:oled.rect(0, 0, 64, 32, 1)oled.fill_rect(x,y,w,h,c): Draw a filled rectangle starting at point x.y and for a set width (w) and height(h) use ( c ) to set the color of the pixels. For example:oled.fill_rect(0, 0, 64, 32, 1)
Our object, TH, currently has no image to display. To create a bytearray of an image we first need a suitable image. The screen is 128 x 64 pixels in size, but an image 64 x 64 pixels will fit nicely into the center of the screen. The image must be in a JPEG format.
Creating an animation with the OLED display is a matter of moving or changing objects to give the illusion of movement. In the above GIF you can see the Tom’s Hardware hammer, and logo scrolling across the screen. To achieve this we used two byte arrays, for the hammer (TH) and the logo (LOGO).

In one previous blog postwe had first connected LCDs to the Raspberry Pi via GPIO pins as well as via I2C. However, these robust displays, each with 16 characters in two lines or 20 characters in four lines, are character-oriented. Thus, we can neither display an analog clock, or a pointer instrument for measured values, nor images. For this, we need either an OLED or a TFT display in mobile use. Here is a small overview:
Let"s start with the easier to handle bus system I2C and thus the OLED displays. The abbreviation OLED stands for organic light emitting diode. It is a luminous thin-film device made of organic semiconducting materials. The electrical current density and luminance are lower than those of conventional LEDs.
All OLED displays have the I2C address 0x3C. The second address 0x76 shown here belongs to the sensor BME-280, which is still connected from the last attempts.
For programming the display, you are well advised to install a program library for Python. The recommendation isluma.oledby Richard Hull and many others. This constantly evolving, very comprehensive collection of Python modules is suitable for a wide range of displays, which may differ in resolution and image controller. Those with a current Raspberry Pi OS can install the Python modules and a collection of sample programs directly on the Raspberry Pi (description follows). For those who want to go deeper or use other hardware configurations, the following links are recommended:
The documentation says that first you have to install more libraries (dependencies) and second for the user (so far pi, today self chosen user name) withsudo usermod -a -G spi,gpio,i2cusermust grant the user access rights for the interfaces. Both are no longer necessary with a current Raspberry Pi OS.
The library works with presets, namely I2C interface, address 0x3C, the image controller SSD1306 and the resolution 128x64. All these defaults apply to the 0.96" OLED display, which is displayed with the demo programdemo.pyworks right away. Simply in the terminal
This applies e.g. to the 1.3" OLED display, which uses the SH1106 as image controller. How to pass which parameters can be found out by using the help function. So first enter the parameter --help or -h. The program call for the 1.3" OLED display is therefore:
The 0.91" OLED display also uses the SSD1306, but it only has a resolution of 128x32 pixels. Before you connect this narrow displayn eshort warning:mn most cases the pin order on I2C devices is VCC-GND-SCL-SDA, not on the 0.91" OLED! The order here is GND-VCC-SCL-SDA. The program call is done with the parameter--height 32
If you need to pass several parameters permanently, you can also save them in a configuration file (file extension .conf). There is even a subdirectory conf under luma.examples, where for a number of displays these files already exist. I discover the file st7735.conf, i.e. for the image controller ST7735, which is installed in the 1.8" TFT display with SPI interface.
After everything had worked on the first try so far, I now get the error message that st7735 does not belong to the known displays, just the different OLED image controllers.
After some research - the documentation is unfortunately neither up to date nor complete - I find a hint in a forum that the examples work for almost all displays, but the library luma.oled only for the listed OLED displays. So install another library with pip:
After I have also installed the example programclock.pywith all displays in the terminal and tested it successfully, I would like to try out how these programs work in the Python environment, e.g. Thonny or IDLE.
As described above, there were no difficulties for the 0.96" OLED display, since there are no parameters to pass here. The example programs demo.py and clock.py work as desired.

This library is a professional graphical stack library to build Graphical User Interfaces (GUIs) with any STM32, any LCD/TFT display and any LCD/TFT controller, taking advantage of STM32 hardware accelerations whenever possible.
The STemWin Library is a comprehensive solution that comes with a rich feature set, such as JPG, GIF and PNG decoding, many widgets (checkboxes, buttons…) and a VNC server enabling the remote display of local displays, as well as professional development tools, such as GUIBuilder to create GUIs with a simple drag and drop.

I have a problem using this library. The only thing my display does so far is lighting up in a nice white. I am pretty new to python and GPIO so i can"t really complete the given data from the documentation to fullfill my needs.
What i need is a straight forward information on which pin on the display to connect to which pin on the raspberry pi 3b. What also would be great is information on which pins i can change in the code and which pins can be used for more than once in one project (like I2C or similar).
My hardware consists of a raspberry pi 3B and a red display (I dubble checked. It is the red "brother" to the black one shown in the first entry to this blog).
Ms.Josey
Ms.Josey