pull/7/merge
Russ Hughes 2023-11-18 15:31:25 -08:00
rodzic c7a42b61dc
commit ed10656969
47 zmienionych plików z 5870 dodań i 15677 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: c3ee77c984b40f5f1fa8edd7fd2d47af
config: 354224033269ae3498edec28eb943172
tags: 645f666f9bcd5a90fca523b33c5a78b7

Wyświetl plik

@ -10,10 +10,11 @@
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=01f34227"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
@ -24,11 +25,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="../index.html" class="icon icon-home"> st7789py
<a href="../index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -37,26 +42,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="../st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="../st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -85,8 +137,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Overview: module code</li>
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Overview: module code</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>

Wyświetl plik

@ -10,10 +10,11 @@
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=01f34227"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
@ -24,11 +25,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="../index.html" class="icon icon-home"> st7789py
<a href="../index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -37,26 +42,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="../st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="../st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="../examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -85,9 +137,9 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="index.html">Module code</a> &raquo;</li>
<li>st7789py</li>
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Module code</a></li>
<li class="breadcrumb-item active">st7789py</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
@ -98,12 +150,9 @@
<h1>Source code for st7789py</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Copyright (c) 2020, 2021 Russ Hughes</span>
<span class="sd">MIT License</span>
<span class="sd">This file incorporates work covered by the following copyright and</span>
<span class="sd">permission notice and is licensed under the same terms:</span>
<span class="sd">The MIT License (MIT)</span>
<span class="sd">Copyright (c) 2020-2023 Russ Hughes</span>
<span class="sd">Copyright (c) 2019 Ivan Belokobylskiy</span>
@ -114,30 +163,41 @@
<span class="sd">copies of the Software, and to permit persons to whom the Software is</span>
<span class="sd">furnished to do so, subject to the following conditions:</span>
<span class="sd">The above copyright notice and this permission notice shall be included in</span>
<span class="sd">all copies or substantial portions of the Software.</span>
<span class="sd">The above copyright notice and this permission notice shall be included in all</span>
<span class="sd">copies or substantial portions of the Software.</span>
<span class="sd">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="sd">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="sd">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="sd">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="sd">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span>
<span class="sd">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span>
<span class="sd">THE SOFTWARE.</span>
<span class="sd">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
<span class="sd">SOFTWARE.</span>
<span class="sd">The driver is based on devbis&#39; st7789py_mpy module from</span>
<span class="sd">https://github.com/devbis/st7789py_mpy.</span>
<span class="sd">This driver adds support for:</span>
<span class="sd">This driver supports:</span>
<span class="sd">- 320x240, 240x240 and 135x240 pixel displays</span>
<span class="sd">- 320x240, 240x240, 135x240 and 128x128 pixel displays</span>
<span class="sd">- Display rotation</span>
<span class="sd">- RGB and BGR color orders</span>
<span class="sd">- Hardware based scrolling</span>
<span class="sd">- Drawing text using 8 and 16 bit wide bitmap fonts with heights that are</span>
<span class="sd"> multiples of 8. Included are 12 bitmap fonts derived from classic pc</span>
<span class="sd"> BIOS text mode fonts.</span>
<span class="sd">- Drawing text using converted TrueType fonts.</span>
<span class="sd">- Drawing converted bitmaps</span>
<span class="sd">- Named color constants</span>
<span class="sd"> - BLACK</span>
<span class="sd"> - BLUE</span>
<span class="sd"> - RED</span>
<span class="sd"> - GREEN</span>
<span class="sd"> - CYAN</span>
<span class="sd"> - MAGENTA</span>
<span class="sd"> - YELLOW</span>
<span class="sd"> - WHITE</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -191,6 +251,9 @@
<span class="n">COLOR_MODE_18BIT</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x06</span><span class="p">)</span>
<span class="n">COLOR_MODE_16M</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x07</span><span class="p">)</span>
<span class="n">RGB</span> <span class="o">=</span> <span class="mh">0x00</span>
<span class="n">BGR</span> <span class="o">=</span> <span class="mh">0x08</span>
<span class="c1"># Color definitions</span>
<span class="n">BLACK</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x0000</span><span class="p">)</span>
<span class="n">BLUE</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x001F</span><span class="p">)</span>
@ -218,6 +281,8 @@
<span class="c1"># Rotation tables (width, height, xstart, ystart)[rotation % 4]</span>
<span class="n">SUPPORTED_RESOLUTIONS</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">320</span><span class="p">,</span><span class="mi">240</span><span class="p">),(</span><span class="mi">240</span><span class="p">,</span><span class="mi">240</span><span class="p">),(</span><span class="mi">240</span><span class="p">,</span><span class="mi">135</span><span class="p">),(</span><span class="mi">128</span><span class="p">,</span><span class="mi">128</span><span class="p">)]</span>
<span class="n">WIDTH_320</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">240</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
<span class="p">(</span><span class="mi">320</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
<span class="p">(</span><span class="mi">240</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
@ -233,12 +298,19 @@
<span class="p">(</span><span class="mi">135</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">53</span><span class="p">,</span> <span class="mi">40</span><span class="p">),</span>
<span class="p">(</span><span class="mi">240</span><span class="p">,</span> <span class="mi">135</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">52</span><span class="p">)]</span>
<span class="n">WIDTH_128</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
<span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
<span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
<span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]</span>
<span class="c1"># MADCTL ROTATIONS[rotation % 4]</span>
<span class="n">ROTATIONS</span> <span class="o">=</span> <span class="p">[</span><span class="mh">0x00</span><span class="p">,</span> <span class="mh">0x60</span><span class="p">,</span> <span class="mh">0xc0</span><span class="p">,</span> <span class="mh">0xa0</span><span class="p">]</span>
<div class="viewcode-block" id="color565"><a class="viewcode-back" href="../st7789py.html#st7789py.color565">[docs]</a><span class="k">def</span> <span class="nf">color565</span><span class="p">(</span><span class="n">red</span><span class="p">,</span> <span class="n">green</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">blue</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="color565">
<a class="viewcode-back" href="../st7789py.html#st7789py.color565">[docs]</a>
<span class="k">def</span> <span class="nf">color565</span><span class="p">(</span><span class="n">red</span><span class="p">,</span> <span class="n">green</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">blue</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Convert red, green and blue values (0-255) into a 16-bit 565 encoding.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">try</span><span class="p">:</span>
@ -248,18 +320,21 @@
<span class="k">return</span> <span class="p">(</span><span class="n">red</span> <span class="o">&amp;</span> <span class="mh">0xf8</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span> <span class="o">|</span> <span class="p">(</span><span class="n">green</span> <span class="o">&amp;</span> <span class="mh">0xfc</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span> <span class="o">|</span> <span class="n">blue</span> <span class="o">&gt;&gt;</span> <span class="mi">3</span></div>
<span class="k">def</span> <span class="nf">_encode_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Encode a postion into bytes.&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Encode a postion into bytes.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">_ENCODE_POS</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_encode_pixel</span><span class="p">(</span><span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Encode a pixel color into bytes.&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Encode a pixel color into bytes.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">_ENCODE_PIXEL</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
<div class="viewcode-block" id="ST7789"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789">[docs]</a><span class="k">class</span> <span class="nc">ST7789</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789">[docs]</a>
<span class="k">class</span> <span class="nc">ST7789</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ST7789 driver class</span>
<span class="sd"> Args:</span>
@ -270,27 +345,34 @@
<span class="sd"> dc (pin): dc pin **Required**</span>
<span class="sd"> cs (pin): cs pin</span>
<span class="sd"> backlight(pin): backlight pin</span>
<span class="sd"> rotation (int): display rotation</span>
<span class="sd"> - 0-Portrait</span>
<span class="sd"> - 1-Landscape</span>
<span class="sd"> - 2-Inverted Portrait</span>
<span class="sd"> - 3-Inverted Landscape</span>
<span class="sd"> rotation (int):</span>
<span class="sd"> - 0-Portrait</span>
<span class="sd"> - 1-Landscape</span>
<span class="sd"> - 2-Inverted Portrait</span>
<span class="sd"> - 3-Inverted Landscape</span>
<span class="sd"> color_order (int):</span>
<span class="sd"> - RGB: Red, Green Blue, default</span>
<span class="sd"> - BGR: Blue, Green, Red</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">spi</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">reset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">cs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">backlight</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">cs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">backlight</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">color_order</span><span class="o">=</span><span class="n">RGB</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Initialize display.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">height</span> <span class="o">!=</span> <span class="mi">240</span> <span class="ow">or</span> <span class="n">width</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">320</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">135</span><span class="p">]:</span>
<span class="k">if</span> <span class="p">(</span><span class="n">height</span><span class="p">,</span><span class="n">width</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">SUPPORTED_RESOLUTIONS</span><span class="p">:</span>
<span class="nb">print</span> <span class="p">(</span><span class="n">height</span><span class="p">,</span><span class="n">width</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Unsupported display. 320x240, 240x240 and 135x240 are supported.&quot;</span>
<span class="s2">&quot;Unsupported display. Supported resolutions are </span><span class="si">%s</span><span class="s2">&quot;</span><span class="o">%</span> <span class="n">SUPPORTED_RESOLUTIONS</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">dc</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;dc pin is required.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_display_width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_display_height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span>
<span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span>
<span class="bp">self</span><span class="o">.</span><span class="n">physical_height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span>
<span class="bp">self</span><span class="o">.</span><span class="n">xstart</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ystart</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">spi</span> <span class="o">=</span> <span class="n">spi</span>
@ -299,6 +381,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span> <span class="o">=</span> <span class="n">cs</span>
<span class="bp">self</span><span class="o">.</span><span class="n">backlight</span> <span class="o">=</span> <span class="n">backlight</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_rotation</span> <span class="o">=</span> <span class="n">rotation</span> <span class="o">%</span> <span class="mi">4</span>
<span class="bp">self</span><span class="o">.</span><span class="n">color_order</span> <span class="o">=</span> <span class="n">color_order</span>
<span class="bp">self</span><span class="o">.</span><span class="n">hard_reset</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">soft_reset</span><span class="p">()</span>
@ -315,10 +398,10 @@
<span class="n">backlight</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_DISPON</span><span class="p">)</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep_ms</span><span class="p">(</span><span class="mi">500</span><span class="p">)</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep_ms</span><span class="p">(</span><span class="mi">150</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;SPI write to the device: commands and data.&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;SPI write to the device: commands and data.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">off</span><span class="p">()</span>
@ -331,8 +414,10 @@
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
<div class="viewcode-block" id="ST7789.hard_reset"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hard_reset">[docs]</a> <span class="k">def</span> <span class="nf">hard_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.hard_reset">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hard_reset">[docs]</a>
<span class="k">def</span> <span class="nf">hard_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Hard reset display.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
@ -349,15 +434,21 @@
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">on</span><span class="p">()</span></div>
<div class="viewcode-block" id="ST7789.soft_reset"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.soft_reset">[docs]</a> <span class="k">def</span> <span class="nf">soft_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.soft_reset">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.soft_reset">[docs]</a>
<span class="k">def</span> <span class="nf">soft_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Soft reset display.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_SWRESET</span><span class="p">)</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep_ms</span><span class="p">(</span><span class="mi">150</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.sleep_mode"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.sleep_mode">[docs]</a> <span class="k">def</span> <span class="nf">sleep_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.sleep_mode">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.sleep_mode">[docs]</a>
<span class="k">def</span> <span class="nf">sleep_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Enable or disable display sleep mode.</span>
<span class="sd"> Args:</span>
@ -369,8 +460,11 @@
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_SLPOUT</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.inversion_mode"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.inversion_mode">[docs]</a> <span class="k">def</span> <span class="nf">inversion_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.inversion_mode">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.inversion_mode">[docs]</a>
<span class="k">def</span> <span class="nf">inversion_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Enable or disable display inversion mode.</span>
<span class="sd"> Args:</span>
@ -382,8 +476,9 @@
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_INVOFF</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_set_color_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set display color mode.</span>
<span class="sd"> Args:</span>
@ -393,8 +488,21 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_COLMOD</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">([</span><span class="n">mode</span> <span class="o">&amp;</span> <span class="mh">0x77</span><span class="p">]))</span>
<div class="viewcode-block" id="ST7789.rotation"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rotation">[docs]</a> <span class="k">def</span> <span class="nf">rotation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rotation</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">_set_color_order</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set display color order.</span>
<span class="sd"> Args:</span>
<span class="sd"> mode (int): color order</span>
<span class="sd"> RGB: Red, Green Blue</span>
<span class="sd"> BGR: Blue, Green, Red</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_COL</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">([</span><span class="n">mode</span> <span class="o">&amp;</span> <span class="mh">0x77</span><span class="p">]))</span>
<div class="viewcode-block" id="ST7789.rotation">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rotation">[docs]</a>
<span class="k">def</span> <span class="nf">rotation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rotation</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set display rotation.</span>
<span class="sd"> Args:</span>
@ -408,23 +516,28 @@
<span class="n">rotation</span> <span class="o">%=</span> <span class="mi">4</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_rotation</span> <span class="o">=</span> <span class="n">rotation</span>
<span class="n">madctl</span> <span class="o">=</span> <span class="n">ROTATIONS</span><span class="p">[</span><span class="n">rotation</span><span class="p">]</span>
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">color_order</span> <span class="o">==</span> <span class="n">BGR</span><span class="p">):</span>
<span class="n">madctl</span> <span class="o">|=</span> <span class="n">ST7789_MADCTL_BGR</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_display_width</span> <span class="o">==</span> <span class="mi">320</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">==</span> <span class="mi">320</span><span class="p">:</span>
<span class="n">table</span> <span class="o">=</span> <span class="n">WIDTH_320</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_display_width</span> <span class="o">==</span> <span class="mi">240</span><span class="p">:</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">==</span> <span class="mi">240</span><span class="p">:</span>
<span class="n">table</span> <span class="o">=</span> <span class="n">WIDTH_240</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_display_width</span> <span class="o">==</span> <span class="mi">135</span><span class="p">:</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">==</span> <span class="mi">135</span><span class="p">:</span>
<span class="n">table</span> <span class="o">=</span> <span class="n">WIDTH_135</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">==</span> <span class="mi">128</span><span class="p">:</span>
<span class="n">table</span> <span class="o">=</span> <span class="n">WIDTH_128</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Unsupported display. 320x240, 240x240 and 135x240 are supported.&quot;</span>
<span class="s2">&quot;Unsupported display. Supported resolutions are </span><span class="si">%s</span><span class="s2">&quot;</span><span class="o">%</span> <span class="n">SUPPORTED_RESOLUTIONS</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystart</span> <span class="o">=</span> <span class="n">table</span><span class="p">[</span><span class="n">rotation</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_MADCTL</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">([</span><span class="n">madctl</span><span class="p">]))</span></div>
<span class="k">def</span> <span class="nf">_set_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Send CASET (column address set) command to display.</span>
<span class="sd"> Args:</span>
@ -436,7 +549,7 @@
<span class="n">start</span><span class="o">+</span><span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">,</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_set_rows</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Send RASET (row address set) command to display.</span>
<span class="sd"> Args:</span>
@ -448,7 +561,7 @@
<span class="n">start</span><span class="o">+</span><span class="bp">self</span><span class="o">.</span><span class="n">ystart</span><span class="p">,</span> <span class="n">end</span><span class="o">+</span><span class="bp">self</span><span class="o">.</span><span class="n">ystart</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_set_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set window to column and row address.</span>
<span class="sd"> Args:</span>
@ -461,8 +574,10 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_set_rows</span><span class="p">(</span><span class="n">y0</span><span class="p">,</span> <span class="n">y1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_RAMWR</span><span class="p">)</span>
<div class="viewcode-block" id="ST7789.vline"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vline">[docs]</a> <span class="k">def</span> <span class="nf">vline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.vline">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vline">[docs]</a>
<span class="k">def</span> <span class="nf">vline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw vertical line at the given location and color.</span>
<span class="sd"> Args:</span>
@ -473,8 +588,11 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.hline"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hline">[docs]</a> <span class="k">def</span> <span class="nf">hline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.hline">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hline">[docs]</a>
<span class="k">def</span> <span class="nf">hline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw horizontal line at the given location and color.</span>
<span class="sd"> Args:</span>
@ -485,8 +603,11 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.pixel"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.pixel">[docs]</a> <span class="k">def</span> <span class="nf">pixel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.pixel">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.pixel">[docs]</a>
<span class="k">def</span> <span class="nf">pixel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw a pixel at the given location and color.</span>
<span class="sd"> Args:</span>
@ -497,8 +618,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">_encode_pixel</span><span class="p">(</span><span class="n">color</span><span class="p">))</span></div>
<div class="viewcode-block" id="ST7789.blit_buffer"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.blit_buffer">[docs]</a> <span class="k">def</span> <span class="nf">blit_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.blit_buffer">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.blit_buffer">[docs]</a>
<span class="k">def</span> <span class="nf">blit_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Copy buffer to display at the given location.</span>
<span class="sd"> Args:</span>
@ -511,8 +635,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="n">width</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.rect"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rect">[docs]</a> <span class="k">def</span> <span class="nf">rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.rect">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rect">[docs]</a>
<span class="k">def</span> <span class="nf">rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw a rectangle at the given location, size and color.</span>
<span class="sd"> Args:</span>
@ -527,8 +654,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">w</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">hline</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">h</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.fill_rect"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill_rect">[docs]</a> <span class="k">def</span> <span class="nf">fill_rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.fill_rect">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill_rect">[docs]</a>
<span class="k">def</span> <span class="nf">fill_rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw a rectangle at the given location, size and filled with color.</span>
<span class="sd"> Args:</span>
@ -549,8 +679,11 @@
<span class="k">if</span> <span class="n">rest</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">pixel</span> <span class="o">*</span> <span class="n">rest</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.fill"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill">[docs]</a> <span class="k">def</span> <span class="nf">fill</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.fill">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill">[docs]</a>
<span class="k">def</span> <span class="nf">fill</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Fill the entire FrameBuffer with the specified color.</span>
<span class="sd"> Args:</span>
@ -558,8 +691,11 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.line"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.line">[docs]</a> <span class="k">def</span> <span class="nf">line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.line">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.line">[docs]</a>
<span class="k">def</span> <span class="nf">line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw a single pixel wide line starting at x0, y0 and ending at x1, y1.</span>
<span class="sd"> Args:</span>
@ -591,8 +727,11 @@
<span class="n">err</span> <span class="o">+=</span> <span class="n">dx</span>
<span class="n">x0</span> <span class="o">+=</span> <span class="mi">1</span></div>
<div class="viewcode-block" id="ST7789.vscrdef"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscrdef">[docs]</a> <span class="k">def</span> <span class="nf">vscrdef</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.vscrdef">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscrdef">[docs]</a>
<span class="k">def</span> <span class="nf">vscrdef</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set Vertical Scrolling Definition.</span>
<span class="sd"> To scroll a 135x240 display these values should be 40, 240, 40.</span>
@ -609,8 +748,11 @@
<span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;HHH&quot;</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_VSCRDEF</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;HHH&quot;</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">))</span></div>
<div class="viewcode-block" id="ST7789.vscsad"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscsad">[docs]</a> <span class="k">def</span> <span class="nf">vscsad</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vssa</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.vscsad">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscsad">[docs]</a>
<span class="k">def</span> <span class="nf">vscsad</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vssa</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set Vertical Scroll Start Address of RAM.</span>
<span class="sd"> Defines which line in the Frame Memory will be written as the first</span>
@ -628,8 +770,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">ST7789_VSCSAD</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;H&quot;</span><span class="p">,</span> <span class="n">vssa</span><span class="p">))</span></div>
<span class="k">def</span> <span class="nf">_text8</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Internal method to write characters with width of 8 and</span>
<span class="sd"> heights of 8 or 16.</span>
@ -730,7 +873,7 @@
<span class="n">x0</span> <span class="o">+=</span> <span class="mi">8</span>
<span class="k">def</span> <span class="nf">_text16</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Internal method to draw characters with width of 16 and heights of 16</span>
<span class="sd"> or 32.</span>
@ -892,8 +1035,10 @@
<span class="bp">self</span><span class="o">.</span><span class="n">blit_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="o">+</span><span class="mi">8</span><span class="o">*</span><span class="n">line</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
<span class="n">x0</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span>
<div class="viewcode-block" id="ST7789.text"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.text">[docs]</a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.text">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.text">[docs]</a>
<span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw text on display in specified font and colors. 8 and 16 bit wide</span>
<span class="sd"> fonts are supported.</span>
@ -910,8 +1055,11 @@
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_text16</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="p">,</span> <span class="n">background</span><span class="p">)</span></div>
<div class="viewcode-block" id="ST7789.bitmap"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.bitmap">[docs]</a> <span class="k">def</span> <span class="nf">bitmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bitmap</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.bitmap">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.bitmap">[docs]</a>
<span class="k">def</span> <span class="nf">bitmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bitmap</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Draw a bitmap on display at the specified column and row</span>
<span class="sd"> Args:</span>
@ -945,9 +1093,12 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">to_col</span><span class="p">,</span> <span class="n">to_row</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span></div>
<span class="c1"># @micropython.native</span>
<div class="viewcode-block" id="ST7789.write"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fg</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.write">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write">[docs]</a>
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fg</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Write a string using a converted true-type font on the display starting</span>
<span class="sd"> at the specified column and row</span>
@ -1002,8 +1153,11 @@
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="ST7789.write_width"><a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write_width">[docs]</a> <span class="k">def</span> <span class="nf">write_width</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="ST7789.write_width">
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write_width">[docs]</a>
<span class="k">def</span> <span class="nf">write_width</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the width in pixels of the string if it was written with the</span>
<span class="sd"> specified font</span>
@ -1020,7 +1174,9 @@
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">return</span> <span class="n">width</span></div></div>
<span class="k">return</span> <span class="n">width</span></div>
</div>
</pre></div>
</div>

Wyświetl plik

@ -2,142 +2,11 @@
Example Programs
****************
320x240 Example Programs
========================
These examples run on a ESP32 board with a 320x240 display. They are were tested using a SparkFun
ESP32 Thing and a Waveshare 2 inch LCD ST7789 Module. You may need to modify the pin use for your
device.
320x240 lines.py
----------------
.. literalinclude:: ../../examples/esp32_320x240/lines.py
:linenos:
:language: python
320x240 hello.py
-----------------
.. literalinclude:: ../../examples/esp32_320x240/hello.py
:linenos:
:language: python
320x240 feathers.py
-------------------
.. literalinclude:: ../../examples/esp32_320x240/feathers.py
:linenos:
:language: python
320x240 fonts.py
----------------
.. literalinclude:: ../../examples/esp32_320x240/fonts.py
:linenos:
:language: python
320x240 scroll.py
-----------------
.. literalinclude:: ../../examples/esp32_320x240/scroll.py
:linenos:
:language: python
320x240 toasters.py
-------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the sprites2bitmap.py
utility. See the maketoast shell script for the command line used to create the toast_bitmaps.py from the
toasters.bmp image.
.. literalinclude:: ../../examples/esp32_320x240/toasters/toasters.py
:linenos:
:language: python
135x240 TTGO T-Display Example Programs
=======================================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/TTGO-T-Display for more
information.
lines.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/lines.py
:linenos:
:language: python
hello.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/hello.py
:linenos:
:language: python
feathers.py
-----------
.. literalinclude:: ../../examples/ttgo_tdisplay/feathers.py
:linenos:
:language: python
fonts.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/fonts.py
:linenos:
:language: python
scroll.py
---------
.. literalinclude:: ../../examples/ttgo_tdisplay/scroll.py
:linenos:
:language: python
toasters.py
-----------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay/toasters/toasters.py
:linenos:
:language: python
chango.py
---------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/chango.py
:linenos:
:language: python
noto_fonts.py
-------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/noto_fonts.py
:linenos:
:language: python
.. toctree::
:maxdepth: 4
examples_atoms3.rst
examples_generic.rst
examples_tdisplay.rst
examples_tdisplay_rp2040.rst
examples_pi_pico.rst

Wyświetl plik

@ -0,0 +1,27 @@
M5STACK ATOM-S3 Examples
========================
These examples run on the M5Stack ATOM-S3. See https://shop.m5stack.com/products/atoms3-dev-kit-w-0-85-inch-screen
for more information.
atom_s3/feathers.py
-------------------
.. literalinclude:: ../../examples/atom_s3/feathers.py
:linenos:
:language: python
atom_s3/rotations.py
--------------------
.. literalinclude:: ../../examples/atom_s3/rotations.py
:linenos:
:language: python
atom_s3/scroll.py
-----------------
.. literalinclude:: ../../examples/atom_s3/scroll.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,58 @@
Generic ESP32 Examples
======================
These examples run on a ESP32 board with a 320x240 display. They are were tested using a SparkFun
ESP32 Thing and a Waveshare 2 inch LCD ST7789 Module. You may need to modify the pin use for your
device.
esp32_320x240/lines.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/lines.py
:linenos:
:language: python
esp32_320x240/hello.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/hello.py
:linenos:
:language: python
esp32_320x240/feathers.py
-------------------------
.. literalinclude:: ../../examples/esp32_320x240/feathers.py
:linenos:
:language: python
esp32_320x240/fonts.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/fonts.py
:linenos:
:language: python
esp32_320x240/scroll.py
-----------------------
.. literalinclude:: ../../examples/esp32_320x240/scroll.py
:linenos:
:language: python
esp32_320x240/toasters.py
-------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the sprites2bitmap.py
utility. See the maketoast shell script for the command line used to create the toast_bitmaps.py from the
toasters.bmp image.
.. literalinclude:: ../../examples/esp32_320x240/toasters/toasters.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,20 @@
Raspberry Pi Pico Examples
==========================
These examples run on the Raspberry Pi Pico with Waveshare displays
rp_2040/waveshare_13/feathers.py
--------------------------------
.. literalinclude:: ../../examples/rp_2040/waveshare_13/feathers.py
:linenos:
:language: python
rp_2040/waveshare_114/feathers.py
---------------------------------
.. literalinclude:: ../../examples/rp_2040/waveshare_114/feathers.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,80 @@
TTGO T-Display Examples
=======================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/TTGO-T-Display for more
information.
ttgo_tdisplay/lines.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/lines.py
:linenos:
:language: python
ttgo_tdisplay/hello.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/hello.py
:linenos:
:language: python
ttgo_tdisplay/feathers.py
-------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/feathers.py
:linenos:
:language: python
ttgo_tdisplay/fonts.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/fonts.py
:linenos:
:language: python
ttgo_tdisplay/scroll.py
-----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/scroll.py
:linenos:
:language: python
ttgo_tdisplay/toasters.py
-------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay/toasters/toasters.py
:linenos:
:language: python
ttgo_tdisplay/chango.py
-----------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/chango.py
:linenos:
:language: python
ttgo_tdisplay/noto_fonts.py
---------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/noto_fonts.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,80 @@
TTGO T-Display RP2040 Examples
==============================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/LILYGO-T-display-RP2040
for more information.
ttgo_tdisplay_rp2040/lines.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/lines.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/hello.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/hello.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/feathers.py
--------------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/feathers.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/fonts.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/fonts.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/scroll.py
------------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/scroll.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/toasters.py
--------------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/toasters/toasters.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/chango.py
------------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/truetype/chango.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/noto_fonts.py
----------------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/truetype/noto_fonts.py
:linenos:
:language: python

Wyświetl plik

@ -1,12 +1,21 @@
st7789py Driver
===============
st7789 tft driver in MicroPython based on devbis' st7789py_mpy module from
This is a fork of devbis' st7789py_mpy module from
https://github.com/devbis/st7789py_mpy.
I added support for display rotation, scrolling and drawing text using 8 and 16
bit wide bitmap fonts with heights that are multiples of 8. Included are 12
bitmap fonts derived from classic pc text mode fonts.
This driver has support for:
- 320x240, 240x240, 135x240, and 128x128 pixel displays
- RGB and BGR Color Orders
- Display rotation
- Hardware based scrolling
- Drawing text using converted PC BIOS bitmap fonts
- Drawing text using converted TrueType fonts.
- Drawing converted bitmaps
This is a work in progress. Documentation can be found in the docs directory
and at https://penfold.owt.com/st7789py.
.. toctree::

Wyświetl plik

@ -0,0 +1,123 @@
/* Compatability shim for jQuery and underscores.js.
*
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}

Wyświetl plik

@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@ -222,7 +222,7 @@ table.modindextable td {
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 450px;
min-width: 360px;
max-width: 800px;
}
@ -237,14 +237,8 @@ a.headerlink {
visibility: hidden;
}
a.brackets:before,
span.brackets > a:before{
content: "[";
}
a.brackets:after,
span.brackets > a:after {
content: "]";
a:visited {
color: #551A8B;
}
h1:hover > a.headerlink,
@ -335,12 +329,16 @@ p.sidebar-title {
font-weight: bold;
}
nav.contents,
aside.topic,
div.admonition, div.topic, blockquote {
clear: left;
}
/* -- topics ---------------------------------------------------------------- */
nav.contents,
aside.topic,
div.topic {
border: 1px solid #ccc;
padding: 7px;
@ -379,6 +377,8 @@ div.body p.centered {
div.sidebar > :last-child,
aside.sidebar > :last-child,
nav.contents > :last-child,
aside.topic > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
@ -386,6 +386,8 @@ div.admonition > :last-child {
div.sidebar::after,
aside.sidebar::after,
nav.contents::after,
aside.topic::after,
div.topic::after,
div.admonition::after,
blockquote::after {
@ -428,10 +430,6 @@ table.docutils td, table.docutils th {
border-bottom: 1px solid #aaa;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
@ -615,19 +613,26 @@ ul.simple p {
margin-bottom: 0;
}
dl.footnote > dt,
dl.citation > dt {
aside.footnote > span,
div.citation > span {
float: left;
margin-right: 0.5em;
}
dl.footnote > dd,
dl.citation > dd {
aside.footnote > span:last-of-type,
div.citation > span:last-of-type {
padding-right: 0.5em;
}
aside.footnote > p {
margin-left: 2em;
}
div.citation > p {
margin-left: 4em;
}
aside.footnote > p:last-of-type,
div.citation > p:last-of-type {
margin-bottom: 0em;
}
dl.footnote > dd:after,
dl.citation > dd:after {
aside.footnote > p:last-of-type:after,
div.citation > p:last-of-type:after {
content: "";
clear: both;
}
@ -644,10 +649,6 @@ dl.field-list > dt {
padding-right: 5px;
}
dl.field-list > dt:after {
content: ":";
}
dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
@ -673,6 +674,16 @@ dd {
margin-left: 30px;
}
.sig dd {
margin-top: 0px;
margin-bottom: 0px;
}
.sig dl {
margin-top: 0px;
margin-bottom: 0px;
}
dl > dd:last-child,
dl > dd:last-child > :last-child {
margin-bottom: 0;
@ -741,6 +752,14 @@ abbr, acronym {
cursor: help;
}
.translated {
background-color: rgba(207, 255, 207, 0.2)
}
.untranslated {
background-color: rgba(255, 207, 207, 0.2)
}
/* -- code displays --------------------------------------------------------- */
pre {
@ -757,6 +776,7 @@ span.pre {
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
white-space: nowrap;
}
div[class*="highlight-"] {

Wyświetl plik

@ -1 +1 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -2,322 +2,155 @@
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
const _ready = (callback) => {
if (document.readyState !== "loading") {
callback();
} else {
document.addEventListener("DOMContentLoaded", callback);
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
this.initOnKeyListeners();
}
const Documentation = {
init: () => {
Documentation.initDomainIndexTable();
Documentation.initOnKeyListeners();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
LOCALE : 'unknown',
TRANSLATIONS: {},
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
LOCALE: "unknown",
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated === 'undefined')
return string;
return (typeof translated === 'string') ? translated : translated[0];
gettext: (string) => {
const translated = Documentation.TRANSLATIONS[string];
switch (typeof translated) {
case "undefined":
return string; // no translation
case "string":
return translated; // translation exists
default:
return translated[0]; // (singular, plural) translation tuple exists
}
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated === 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
ngettext: (singular, plural, n) => {
const translated = Documentation.TRANSLATIONS[singular];
if (typeof translated !== "undefined")
return translated[Documentation.PLURAL_EXPR(n)];
return n === 1 ? singular : plural;
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
addTranslations: (catalog) => {
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
Documentation.PLURAL_EXPR = new Function(
"n",
`return (${catalog.plural_expr})`
);
Documentation.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
* helper function to focus on search bar
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
focusSearchBar: () => {
document.querySelectorAll("input[name=q]")[0]?.focus();
},
/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
* Initialise the domain index toggle buttons
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
if (!body.length) {
body = $('body');
initDomainIndexTable: () => {
const toggler = (el) => {
const idNumber = el.id.substr(7);
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
if (el.src.substr(-9) === "minus.png") {
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
toggledRows.forEach((el) => (el.style.display = "none"));
} else {
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
toggledRows.forEach((el) => (el.style.display = ""));
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
};
const togglerElements = document.querySelectorAll("img.toggler");
togglerElements.forEach((el) =>
el.addEventListener("click", (event) => toggler(event.currentTarget))
);
togglerElements.forEach((el) => (el.style.display = ""));
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) === 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
initOnKeyListeners: () => {
// only install a listener if it is really needed
if (
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
)
return;
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
},
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
if (!event.shiftKey) {
switch (event.key) {
case "ArrowLeft":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this === '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
},
initOnKeyListeners: function() {
$(document).keydown(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box, textarea, dropdown or button
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
&& activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
&& !event.shiftKey) {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
if (prevHref) {
window.location.href = prevHref;
return false;
const prevLink = document.querySelector('link[rel="prev"]');
if (prevLink && prevLink.href) {
window.location.href = prevLink.href;
event.preventDefault();
}
break;
case 39: // right
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
case "ArrowRight":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const nextLink = document.querySelector('link[rel="next"]');
if (nextLink && nextLink.href) {
window.location.href = nextLink.href;
event.preventDefault();
}
break;
}
}
// some keyboard layouts may need Shift to get /
switch (event.key) {
case "/":
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
Documentation.focusSearchBar();
event.preventDefault();
}
});
}
},
};
// quick alias for translations
_ = Documentation.gettext;
const _ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});
_ready(Documentation.init);

Wyświetl plik

@ -1,12 +1,13 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
const DOCUMENTATION_OPTIONS = {
VERSION: '0.1.0',
LANGUAGE: 'None',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true,
};

Plik diff jest za duży Load Diff

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -5,12 +5,12 @@
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
/* Non-minified version is copied as a separate JS file, is available */
@ -197,101 +197,3 @@ var Stemmer = function() {
}
}
var splitChars = (function() {
var result = {};
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
var i, j, start, end;
for (i = 0; i < singles.length; i++) {
result[singles[i]] = true;
}
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
for (i = 0; i < ranges.length; i++) {
start = ranges[i][0];
end = ranges[i][1];
for (j = start; j <= end; j++) {
result[j] = true;
}
}
return result;
})();
function splitQuery(query) {
var result = [];
var start = -1;
for (var i = 0; i < query.length; i++) {
if (splitChars[query.charCodeAt(i)]) {
if (start !== -1) {
result.push(query.slice(start, i));
start = -1;
}
} else if (start === -1) {
start = i;
}
}
if (start !== -1) {
result.push(query.slice(start));
}
return result;
}

Wyświetl plik

@ -5,22 +5,23 @@ td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
@ -33,15 +34,15 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
@ -58,11 +59,11 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */

Wyświetl plik

@ -4,22 +4,24 @@
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
if (!Scorer) {
/**
* Simple result scoring code.
*/
/**
* Simple result scoring code.
*/
if (typeof Scorer === "undefined") {
var Scorer = {
// Implement the following function to further tweak the score for each result
// The function takes a result array [filename, title, anchor, descr, score]
// The function takes a result array [docname, title, anchor, descr, score, filename]
// and returns the new score.
/*
score: function(result) {
return result[4];
score: result => {
const [docname, title, anchor, descr, score, filename] = result
return score
},
*/
@ -28,9 +30,11 @@ if (!Scorer) {
// or matches in the last dotted part of the object name
objPartialMatch: 6,
// Additive scores depending on the priority of the object
objPrio: {0: 15, // used to be importantResults
1: 5, // used to be objectResults
2: -5}, // used to be unimportantResults
objPrio: {
0: 15, // used to be importantResults
1: 5, // used to be objectResults
2: -5, // used to be unimportantResults
},
// Used when the priority is not in the mapping.
objPrioDefault: 0,
@ -39,456 +43,503 @@ if (!Scorer) {
partialTitle: 7,
// query found in terms
term: 5,
partialTerm: 2
partialTerm: 2,
};
}
if (!splitQuery) {
function splitQuery(query) {
return query.split(/\s+/);
const _removeChildren = (element) => {
while (element && element.lastChild) element.removeChild(element.lastChild);
};
/**
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
*/
const _escapeRegExp = (string) =>
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
const _displayItem = (item, searchTerms, highlightTerms) => {
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
const contentRoot = document.documentElement.dataset.content_root;
const [docName, title, anchor, descr, score, _filename] = item;
let listItem = document.createElement("li");
let requestUrl;
let linkUrl;
if (docBuilder === "dirhtml") {
// dirhtml builder
let dirname = docName + "/";
if (dirname.match(/\/index\/$/))
dirname = dirname.substring(0, dirname.length - 6);
else if (dirname === "index/") dirname = "";
requestUrl = contentRoot + dirname;
linkUrl = requestUrl;
} else {
// normal html builders
requestUrl = contentRoot + docName + docFileSuffix;
linkUrl = docName + docLinkSuffix;
}
let linkEl = listItem.appendChild(document.createElement("a"));
linkEl.href = linkUrl + anchor;
linkEl.dataset.score = score;
linkEl.innerHTML = title;
if (descr) {
listItem.appendChild(document.createElement("span")).innerHTML =
" (" + descr + ")";
// highlight search terms in the description
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
}
else if (showSearchSummary)
fetch(requestUrl)
.then((responseData) => responseData.text())
.then((data) => {
if (data)
listItem.appendChild(
Search.makeSearchSummary(data, searchTerms)
);
// highlight search terms in the summary
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
});
Search.output.appendChild(listItem);
};
const _finishSearch = (resultCount) => {
Search.stopPulse();
Search.title.innerText = _("Search Results");
if (!resultCount)
Search.status.innerText = Documentation.gettext(
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
);
else
Search.status.innerText = _(
`Search finished, found ${resultCount} page(s) matching the search query.`
);
};
const _displayNextItem = (
results,
resultCount,
searchTerms,
highlightTerms,
) => {
// results left, load the summary and display it
// this is intended to be dynamic (don't sub resultsCount)
if (results.length) {
_displayItem(results.pop(), searchTerms, highlightTerms);
setTimeout(
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
5
);
}
// search finished, update title and status message
else _finishSearch(resultCount);
};
/**
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
* custom function per language.
*
* The regular expression works by splitting the string on consecutive characters
* that are not Unicode letters, numbers, underscores, or emoji characters.
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
*/
if (typeof splitQuery === "undefined") {
var splitQuery = (query) => query
.split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
.filter(term => term) // remove remaining empty strings
}
/**
* Search Module
*/
var Search = {
const Search = {
_index: null,
_queued_query: null,
_pulse_status: -1,
_index : null,
_queued_query : null,
_pulse_status : -1,
htmlToText : function(htmlString) {
var virtualDocument = document.implementation.createHTMLDocument('virtual');
var htmlElement = $(htmlString, virtualDocument);
htmlElement.find('.headerlink').remove();
docContent = htmlElement.find('[role=main]')[0];
if(docContent === undefined) {
console.warn("Content block not found. Sphinx search tries to obtain it " +
"via '[role=main]'. Could you check your theme or template.");
return "";
}
return docContent.textContent || docContent.innerText;
htmlToText: (htmlString) => {
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
const docContent = htmlElement.querySelector('[role="main"]');
if (docContent !== undefined) return docContent.textContent;
console.warn(
"Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
);
return "";
},
init : function() {
var params = $.getQueryParameters();
if (params.q) {
var query = params.q[0];
$('input[name="q"]')[0].value = query;
this.performSearch(query);
}
init: () => {
const query = new URLSearchParams(window.location.search).get("q");
document
.querySelectorAll('input[name="q"]')
.forEach((el) => (el.value = query));
if (query) Search.performSearch(query);
},
loadIndex : function(url) {
$.ajax({type: "GET", url: url, data: null,
dataType: "script", cache: true,
complete: function(jqxhr, textstatus) {
if (textstatus != "success") {
document.getElementById("searchindexloader").src = url;
}
}});
},
loadIndex: (url) =>
(document.body.appendChild(document.createElement("script")).src = url),
setIndex : function(index) {
var q;
this._index = index;
if ((q = this._queued_query) !== null) {
this._queued_query = null;
Search.query(q);
setIndex: (index) => {
Search._index = index;
if (Search._queued_query !== null) {
const query = Search._queued_query;
Search._queued_query = null;
Search.query(query);
}
},
hasIndex : function() {
return this._index !== null;
},
hasIndex: () => Search._index !== null,
deferQuery : function(query) {
this._queued_query = query;
},
deferQuery: (query) => (Search._queued_query = query),
stopPulse : function() {
this._pulse_status = 0;
},
stopPulse: () => (Search._pulse_status = -1),
startPulse : function() {
if (this._pulse_status >= 0)
return;
function pulse() {
var i;
startPulse: () => {
if (Search._pulse_status >= 0) return;
const pulse = () => {
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
for (i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
}
Search.dots.innerText = ".".repeat(Search._pulse_status);
if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
};
pulse();
},
/**
* perform a search for something (or wait until index is loaded)
*/
performSearch : function(query) {
performSearch: (query) => {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
const searchText = document.createElement("h2");
searchText.textContent = _("Searching");
const searchSummary = document.createElement("p");
searchSummary.classList.add("search-summary");
searchSummary.innerText = "";
const searchList = document.createElement("ul");
searchList.classList.add("search");
$('#search-progress').text(_('Preparing search...'));
this.startPulse();
const out = document.getElementById("search-results");
Search.title = out.appendChild(searchText);
Search.dots = Search.title.appendChild(document.createElement("span"));
Search.status = out.appendChild(searchSummary);
Search.output = out.appendChild(searchList);
const searchProgress = document.getElementById("search-progress");
// Some themes don't use the search progress node
if (searchProgress) {
searchProgress.innerText = _("Preparing search...");
}
Search.startPulse();
// index already loaded, the browser was quick!
if (this.hasIndex())
this.query(query);
else
this.deferQuery(query);
if (Search.hasIndex()) Search.query(query);
else Search.deferQuery(query);
},
/**
* execute search (requires search index to be loaded)
*/
query : function(query) {
var i;
query: (query) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const allTitles = Search._index.alltitles;
const indexEntries = Search._index.indexentries;
// stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
var tmp = splitQuery(query);
var objectterms = [];
for (i = 0; i < tmp.length; i++) {
if (tmp[i] !== "") {
objectterms.push(tmp[i].toLowerCase());
}
// stem the search terms and add them to the correct list
const stemmer = new Stemmer();
const searchTerms = new Set();
const excludedTerms = new Set();
const highlightTerms = new Set();
const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
splitQuery(query.trim()).forEach((queryTerm) => {
const queryTermLower = queryTerm.toLowerCase();
// maybe skip this "word"
// stopwords array is from language_data.js
if (
stopwords.indexOf(queryTermLower) !== -1 ||
queryTerm.match(/^\d+$/)
)
return;
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
// skip this "word"
continue;
}
// stem the word
var word = stemmer.stemWord(tmp[i].toLowerCase());
// prevent stemmer from cutting word smaller than two chars
if(word.length < 3 && tmp[i].length >= 3) {
word = tmp[i];
}
var toAppend;
let word = stemmer.stemWord(queryTermLower);
// select the correct list
if (word[0] == '-') {
toAppend = excluded;
word = word.substr(1);
}
if (word[0] === "-") excludedTerms.add(word.substr(1));
else {
toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
searchTerms.add(word);
highlightTerms.add(queryTermLower);
}
// only add if not already in the list
if (!$u.contains(toAppend, word))
toAppend.push(word);
});
if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
}
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
// console.info('required: ', searchterms);
// console.info('excluded: ', excluded);
// console.debug("SEARCH: searching for:");
// console.info("required: ", [...searchTerms]);
// console.info("excluded: ", [...excludedTerms]);
// prepare search
var terms = this._index.terms;
var titleterms = this._index.titleterms;
// array of [docname, title, anchor, descr, score, filename]
let results = [];
_removeChildren(document.getElementById("search-progress"));
// array of [filename, title, anchor, descr, score]
var results = [];
$('#search-progress').empty();
const queryLower = query.toLowerCase();
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
results.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
id !== null ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// search for explicit entries in index directives
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
for (const [file, id] of foundEntries) {
let score = Math.round(100 * queryLower.length / entry.length)
results.push([
docNames[file],
titles[file],
id ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// lookup as object
for (i = 0; i < objectterms.length; i++) {
var others = [].concat(objectterms.slice(0, i),
objectterms.slice(i+1, objectterms.length));
results = results.concat(this.performObjectSearch(objectterms[i], others));
}
objectTerms.forEach((term) =>
results.push(...Search.performObjectSearch(term, objectTerms))
);
// lookup as search terms in fulltext
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
// let the scorer override scores with a custom scoring function
if (Scorer.score) {
for (i = 0; i < results.length; i++)
results[i][4] = Scorer.score(results[i]);
}
if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
// now sort the results by score (in opposite order of appearance, since the
// display function below uses pop() to retrieve items) and then
// alphabetically
results.sort(function(a, b) {
var left = a[4];
var right = b[4];
if (left > right) {
return 1;
} else if (left < right) {
return -1;
} else {
results.sort((a, b) => {
const leftScore = a[4];
const rightScore = b[4];
if (leftScore === rightScore) {
// same score: sort alphabetically
left = a[1].toLowerCase();
right = b[1].toLowerCase();
return (left > right) ? -1 : ((left < right) ? 1 : 0);
const leftTitle = a[1].toLowerCase();
const rightTitle = b[1].toLowerCase();
if (leftTitle === rightTitle) return 0;
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
}
return leftScore > rightScore ? 1 : -1;
});
// remove duplicate search results
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
let seen = new Set();
results = results.reverse().reduce((acc, result) => {
let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
if (!seen.has(resultStr)) {
acc.push(result);
seen.add(resultStr);
}
return acc;
}, []);
results = results.reverse();
// for debugging
//Search.lastresults = results.slice(); // a copy
//console.info('search results:', Search.lastresults);
// console.info("search results:", Search.lastresults);
// print the results
var resultCount = results.length;
function displayNextItem() {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
var listItem = $('<li></li>');
var requestUrl = "";
var linkUrl = "";
if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
linkUrl = requestUrl;
} else {
// normal html builders
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
}
listItem.append($('<a/>').attr('href',
linkUrl +
highlightstring + item[2]).html(item[1]));
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
$.ajax({url: requestUrl,
dataType: "text",
complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText;
if (data !== '' && data !== undefined) {
var summary = Search.makeSearchSummary(data, searchterms, hlterms);
if (summary) {
listItem.append(summary);
}
}
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
}});
} else {
// no source available, just display title
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
}
}
// search finished, update title and status message
else {
Search.stopPulse();
Search.title.text(_('Search Results'));
if (!resultCount)
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
else
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
Search.status.fadeIn(500);
}
}
displayNextItem();
_displayNextItem(results, results.length, searchTerms, highlightTerms);
},
/**
* search for object names
*/
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
var docnames = this._index.docnames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
performObjectSearch: (object, objectTerms) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const objects = Search._index.objects;
const objNames = Search._index.objnames;
const titles = Search._index.titles;
var i;
var results = [];
const results = [];
for (var prefix in objects) {
for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
var match = objects[prefix][iMatch];
var name = match[4];
var fullname = (prefix ? prefix + '.' : '') + name;
var fullnameLower = fullname.toLowerCase()
if (fullnameLower.indexOf(object) > -1) {
var score = 0;
var parts = fullnameLower.split('.');
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullnameLower == object || parts[parts.length - 1] == object) {
score += Scorer.objNameMatch;
// matches in last name
} else if (parts[parts.length - 1].indexOf(object) > -1) {
score += Scorer.objPartialMatch;
}
var objname = objnames[match[1]][2];
var title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
if (otherterms.length > 0) {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
for (i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
}
}
if (!allfound) {
continue;
}
}
var descr = objname + _(', in ') + title;
const objectSearchCallback = (prefix, match) => {
const name = match[4]
const fullname = (prefix ? prefix + "." : "") + name;
const fullnameLower = fullname.toLowerCase();
if (fullnameLower.indexOf(object) < 0) return;
var anchor = match[3];
if (anchor === '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
// add custom score for some objects according to scorer
if (Scorer.objPrio.hasOwnProperty(match[2])) {
score += Scorer.objPrio[match[2]];
} else {
score += Scorer.objPrioDefault;
}
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
}
let score = 0;
const parts = fullnameLower.split(".");
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullnameLower === object || parts.slice(-1)[0] === object)
score += Scorer.objNameMatch;
else if (parts.slice(-1)[0].indexOf(object) > -1)
score += Scorer.objPartialMatch; // matches in last name
const objName = objNames[match[1]][2];
const title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
const otherTerms = new Set(objectTerms);
otherTerms.delete(object);
if (otherTerms.size > 0) {
const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
if (
[...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
)
return;
}
}
let anchor = match[3];
if (anchor === "") anchor = fullname;
else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
const descr = objName + _(", in ") + title;
// add custom score for some objects according to scorer
if (Scorer.objPrio.hasOwnProperty(match[2]))
score += Scorer.objPrio[match[2]];
else score += Scorer.objPrioDefault;
results.push([
docNames[match[0]],
fullname,
"#" + anchor,
descr,
score,
filenames[match[0]],
]);
};
Object.keys(objects).forEach((prefix) =>
objects[prefix].forEach((array) =>
objectSearchCallback(prefix, array)
)
);
return results;
},
/**
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
*/
escapeRegExp : function(string) {
return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
},
/**
* search for full-text terms in the index
*/
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
var docnames = this._index.docnames;
var filenames = this._index.filenames;
var titles = this._index.titles;
performTermsSearch: (searchTerms, excludedTerms) => {
// prepare search
const terms = Search._index.terms;
const titleTerms = Search._index.titleterms;
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
var i, j, file;
var fileMap = {};
var scoreMap = {};
var results = [];
const scoreMap = new Map();
const fileMap = new Map();
// perform the search on the required terms
for (i = 0; i < searchterms.length; i++) {
var word = searchterms[i];
var files = [];
var _o = [
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
searchTerms.forEach((word) => {
const files = [];
const arr = [
{ files: terms[word], score: Scorer.term },
{ files: titleTerms[word], score: Scorer.title },
];
// add support for partial matches
if (word.length > 2) {
var word_regex = this.escapeRegExp(word);
for (var w in terms) {
if (w.match(word_regex) && !terms[word]) {
_o.push({files: terms[w], score: Scorer.partialTerm})
}
}
for (var w in titleterms) {
if (w.match(word_regex) && !titleterms[word]) {
_o.push({files: titleterms[w], score: Scorer.partialTitle})
}
}
const escapedWord = _escapeRegExp(word);
Object.keys(terms).forEach((term) => {
if (term.match(escapedWord) && !terms[word])
arr.push({ files: terms[term], score: Scorer.partialTerm });
});
Object.keys(titleTerms).forEach((term) => {
if (term.match(escapedWord) && !titleTerms[word])
arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
});
}
// no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) {
break;
}
if (arr.every((record) => record.files === undefined)) return;
// found search word in contents
$u.each(_o, function(o) {
var _files = o.files;
if (_files === undefined)
return
arr.forEach((record) => {
if (record.files === undefined) return;
if (_files.length === undefined)
_files = [_files];
files = files.concat(_files);
let recordFiles = record.files;
if (recordFiles.length === undefined) recordFiles = [recordFiles];
files.push(...recordFiles);
// set score for the word in each file to Scorer.term
for (j = 0; j < _files.length; j++) {
file = _files[j];
if (!(file in scoreMap))
scoreMap[file] = {};
scoreMap[file][word] = o.score;
}
// set score for the word in each file
recordFiles.forEach((file) => {
if (!scoreMap.has(file)) scoreMap.set(file, {});
scoreMap.get(file)[word] = record.score;
});
});
// create the mapping
for (j = 0; j < files.length; j++) {
file = files[j];
if (file in fileMap && fileMap[file].indexOf(word) === -1)
fileMap[file].push(word);
else
fileMap[file] = [word];
}
}
files.forEach((file) => {
if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
fileMap.get(file).push(word);
else fileMap.set(file, [word]);
});
});
// now check if the files don't contain excluded terms
for (file in fileMap) {
var valid = true;
const results = [];
for (const [file, wordList] of fileMap) {
// check if all requirements are matched
var filteredTermCount = // as search terms with length < 3 are discarded: ignore
searchterms.filter(function(term){return term.length > 2}).length
// as search terms with length < 3 are discarded
const filteredTermCount = [...searchTerms].filter(
(term) => term.length > 2
).length;
if (
fileMap[file].length != searchterms.length &&
fileMap[file].length != filteredTermCount
) continue;
wordList.length !== searchTerms.size &&
wordList.length !== filteredTermCount
)
continue;
// ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file ||
titleterms[excluded[i]] == file ||
$u.contains(terms[excluded[i]] || [], file) ||
$u.contains(titleterms[excluded[i]] || [], file)) {
valid = false;
break;
}
}
if (
[...excludedTerms].some(
(term) =>
terms[term] === file ||
titleTerms[term] === file ||
(terms[term] || []).includes(file) ||
(titleTerms[term] || []).includes(file)
)
)
break;
// if we have still a valid result we can add it to the result list
if (valid) {
// select one (max) score for the file.
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
}
// select one (max) score for the file.
const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
// add result to the result list
results.push([
docNames[file],
titles[file],
"",
null,
score,
filenames[file],
]);
}
return results;
},
@ -496,34 +547,28 @@ var Search = {
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words, hlwords is the list of normal, unstemmed
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
* of stemmed words.
*/
makeSearchSummary : function(htmlText, keywords, hlwords) {
var text = Search.htmlToText(htmlText);
if (text == "") {
return null;
}
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
var i = textLower.indexOf(this.toLowerCase());
if (i > -1)
start = i;
});
start = Math.max(start - 120, 0);
var excerpt = ((start > 0) ? '...' : '') +
$.trim(text.substr(start, 240)) +
((start + 240 - text.length) ? '...' : '');
var rv = $('<p class="context"></p>').text(excerpt);
$.each(hlwords, function() {
rv = rv.highlightText(this, 'highlighted');
});
return rv;
}
makeSearchSummary: (htmlText, keywords) => {
const text = Search.htmlToText(htmlText);
if (text === "") return null;
const textLower = text.toLowerCase();
const actualStartPosition = [...keywords]
.map((k) => textLower.indexOf(k.toLowerCase()))
.filter((i) => i > -1)
.slice(-1)[0];
const startWithContext = Math.max(actualStartPosition - 120, 0);
const top = startWithContext === 0 ? "" : "...";
const tail = startWithContext + 240 < text.length ? "..." : "";
let summary = document.createElement("p");
summary.classList.add("context");
summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
return summary;
},
};
$(document).ready(function() {
Search.init();
});
_ready(Search.init);

154
docs/_static/sphinx_highlight.js vendored 100644
Wyświetl plik

@ -0,0 +1,154 @@
/* Highlighting utilities for Sphinx HTML documentation. */
"use strict";
const SPHINX_HIGHLIGHT_ENABLED = true
/**
* highlight a given string on a node by wrapping it in
* span elements with the given class name.
*/
const _highlight = (node, addItems, text, className) => {
if (node.nodeType === Node.TEXT_NODE) {
const val = node.nodeValue;
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
pos >= 0 &&
!parent.classList.contains(className) &&
!parent.classList.contains("nohighlight")
) {
let span;
const closestNode = parent.closest("body, svg, foreignObject");
const isInSVG = closestNode && closestNode.matches("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.classList.add(className);
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
parent.insertBefore(
span,
parent.insertBefore(
rest,
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
*/
_highlight(rest, addItems, text, className);
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
const bbox = parent.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute("class", className);
addItems.push({ parent: parent, target: rect });
}
}
} else if (node.matches && !node.matches("button, select, textarea")) {
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
}
};
const _highlightText = (thisNode, text, className) => {
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
obj.parent.insertAdjacentElement("beforebegin", obj.target)
);
};
/**
* Small JavaScript module for the documentation.
*/
const SphinxHighlight = {
/**
* highlight the search words provided in localstorage in the text
*/
highlightSearchWords: () => {
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
// get and clear terms from localstorage
const url = new URL(window.location);
const highlight =
localStorage.getItem("sphinx_highlight_terms")
|| url.searchParams.get("highlight")
|| "";
localStorage.removeItem("sphinx_highlight_terms")
url.searchParams.delete("highlight");
window.history.replaceState({}, "", url);
// get individual terms from highlight string
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
const divBody = document.querySelectorAll("div.body");
const body = divBody.length ? divBody[0] : document.querySelector("body");
window.setTimeout(() => {
terms.forEach((term) => _highlightText(body, term, "highlighted"));
}, 10);
const searchBox = document.getElementById("searchbox");
if (searchBox === null) return;
searchBox.appendChild(
document
.createRange()
.createContextualFragment(
'<p class="highlight-link">' +
'<a href="javascript:SphinxHighlight.hideSearchWords()">' +
_("Hide Search Matches") +
"</a></p>"
)
);
},
/**
* helper function to hide the search marks again
*/
hideSearchWords: () => {
document
.querySelectorAll("#searchbox .highlight-link")
.forEach((el) => el.remove());
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
localStorage.removeItem("sphinx_highlight_terms")
},
initEscapeListener: () => {
// only install a listener if it is really needed
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
SphinxHighlight.hideSearchWords();
event.preventDefault();
}
});
},
};
_ready(() => {
/* Do not call highlightSearchWords() when we are on the search page.
* It will highlight words from the *previous* search query.
*/
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
SphinxHighlight.initEscapeListener();
});

Plik diff jest za duży Load Diff

File diff suppressed because one or more lines are too long

Plik diff jest za duży Load Diff

Wyświetl plik

@ -0,0 +1,438 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>M5STACK ATOM-S3 Examples &mdash; st7789py 0.1.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Generic ESP32 Examples" href="examples_generic.html" />
<link rel="prev" title="Example Programs" href="examples.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Example Programs</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#rom-font-conversion">Rom Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#id1">16x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">st7789py</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="examples.html">Example Programs</a></li>
<li class="breadcrumb-item active">M5STACK ATOM-S3 Examples</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/examples_atoms3.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="m5stack-atom-s3-examples">
<h1>M5STACK ATOM-S3 Examples<a class="headerlink" href="#m5stack-atom-s3-examples" title="Link to this heading"></a></h1>
<p>These examples run on the M5Stack ATOM-S3. See <a class="reference external" href="https://shop.m5stack.com/products/atoms3-dev-kit-w-0-85-inch-screen">https://shop.m5stack.com/products/atoms3-dev-kit-w-0-85-inch-screen</a>
for more information.</p>
<section id="atom-s3-feathers-py">
<h2>atom_s3/feathers.py<a class="headerlink" href="#atom-s3-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos"> 41</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">40000000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">17</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">21</span><span class="p">),</span> <span class="n">miso</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="linenos"> 42</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 43</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos"> 44</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos"> 45</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">34</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 47</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 48</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">33</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 49</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 50</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos"> 51</span> <span class="n">color_order</span><span class="o">=</span><span class="n">st7789</span><span class="o">.</span><span class="n">BGR</span><span class="p">)</span>
<span class="linenos"> 52</span>
<span class="linenos"> 53</span>
<span class="linenos"> 54</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 55</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 56</span>
<span class="linenos"> 57</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 58</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">3</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 59</span>
<span class="linenos"> 60</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 61</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 62</span>
<span class="linenos"> 63</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 64</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 65</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 66</span>
<span class="linenos"> 67</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 68</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 69</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 70</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 71</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 72</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 73</span>
<span class="linenos"> 74</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 75</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 76</span>
<span class="linenos"> 77</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 78</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 79</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 80</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 81</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 82</span>
<span class="linenos"> 83</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 84</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 85</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 86</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 87</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 88</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 89</span>
<span class="linenos"> 90</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos"> 91</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 92</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos"> 93</span>
<span class="linenos"> 94</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos"> 95</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos"> 96</span>
<span class="linenos"> 97</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos"> 98</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos"> 99</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">100</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">101</span>
<span class="linenos">102</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">103</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">104</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">105</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">106</span>
<span class="linenos">107</span>
<span class="linenos">108</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="atom-s3-rotations-py">
<h2>atom_s3/rotations.py<a class="headerlink" href="#atom-s3-rotations-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">time</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span><span class="kn">import</span> <span class="nn">vga1_8x8</span> <span class="k">as</span> <span class="nn">font</span>
<span class="linenos">14</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="k">def</span> <span class="nf">center_on</span><span class="p">(</span><span class="n">display</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fg</span><span class="p">,</span> <span class="n">bg</span><span class="p">):</span>
<span class="linenos">17</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos">18</span><span class="sd"> Center the text on the display</span>
<span class="linenos">19</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos">20</span> <span class="n">x</span> <span class="o">=</span> <span class="p">(</span><span class="n">display</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">*</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span>
<span class="linenos">21</span> <span class="n">display</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fg</span><span class="p">,</span> <span class="n">bg</span><span class="p">)</span>
<span class="linenos">22</span>
<span class="linenos">23</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">24</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos">25</span><span class="sd"> The big show!</span>
<span class="linenos">26</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos">27</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos">28</span>
<span class="linenos">29</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">40000000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">17</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">21</span><span class="p">),</span> <span class="n">miso</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="linenos">30</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">31</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">32</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos">33</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">34</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">33</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">39</span> <span class="n">color_order</span><span class="o">=</span><span class="n">st7789</span><span class="o">.</span><span class="n">BGR</span><span class="p">)</span>
<span class="linenos">40</span>
<span class="linenos">41</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos">42</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos">43</span>
<span class="linenos">44</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">45</span> <span class="k">for</span> <span class="n">rotation</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="linenos">46</span> <span class="n">tft</span><span class="o">.</span><span class="n">rotation</span><span class="p">(</span><span class="n">rotation</span><span class="p">)</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">48</span> <span class="n">tft</span><span class="o">.</span><span class="n">rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>
<span class="linenos">49</span> <span class="n">center_on</span><span class="p">(</span><span class="n">tft</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="s2">&quot;Rotation&quot;</span><span class="p">,</span> <span class="n">height</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">50</span> <span class="n">center_on</span><span class="p">(</span><span class="n">tft</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">rotation</span><span class="p">),</span> <span class="n">height</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">51</span> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">52</span>
<span class="linenos">53</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="atom-s3-scroll-py">
<h2>atom_s3/scroll.py<a class="headerlink" href="#atom-s3-scroll-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">scroll.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scrolls all font characters up the screen on the LILYGO® TTGO</span>
<span class="linenos"> 5</span><span class="sd"> T-Display. Only works with fonts with heights that are even multiples of</span>
<span class="linenos"> 6</span><span class="sd"> the screen height, (i.e. 8 or 16 pixels high)</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">time</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">24</span>
<span class="linenos">25</span>
<span class="linenos">26</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">27</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">40000000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">17</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">21</span><span class="p">),</span> <span class="n">miso</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="linenos">28</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">29</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">30</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos">31</span> <span class="mi">128</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">34</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">33</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">37</span> <span class="n">color_order</span><span class="o">=</span><span class="n">st7789</span><span class="o">.</span><span class="n">BGR</span><span class="p">)</span>
<span class="linenos">38</span>
<span class="linenos">39</span> <span class="n">last_line</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">40</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos">41</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">3</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos">42</span>
<span class="linenos">43</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span>
<span class="linenos">44</span>
<span class="linenos">45</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">46</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">47</span> <span class="n">character</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">48</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">49</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">scroll</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">50</span>
<span class="linenos">51</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">%</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">52</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">53</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">54</span> <span class="sa">f</span><span class="s1">&#39; x</span><span class="si">{</span><span class="n">character</span><span class="si">:</span><span class="s1">02x</span><span class="si">}</span><span class="s1">= </span><span class="si">{</span><span class="nb">chr</span><span class="p">(</span><span class="n">character</span><span class="p">)</span><span class="si">}</span><span class="s1"> &#39;</span><span class="p">,</span>
<span class="linenos">55</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">56</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">last_line</span><span class="p">)</span> <span class="o">%</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">57</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span>
<span class="linenos">58</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">59</span>
<span class="linenos">60</span> <span class="n">character</span> <span class="o">=</span> <span class="p">(</span><span class="n">character</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">LAST</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">61</span>
<span class="linenos">62</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">63</span> <span class="n">scroll</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">64</span> <span class="n">time</span><span class="o">.</span><span class="n">sleep_ms</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="linenos">65</span>
<span class="linenos">66</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">==</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
<span class="linenos">67</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">68</span>
<span class="linenos">69</span>
<span class="linenos">70</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples.html" class="btn btn-neutral float-left" title="Example Programs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="examples_generic.html" class="btn btn-neutral float-right" title="Generic ESP32 Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Wyświetl plik

@ -0,0 +1,771 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Generic ESP32 Examples &mdash; st7789py 0.1.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="TTGO T-Display Examples" href="examples_tdisplay.html" />
<link rel="prev" title="M5STACK ATOM-S3 Examples" href="examples_atoms3.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Example Programs</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#rom-font-conversion">Rom Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#id1">16x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">st7789py</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="examples.html">Example Programs</a></li>
<li class="breadcrumb-item active">Generic ESP32 Examples</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/examples_generic.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="generic-esp32-examples">
<h1>Generic ESP32 Examples<a class="headerlink" href="#generic-esp32-examples" title="Link to this heading"></a></h1>
<p>These examples run on a ESP32 board with a 320x240 display. They are were tested using a SparkFun
ESP32 Thing and a Waveshare 2 inch LCD ST7789 Module. You may need to modify the pin use for your
device.</p>
<section id="esp32-320x240-lines-py">
<h2>esp32_320x240/lines.py<a class="headerlink" href="#esp32-320x240-lines-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">lines.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Draws lines and rectangles in random colors at random locations on the</span>
<span class="linenos"> 5</span><span class="sd"> display.</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">11</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">14</span> <span class="c1"># configure display</span>
<span class="linenos">15</span>
<span class="linenos">16</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos">17</span>
<span class="linenos">18</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">19</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">20</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos">21</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">22</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">23</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">24</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">25</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">26</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">27</span>
<span class="linenos">28</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">29</span>
<span class="linenos">30</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">31</span> <span class="n">tft</span><span class="o">.</span><span class="n">line</span><span class="p">(</span>
<span class="linenos">32</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">37</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">39</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">40</span> <span class="p">)</span>
<span class="linenos">41</span> <span class="p">)</span>
<span class="linenos">42</span>
<span class="linenos">43</span> <span class="n">width</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">44</span> <span class="n">height</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">45</span> <span class="n">col</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span>
<span class="linenos">46</span> <span class="n">row</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">48</span> <span class="n">col</span><span class="p">,</span>
<span class="linenos">49</span> <span class="n">row</span><span class="p">,</span>
<span class="linenos">50</span> <span class="n">width</span><span class="p">,</span>
<span class="linenos">51</span> <span class="n">height</span><span class="p">,</span>
<span class="linenos">52</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">53</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">54</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">55</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">56</span> <span class="p">)</span>
<span class="linenos">57</span> <span class="p">)</span>
<span class="linenos">58</span>
<span class="linenos">59</span>
<span class="linenos">60</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="esp32-320x240-hello-py">
<h2>esp32_320x240/hello.py<a class="headerlink" href="#esp32-320x240-hello-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">hello.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Writes &quot;Hello!&quot; in random colors at random locations on the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 8</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">10</span>
<span class="linenos">11</span><span class="c1"># Choose a font</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">14</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">15</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga2_bold_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">24</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">25</span>
<span class="linenos">26</span>
<span class="linenos">27</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">28</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos">29</span>
<span class="linenos">30</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">31</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">32</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos">33</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">39</span>
<span class="linenos">40</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">41</span> <span class="k">for</span> <span class="n">rotation</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="linenos">42</span> <span class="n">tft</span><span class="o">.</span><span class="n">rotation</span><span class="p">(</span><span class="n">rotation</span><span class="p">)</span>
<span class="linenos">43</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">44</span> <span class="n">col_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">*</span><span class="mi">6</span>
<span class="linenos">45</span> <span class="n">row_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">46</span>
<span class="linenos">47</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
<span class="linenos">48</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">49</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">50</span> <span class="s2">&quot;Hello!&quot;</span><span class="p">,</span>
<span class="linenos">51</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">col_max</span><span class="p">),</span>
<span class="linenos">52</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">row_max</span><span class="p">),</span>
<span class="linenos">53</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">54</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">55</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">56</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)),</span>
<span class="linenos">57</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">58</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">59</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">60</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
<span class="linenos">61</span> <span class="p">)</span>
<span class="linenos">62</span>
<span class="linenos">63</span>
<span class="linenos">64</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="esp32-320x240-feathers-py">
<h2>esp32_320x240/feathers.py<a class="headerlink" href="#esp32-320x240-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos"> 43</span>
<span class="linenos"> 44</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 45</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos"> 47</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 48</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 49</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 50</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 51</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 52</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 53</span>
<span class="linenos"> 54</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 55</span>
<span class="linenos"> 56</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 57</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 58</span>
<span class="linenos"> 59</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 60</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 61</span>
<span class="linenos"> 62</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 63</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 64</span>
<span class="linenos"> 65</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 66</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 67</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 68</span>
<span class="linenos"> 69</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 70</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 71</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 72</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 73</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 74</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 75</span>
<span class="linenos"> 76</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 77</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 78</span>
<span class="linenos"> 79</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 80</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 81</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 82</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 83</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 84</span>
<span class="linenos"> 85</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 86</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 87</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 88</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 89</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 90</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 91</span>
<span class="linenos"> 92</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos"> 93</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 94</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos"> 95</span>
<span class="linenos"> 96</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos"> 97</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos"> 98</span>
<span class="linenos"> 99</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos">100</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos">101</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">102</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">103</span>
<span class="linenos">104</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">105</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">106</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">107</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">108</span>
<span class="linenos">109</span>
<span class="linenos">110</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="esp32-320x240-fonts-py">
<h2>esp32_320x240/fonts.py<a class="headerlink" href="#esp32-320x240-fonts-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">fonts.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Pages through all characters of four fonts on the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 8</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">10</span>
<span class="linenos">11</span><span class="c1"># Choose fonts</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">14</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x8</span> <span class="k">as</span> <span class="n">font1</span>
<span class="linenos">15</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">16</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x16</span> <span class="k">as</span> <span class="n">font2</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">20</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font3</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">24</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font4</span>
<span class="linenos">25</span>
<span class="linenos">26</span>
<span class="linenos">27</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">28</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos">29</span>
<span class="linenos">30</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">31</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">32</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos">33</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">39</span>
<span class="linenos">40</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="mi">40</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
<span class="linenos">41</span>
<span class="linenos">42</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">43</span> <span class="k">for</span> <span class="n">font</span> <span class="ow">in</span> <span class="p">(</span><span class="n">font1</span><span class="p">,</span> <span class="n">font2</span><span class="p">,</span> <span class="n">font3</span><span class="p">,</span> <span class="n">font4</span><span class="p">):</span>
<span class="linenos">44</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">45</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">46</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">47</span>
<span class="linenos">48</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">font</span><span class="o">.</span><span class="n">LAST</span><span class="p">):</span>
<span class="linenos">49</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">char</span><span class="p">),</span> <span class="n">col</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">50</span> <span class="n">col</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span>
<span class="linenos">51</span> <span class="k">if</span> <span class="n">col</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">:</span>
<span class="linenos">52</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">53</span> <span class="n">line</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">54</span>
<span class="linenos">55</span> <span class="k">if</span> <span class="n">line</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="o">-</span><span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">:</span>
<span class="linenos">56</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">57</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">58</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">59</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">60</span>
<span class="linenos">61</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">62</span>
<span class="linenos">63</span>
<span class="linenos">64</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="esp32-320x240-scroll-py">
<h2>esp32_320x240/scroll.py<a class="headerlink" href="#esp32-320x240-scroll-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">fonts.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scrolls all font characters up the screen on the display.</span>
<span class="linenos"> 5</span><span class="sd"> Only works with fonts with heights that are even multiples of</span>
<span class="linenos"> 6</span><span class="sd"> the screen height, (i.e. 8 or 16 pixels high)</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">24</span>
<span class="linenos">25</span>
<span class="linenos">26</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">27</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos">28</span>
<span class="linenos">29</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">30</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">31</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos">32</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">33</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">38</span>
<span class="linenos">39</span> <span class="n">last_line</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">40</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">41</span> <span class="n">tfb</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">42</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="n">tfb</span><span class="p">)</span>
<span class="linenos">43</span>
<span class="linenos">44</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">45</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">46</span> <span class="n">character</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">47</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">48</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">scroll</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">49</span>
<span class="linenos">50</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">%</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">51</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">52</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">53</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">x</span><span class="si">{:02x}</span><span class="s1">= </span><span class="si">{:s}</span><span class="s1"> &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">character</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">character</span><span class="p">)),</span>
<span class="linenos">54</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">55</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">last_line</span><span class="p">)</span> <span class="o">%</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">56</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span>
<span class="linenos">57</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">58</span>
<span class="linenos">59</span> <span class="n">character</span> <span class="o">=</span> <span class="n">character</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">character</span> <span class="o">&lt;</span> <span class="mi">256</span> <span class="k">else</span> <span class="mi">0</span>
<span class="linenos">60</span>
<span class="linenos">61</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">62</span> <span class="n">scroll</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">63</span>
<span class="linenos">64</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">==</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
<span class="linenos">65</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">66</span>
<span class="linenos">67</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
<span class="linenos">68</span>
<span class="linenos">69</span>
<span class="linenos">70</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="esp32-320x240-toasters-py">
<h2>esp32_320x240/toasters.py<a class="headerlink" href="#esp32-320x240-toasters-py" title="Link to this heading"></a></h2>
<p>Flying toasters sprite demo using bitmaps created from spritesheet using the sprites2bitmap.py
utility. See the maketoast shell script for the command line used to create the toast_bitmaps.py from the
toasters.bmp image.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 2</span><span class="sd">toasters.py - Flying Toasters(ish) an ESP-32 and ST7789 240x320 display.</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Uses spritesheet from CircuitPython_Flying_Toasters pendant project</span>
<span class="linenos"> 5</span><span class="sd"> https://learn.adafruit.com/circuitpython-sprite-animation-pendant-mario-clouds-flying-toasters</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd"> Convert spritesheet bmp to tft.bitmap() method compatible python module using:</span>
<span class="linenos"> 8</span><span class="sd"> python3 ./sprites2bitmap.py toasters.bmp 64 64 4 &gt; toast_bitmaps.py</span>
<span class="linenos"> 9</span>
<span class="linenos"> 10</span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 11</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">gc</span>
<span class="linenos"> 13</span><span class="kn">import</span> <span class="nn">time</span>
<span class="linenos"> 14</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 15</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SPI</span>
<span class="linenos"> 16</span><span class="kn">import</span> <span class="nn">st7789</span>
<span class="linenos"> 17</span><span class="kn">import</span> <span class="nn">toast_bitmaps</span>
<span class="linenos"> 18</span>
<span class="linenos"> 19</span><span class="n">TOASTER_FRAMES</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="linenos"> 20</span><span class="n">TOAST_FRAMES</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span>
<span class="linenos"> 21</span>
<span class="linenos"> 22</span><span class="k">def</span> <span class="nf">collide</span><span class="p">(</span><span class="n">a_col</span><span class="p">,</span> <span class="n">a_row</span><span class="p">,</span> <span class="n">a_width</span><span class="p">,</span> <span class="n">a_height</span><span class="p">,</span> <span class="n">b_col</span><span class="p">,</span> <span class="n">b_row</span><span class="p">,</span> <span class="n">b_width</span><span class="p">,</span> <span class="n">b_height</span><span class="p">):</span>
<span class="linenos"> 23</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;return true if two rectangles overlap&#39;&#39;&#39;</span>
<span class="linenos"> 24</span> <span class="k">return</span> <span class="p">(</span><span class="n">a_col</span> <span class="o">+</span> <span class="n">a_width</span> <span class="o">&gt;=</span> <span class="n">b_col</span> <span class="ow">and</span> <span class="n">a_col</span> <span class="o">&lt;=</span> <span class="n">b_col</span> <span class="o">+</span> <span class="n">b_width</span>
<span class="linenos"> 25</span> <span class="ow">and</span> <span class="n">a_row</span> <span class="o">+</span> <span class="n">a_height</span> <span class="o">&gt;=</span> <span class="n">b_row</span> <span class="ow">and</span> <span class="n">a_row</span> <span class="o">&lt;=</span> <span class="n">b_row</span> <span class="o">+</span> <span class="n">b_height</span><span class="p">)</span>
<span class="linenos"> 26</span>
<span class="linenos"> 27</span><span class="k">def</span> <span class="nf">random_start</span><span class="p">(</span><span class="n">tft</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="n">bitmaps</span><span class="p">,</span> <span class="n">num</span><span class="p">):</span>
<span class="linenos"> 28</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 29</span><span class="sd"> Return a random location along the top or right of the screen, if that location would overlaps</span>
<span class="linenos"> 30</span><span class="sd"> with another sprite return (0,0). This allows the other sprites to keep moving giving the next</span>
<span class="linenos"> 31</span><span class="sd"> random_start a better chance to avoid a collision.</span>
<span class="linenos"> 32</span>
<span class="linenos"> 33</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 34</span> <span class="c1"># 50/50 chance to try along the top/right half or along the right/top half of the screen</span>
<span class="linenos"> 35</span> <span class="k">if</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">1</span><span class="p">):</span>
<span class="linenos"> 36</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">1</span>
<span class="linenos"> 37</span> <span class="n">col</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">bitmaps</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">//</span><span class="mi">2</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">()</span><span class="o">-</span><span class="n">bitmaps</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">)</span>
<span class="linenos"> 38</span> <span class="k">else</span><span class="p">:</span>
<span class="linenos"> 39</span> <span class="n">col</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">bitmaps</span><span class="o">.</span><span class="n">WIDTH</span>
<span class="linenos"> 40</span> <span class="n">row</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">()</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">collide</span><span class="p">(</span>
<span class="linenos"> 43</span> <span class="n">col</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">bitmaps</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">,</span> <span class="n">bitmaps</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span>
<span class="linenos"> 44</span> <span class="n">sprite</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">row</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">height</span><span class="p">)</span>
<span class="linenos"> 45</span> <span class="k">for</span> <span class="n">sprite</span> <span class="ow">in</span> <span class="n">sprites</span> <span class="k">if</span> <span class="n">num</span> <span class="o">!=</span> <span class="n">sprite</span><span class="o">.</span><span class="n">num</span><span class="p">):</span>
<span class="linenos"> 46</span>
<span class="linenos"> 47</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 48</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 49</span>
<span class="linenos"> 50</span> <span class="k">return</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">row</span><span class="p">)</span>
<span class="linenos"> 51</span>
<span class="linenos"> 52</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 53</span>
<span class="linenos"> 54</span> <span class="k">class</span> <span class="nc">Toast</span><span class="p">():</span>
<span class="linenos"> 55</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 56</span><span class="sd"> Toast class to keep track of toaster and toast sprites</span>
<span class="linenos"> 57</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 58</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="n">bitmaps</span><span class="p">,</span> <span class="n">frames</span><span class="p">):</span>
<span class="linenos"> 59</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;create new sprite in random location that does not overlap other sprites&#39;&#39;&#39;</span>
<span class="linenos"> 60</span> <span class="bp">self</span><span class="o">.</span><span class="n">num</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sprites</span><span class="p">)</span>
<span class="linenos"> 61</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitmaps</span> <span class="o">=</span> <span class="n">bitmaps</span>
<span class="linenos"> 62</span> <span class="bp">self</span><span class="o">.</span><span class="n">frames</span> <span class="o">=</span> <span class="n">frames</span>
<span class="linenos"> 63</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">frames</span><span class="p">)</span>
<span class="linenos"> 64</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">=</span> <span class="n">random_start</span><span class="p">(</span><span class="n">tft</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="n">bitmaps</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num</span><span class="p">)</span>
<span class="linenos"> 65</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">bitmaps</span><span class="o">.</span><span class="n">WIDTH</span>
<span class="linenos"> 66</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">bitmaps</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos"> 67</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span>
<span class="linenos"> 68</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span>
<span class="linenos"> 69</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span><span class="p">)</span>
<span class="linenos"> 70</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span> <span class="o">=</span> <span class="o">-</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos"> 71</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span> <span class="o">=</span> <span class="mi">2</span>
<span class="linenos"> 72</span> <span class="bp">self</span><span class="o">.</span><span class="n">prev_dir_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span>
<span class="linenos"> 73</span> <span class="bp">self</span><span class="o">.</span><span class="n">prev_dir_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span>
<span class="linenos"> 74</span> <span class="bp">self</span><span class="o">.</span><span class="n">iceberg</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 75</span>
<span class="linenos"> 76</span> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="linenos"> 77</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;clear above and behind sprite&#39;&#39;&#39;</span>
<span class="linenos"> 78</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos"> 79</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos"> 80</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 81</span>
<span class="linenos"> 82</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos"> 83</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span><span class="o">+</span><span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="o">+</span><span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span><span class="p">,</span>
<span class="linenos"> 84</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 85</span>
<span class="linenos"> 86</span> <span class="k">def</span> <span class="nf">erase</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="linenos"> 87</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;erase last postion of sprite&#39;&#39;&#39;</span>
<span class="linenos"> 88</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos"> 89</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_row</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 90</span>
<span class="linenos"> 91</span> <span class="k">def</span> <span class="nf">move</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sprites</span><span class="p">):</span>
<span class="linenos"> 92</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;step frame and move sprite&#39;&#39;&#39;</span>
<span class="linenos"> 93</span>
<span class="linenos"> 94</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span><span class="p">:</span>
<span class="linenos"> 95</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span>
<span class="linenos"> 96</span>
<span class="linenos"> 97</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span>
<span class="linenos"> 98</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span>
<span class="linenos"> 99</span> <span class="n">new_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span>
<span class="linenos">100</span> <span class="n">new_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span>
<span class="linenos">101</span>
<span class="linenos">102</span> <span class="c1"># if new location collides with another sprite, change direction for 32 frames</span>
<span class="linenos">103</span>
<span class="linenos">104</span> <span class="k">for</span> <span class="n">sprite</span> <span class="ow">in</span> <span class="n">sprites</span><span class="p">:</span>
<span class="linenos">105</span> <span class="k">if</span> <span class="p">(</span>
<span class="linenos">106</span> <span class="bp">self</span><span class="o">.</span><span class="n">num</span> <span class="o">!=</span> <span class="n">sprite</span><span class="o">.</span><span class="n">num</span>
<span class="linenos">107</span> <span class="ow">and</span> <span class="n">collide</span><span class="p">(</span>
<span class="linenos">108</span> <span class="n">new_col</span><span class="p">,</span> <span class="n">new_row</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">109</span> <span class="n">sprite</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">row</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="n">sprite</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">110</span> <span class="p">)</span>
<span class="linenos">111</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">&gt;</span> <span class="n">sprite</span><span class="o">.</span><span class="n">col</span><span class="p">)):</span>
<span class="linenos">112</span>
<span class="linenos">113</span> <span class="bp">self</span><span class="o">.</span><span class="n">iceberg</span> <span class="o">=</span> <span class="mi">32</span>
<span class="linenos">114</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
<span class="linenos">115</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span> <span class="o">=</span> <span class="mi">3</span>
<span class="linenos">116</span> <span class="n">new_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span>
<span class="linenos">117</span> <span class="n">new_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span>
<span class="linenos">118</span>
<span class="linenos">119</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="n">new_col</span>
<span class="linenos">120</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">=</span> <span class="n">new_row</span>
<span class="linenos">121</span>
<span class="linenos">122</span> <span class="c1"># if new location touches edge of screen, erase then set new start location</span>
<span class="linenos">123</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
<span class="linenos">124</span> <span class="bp">self</span><span class="o">.</span><span class="n">erase</span><span class="p">()</span>
<span class="linenos">125</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span> <span class="o">=</span> <span class="o">-</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos">126</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span> <span class="o">=</span> <span class="mi">2</span>
<span class="linenos">127</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span> <span class="o">=</span> <span class="n">random_start</span><span class="p">(</span><span class="n">tft</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bitmaps</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num</span><span class="p">)</span>
<span class="linenos">128</span>
<span class="linenos">129</span> <span class="c1"># Track post collision direction change</span>
<span class="linenos">130</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">iceberg</span><span class="p">:</span>
<span class="linenos">131</span> <span class="bp">self</span><span class="o">.</span><span class="n">iceberg</span> <span class="o">-=</span> <span class="mi">1</span>
<span class="linenos">132</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">iceberg</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="linenos">133</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prev_dir_col</span>
<span class="linenos">134</span> <span class="bp">self</span><span class="o">.</span><span class="n">dir_row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prev_dir_row</span>
<span class="linenos">135</span>
<span class="linenos">136</span> <span class="k">def</span> <span class="nf">draw</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="linenos">137</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;if the location is not 0,0 draw current frame of sprite at it&#39;s location&#39;&#39;&#39;</span>
<span class="linenos">138</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span><span class="p">:</span>
<span class="linenos">139</span> <span class="n">tft</span><span class="o">.</span><span class="n">bitmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bitmaps</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">frames</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">])</span>
<span class="linenos">140</span>
<span class="linenos">141</span> <span class="c1"># configure spi interface</span>
<span class="linenos">142</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SPI</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">31250000</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">))</span>
<span class="linenos">143</span>
<span class="linenos">144</span> <span class="c1"># configure display</span>
<span class="linenos">145</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">146</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">147</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">148</span> <span class="mi">320</span><span class="p">,</span>
<span class="linenos">149</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">150</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">151</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">152</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">153</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">154</span> <span class="n">buffer_size</span><span class="o">=</span><span class="mi">64</span><span class="o">*</span><span class="mi">62</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
<span class="linenos">155</span>
<span class="linenos">156</span> <span class="c1"># init and clear screen</span>
<span class="linenos">157</span> <span class="n">tft</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
<span class="linenos">158</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">159</span>
<span class="linenos">160</span> <span class="c1"># create toast spites and set animation frames</span>
<span class="linenos">161</span> <span class="n">sprites</span> <span class="o">=</span> <span class="p">[]</span>
<span class="linenos">162</span> <span class="n">sprites</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Toast</span><span class="p">(</span><span class="n">sprites</span><span class="p">,</span> <span class="n">toast_bitmaps</span><span class="p">,</span> <span class="n">TOAST_FRAMES</span><span class="p">))</span>
<span class="linenos">163</span> <span class="n">sprites</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Toast</span><span class="p">(</span><span class="n">sprites</span><span class="p">,</span> <span class="n">toast_bitmaps</span><span class="p">,</span> <span class="n">TOASTER_FRAMES</span><span class="p">))</span>
<span class="linenos">164</span> <span class="n">sprites</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Toast</span><span class="p">(</span><span class="n">sprites</span><span class="p">,</span> <span class="n">toast_bitmaps</span><span class="p">,</span> <span class="n">TOASTER_FRAMES</span><span class="p">))</span>
<span class="linenos">165</span>
<span class="linenos">166</span> <span class="c1"># move and draw sprites</span>
<span class="linenos">167</span>
<span class="linenos">168</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">169</span> <span class="k">for</span> <span class="n">sprite</span> <span class="ow">in</span> <span class="n">sprites</span><span class="p">:</span>
<span class="linenos">170</span> <span class="n">sprite</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="linenos">171</span> <span class="n">sprite</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sprites</span><span class="p">)</span>
<span class="linenos">172</span> <span class="n">sprite</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
<span class="linenos">173</span>
<span class="linenos">174</span> <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span>
<span class="linenos">175</span> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
<span class="linenos">176</span>
<span class="linenos">177</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples_atoms3.html" class="btn btn-neutral float-left" title="M5STACK ATOM-S3 Examples" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="examples_tdisplay.html" class="btn btn-neutral float-right" title="TTGO T-Display Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Wyświetl plik

@ -0,0 +1,415 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Raspberry Pi Pico Examples &mdash; st7789py 0.1.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Fonts" href="fonts.html" />
<link rel="prev" title="TTGO T-Display RP2040 Examples" href="examples_tdisplay_rp2040.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Example Programs</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#rom-font-conversion">Rom Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#id1">16x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">st7789py</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="examples.html">Example Programs</a></li>
<li class="breadcrumb-item active">Raspberry Pi Pico Examples</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/examples_pi_pico.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="raspberry-pi-pico-examples">
<h1>Raspberry Pi Pico Examples<a class="headerlink" href="#raspberry-pi-pico-examples" title="Link to this heading"></a></h1>
<p>These examples run on the Raspberry Pi Pico with Waveshare displays</p>
<section id="rp-2040-waveshare-13-feathers-py">
<h2>rp_2040/waveshare_13/feathers.py<a class="headerlink" href="#rp-2040-waveshare-13-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 43</span> <span class="n">SoftSPI</span><span class="p">(</span><span class="n">baudrate</span><span class="o">=</span><span class="mi">30000000</span><span class="p">,</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">11</span><span class="p">),</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">)),</span>
<span class="linenos"> 44</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 45</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 47</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 48</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 49</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 50</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 51</span>
<span class="linenos"> 52</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 53</span>
<span class="linenos"> 54</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 55</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 56</span>
<span class="linenos"> 57</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 58</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">80</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 59</span>
<span class="linenos"> 60</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 61</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 62</span>
<span class="linenos"> 63</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 64</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 65</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 66</span>
<span class="linenos"> 67</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 68</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 69</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 70</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 71</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 72</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 73</span>
<span class="linenos"> 74</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 75</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 76</span>
<span class="linenos"> 77</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 78</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 79</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 80</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 81</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 82</span>
<span class="linenos"> 83</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 84</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 85</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 86</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 87</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 88</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 89</span>
<span class="linenos"> 90</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos"> 91</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 92</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos"> 93</span>
<span class="linenos"> 94</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos"> 95</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos"> 96</span>
<span class="linenos"> 97</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos"> 98</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos"> 99</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">100</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">101</span>
<span class="linenos">102</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">103</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">104</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">105</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">106</span>
<span class="linenos">107</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="rp-2040-waveshare-114-feathers-py">
<h2>rp_2040/waveshare_114/feathers.py<a class="headerlink" href="#rp-2040-waveshare-114-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 43</span> <span class="n">SoftSPI</span><span class="p">(</span><span class="n">baudrate</span><span class="o">=</span><span class="mi">30000000</span><span class="p">,</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">11</span><span class="p">),</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">)),</span>
<span class="linenos"> 44</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos"> 45</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 47</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 48</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 49</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 50</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 51</span>
<span class="linenos"> 52</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 53</span>
<span class="linenos"> 54</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 55</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 56</span>
<span class="linenos"> 57</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 58</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 59</span>
<span class="linenos"> 60</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 61</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 62</span>
<span class="linenos"> 63</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 64</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 65</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 66</span>
<span class="linenos"> 67</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 68</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 69</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 70</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 71</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 72</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 73</span>
<span class="linenos"> 74</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 75</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 76</span>
<span class="linenos"> 77</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 78</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 79</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 80</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 81</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 82</span>
<span class="linenos"> 83</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 84</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 85</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 86</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 87</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 88</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 89</span>
<span class="linenos"> 90</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos"> 91</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos"> 92</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos"> 93</span>
<span class="linenos"> 94</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos"> 95</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos"> 96</span>
<span class="linenos"> 97</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos"> 98</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos"> 99</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">100</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">101</span>
<span class="linenos">102</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">103</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">104</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">105</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">106</span>
<span class="linenos">107</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples_tdisplay_rp2040.html" class="btn btn-neutral float-left" title="TTGO T-Display RP2040 Examples" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="fonts.html" class="btn btn-neutral float-right" title="Fonts" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Wyświetl plik

@ -0,0 +1,857 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TTGO T-Display Examples &mdash; st7789py 0.1.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="TTGO T-Display RP2040 Examples" href="examples_tdisplay_rp2040.html" />
<link rel="prev" title="Generic ESP32 Examples" href="examples_generic.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Example Programs</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#rom-font-conversion">Rom Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#id1">16x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">st7789py</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="examples.html">Example Programs</a></li>
<li class="breadcrumb-item active">TTGO T-Display Examples</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/examples_tdisplay.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ttgo-t-display-examples">
<h1>TTGO T-Display Examples<a class="headerlink" href="#ttgo-t-display-examples" title="Link to this heading"></a></h1>
<p>These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See <a class="reference external" href="https://github.com/Xinyuan-LilyGO/TTGO-T-Display">https://github.com/Xinyuan-LilyGO/TTGO-T-Display</a> for more
information.</p>
<section id="ttgo-tdisplay-lines-py">
<h2>ttgo_tdisplay/lines.py<a class="headerlink" href="#ttgo-tdisplay-lines-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">lines.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Draws lines and rectangles in random colors at random locations on the</span>
<span class="linenos"> 5</span><span class="sd"> display.</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">11</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">14</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">15</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">16</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">17</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">18</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">19</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">20</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">21</span>
<span class="linenos">22</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">23</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">24</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">25</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">26</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">27</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">28</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">29</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">30</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">31</span>
<span class="linenos">32</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">33</span>
<span class="linenos">34</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">35</span> <span class="n">tft</span><span class="o">.</span><span class="n">line</span><span class="p">(</span>
<span class="linenos">36</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">39</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">40</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">41</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">44</span> <span class="p">)</span>
<span class="linenos">45</span> <span class="p">)</span>
<span class="linenos">46</span>
<span class="linenos">47</span> <span class="n">width</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">48</span> <span class="n">height</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">49</span> <span class="n">col</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span>
<span class="linenos">50</span> <span class="n">row</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span>
<span class="linenos">51</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">52</span> <span class="n">col</span><span class="p">,</span>
<span class="linenos">53</span> <span class="n">row</span><span class="p">,</span>
<span class="linenos">54</span> <span class="n">width</span><span class="p">,</span>
<span class="linenos">55</span> <span class="n">height</span><span class="p">,</span>
<span class="linenos">56</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">57</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">58</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">59</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">60</span> <span class="p">)</span>
<span class="linenos">61</span> <span class="p">)</span>
<span class="linenos">62</span>
<span class="linenos">63</span>
<span class="linenos">64</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-hello-py">
<h2>ttgo_tdisplay/hello.py<a class="headerlink" href="#ttgo-tdisplay-hello-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">hello.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Writes &quot;Hello!&quot; in random colors at random locations on a</span>
<span class="linenos"> 5</span><span class="sd"> LILYGO® TTGO T-Display.</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd"> https://www.youtube.com/watch?v=atBa0BYPAAc</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># Choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga2_bold_16x16 as font</span>
<span class="linenos">24</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">25</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">26</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">27</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">28</span>
<span class="linenos">29</span>
<span class="linenos">30</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">31</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">32</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">33</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">35</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">38</span>
<span class="linenos">39</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">40</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">41</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">42</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">43</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">45</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">46</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">47</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">48</span>
<span class="linenos">49</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">50</span> <span class="k">for</span> <span class="n">rotation</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="linenos">51</span> <span class="n">tft</span><span class="o">.</span><span class="n">rotation</span><span class="p">(</span><span class="n">rotation</span><span class="p">)</span>
<span class="linenos">52</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">col_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">*</span><span class="mi">6</span>
<span class="linenos">54</span> <span class="n">row_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">55</span>
<span class="linenos">56</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
<span class="linenos">57</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">58</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">59</span> <span class="s2">&quot;Hello!&quot;</span><span class="p">,</span>
<span class="linenos">60</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">col_max</span><span class="p">),</span>
<span class="linenos">61</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">row_max</span><span class="p">),</span>
<span class="linenos">62</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">63</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">64</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">65</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)),</span>
<span class="linenos">66</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">67</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">68</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">69</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
<span class="linenos">70</span> <span class="p">)</span>
<span class="linenos">71</span>
<span class="linenos">72</span>
<span class="linenos">73</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-feathers-py">
<h2>ttgo_tdisplay/feathers.py<a class="headerlink" href="#ttgo-tdisplay-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1">#enable display and clear screen</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos"> 43</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos"> 44</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos"> 45</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos"> 47</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos"> 48</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos"> 49</span>
<span class="linenos"> 50</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 51</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos"> 52</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos"> 53</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 54</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 55</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 56</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 57</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 58</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 59</span>
<span class="linenos"> 60</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 61</span>
<span class="linenos"> 62</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 63</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 64</span>
<span class="linenos"> 65</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 66</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 67</span>
<span class="linenos"> 68</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 69</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 70</span>
<span class="linenos"> 71</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 72</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 73</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 74</span>
<span class="linenos"> 75</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 76</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 77</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 78</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 79</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 80</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 81</span>
<span class="linenos"> 82</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 83</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 84</span>
<span class="linenos"> 85</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 86</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 87</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 88</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 89</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 90</span>
<span class="linenos"> 91</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 92</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 93</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 94</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 95</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 96</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 97</span>
<span class="linenos"> 98</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos"> 99</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">100</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">101</span>
<span class="linenos">102</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos">103</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos">104</span>
<span class="linenos">105</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos">106</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos">107</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">108</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span><span class="o">&lt;&lt;</span><span class="mi">2</span><span class="p">)))</span>
<span class="linenos">109</span>
<span class="linenos">110</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">111</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">112</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">113</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">114</span>
<span class="linenos">115</span>
<span class="linenos">116</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-fonts-py">
<h2>ttgo_tdisplay/fonts.py<a class="headerlink" href="#ttgo-tdisplay-fonts-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">fonts.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Pages through all characters of four fonts on the LILYGO® TTGO T-Display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd"> https://www.youtube.com/watch?v=2cnAhEucPD4</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos">10</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">11</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="c1"># Choose fonts</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">16</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x8</span> <span class="k">as</span> <span class="n">font1</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">18</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x16</span> <span class="k">as</span> <span class="n">font2</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">22</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font3</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">24</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">25</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">26</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font4</span>
<span class="linenos">27</span>
<span class="linenos">28</span>
<span class="linenos">29</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">30</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">31</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">33</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">37</span>
<span class="linenos">38</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">39</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">40</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">41</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">42</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">45</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">46</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">47</span>
<span class="linenos">48</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="mi">40</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
<span class="linenos">49</span>
<span class="linenos">50</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">51</span> <span class="k">for</span> <span class="n">font</span> <span class="ow">in</span> <span class="p">(</span><span class="n">font1</span><span class="p">,</span> <span class="n">font2</span><span class="p">,</span> <span class="n">font3</span><span class="p">,</span> <span class="n">font4</span><span class="p">):</span>
<span class="linenos">52</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">54</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">55</span>
<span class="linenos">56</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">font</span><span class="o">.</span><span class="n">LAST</span><span class="p">):</span>
<span class="linenos">57</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">char</span><span class="p">),</span> <span class="n">col</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">58</span> <span class="n">col</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span>
<span class="linenos">59</span> <span class="k">if</span> <span class="n">col</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">:</span>
<span class="linenos">60</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">61</span> <span class="n">line</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">62</span>
<span class="linenos">63</span> <span class="k">if</span> <span class="n">line</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="o">-</span><span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">:</span>
<span class="linenos">64</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">65</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">66</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">67</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">68</span>
<span class="linenos">69</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">70</span>
<span class="linenos">71</span>
<span class="linenos">72</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-scroll-py">
<h2>ttgo_tdisplay/scroll.py<a class="headerlink" href="#ttgo-tdisplay-scroll-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">scroll.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scrolls all font characters up the screen on the LILYGO® TTGO</span>
<span class="linenos"> 5</span><span class="sd"> T-Display. Only works with fonts with heights that are even multiples of</span>
<span class="linenos"> 6</span><span class="sd"> the screen height, (i.e. 8 or 16 pixels high)</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">24</span>
<span class="linenos">25</span>
<span class="linenos">26</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">27</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">28</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">29</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">30</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">31</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">32</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">34</span>
<span class="linenos">35</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">36</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">37</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">38</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">39</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">40</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">41</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">44</span>
<span class="linenos">45</span> <span class="n">last_line</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">46</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">40</span>
<span class="linenos">47</span> <span class="n">tfb</span> <span class="o">=</span> <span class="mi">40</span>
<span class="linenos">48</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="n">tfb</span><span class="p">)</span>
<span class="linenos">49</span>
<span class="linenos">50</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">51</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">52</span> <span class="n">character</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">53</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">54</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">scroll</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">55</span>
<span class="linenos">56</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">%</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">57</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">58</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">59</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">x</span><span class="si">{:02x}</span><span class="s1">= </span><span class="si">{:s}</span><span class="s1"> &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">character</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">character</span><span class="p">)),</span>
<span class="linenos">60</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">61</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">last_line</span><span class="p">)</span> <span class="o">%</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">62</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span>
<span class="linenos">63</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">64</span>
<span class="linenos">65</span> <span class="n">character</span> <span class="o">=</span> <span class="n">character</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">character</span> <span class="o">&lt;</span> <span class="mi">256</span> <span class="k">else</span> <span class="mi">0</span>
<span class="linenos">66</span>
<span class="linenos">67</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">68</span> <span class="n">scroll</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">69</span>
<span class="linenos">70</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">==</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
<span class="linenos">71</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">72</span>
<span class="linenos">73</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
<span class="linenos">74</span>
<span class="linenos">75</span>
<span class="linenos">76</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-toasters-py">
<h2>ttgo_tdisplay/toasters.py<a class="headerlink" href="#ttgo-tdisplay-toasters-py" title="Link to this heading"></a></h2>
<p>Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">toasters.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> An example using bitmap to draw sprites on the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd"> Spritesheet from CircuitPython_Flying_Toasters</span>
<span class="linenos"> 7</span><span class="sd"> https://learn.adafruit.com/circuitpython-sprite-animation-pendant-mario-clouds-flying-toasters</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">10</span>
<span class="linenos">11</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">13</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">14</span><span class="kn">import</span> <span class="nn">t1</span><span class="o">,</span> <span class="nn">t2</span><span class="o">,</span> <span class="nn">t3</span><span class="o">,</span> <span class="nn">t4</span><span class="o">,</span> <span class="nn">t5</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="n">TOASTERS</span> <span class="o">=</span> <span class="p">[</span><span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="n">t3</span><span class="p">,</span> <span class="n">t4</span><span class="p">]</span>
<span class="linenos">17</span><span class="n">TOAST</span> <span class="o">=</span> <span class="p">[</span><span class="n">t5</span><span class="p">]</span>
<span class="linenos">18</span>
<span class="linenos">19</span>
<span class="linenos">20</span><span class="k">class</span> <span class="nc">toast</span><span class="p">():</span>
<span class="linenos">21</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos">22</span><span class="sd"> toast class to keep track of a sprites locaton and step</span>
<span class="linenos">23</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos">24</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="linenos">25</span> <span class="bp">self</span><span class="o">.</span><span class="n">sprites</span> <span class="o">=</span> <span class="n">sprites</span>
<span class="linenos">26</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sprites</span><span class="p">)</span>
<span class="linenos">27</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
<span class="linenos">28</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
<span class="linenos">29</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">30</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos">31</span>
<span class="linenos">32</span> <span class="k">def</span> <span class="nf">move</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="linenos">33</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">34</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos">35</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="mi">135</span> <span class="o">-</span> <span class="mi">64</span>
<span class="linenos">36</span>
<span class="linenos">37</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">38</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">%=</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span>
<span class="linenos">39</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-=</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span>
<span class="linenos">40</span>
<span class="linenos">41</span>
<span class="linenos">42</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">43</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">44</span><span class="sd"> Initialize the display and draw flying toasters and toast</span>
<span class="linenos">45</span><span class="sd"> &quot;&quot;&quot;</span>
<span class="linenos">46</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">47</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">48</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">49</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">50</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">51</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">52</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">53</span>
<span class="linenos">54</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">55</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">56</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">57</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">58</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">59</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">60</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">61</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">62</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">63</span>
<span class="linenos">64</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">65</span> <span class="c1"># create toast spites in random positions</span>
<span class="linenos">66</span> <span class="n">sprites</span> <span class="o">=</span> <span class="p">[</span>
<span class="linenos">67</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOASTERS</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
<span class="linenos">68</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOAST</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span>
<span class="linenos">69</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOASTERS</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="o">*</span><span class="mi">4</span><span class="p">,</span> <span class="mi">160</span><span class="p">)</span>
<span class="linenos">70</span> <span class="p">]</span>
<span class="linenos">71</span>
<span class="linenos">72</span> <span class="c1"># move and draw sprites</span>
<span class="linenos">73</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">74</span> <span class="k">for</span> <span class="n">man</span> <span class="ow">in</span> <span class="n">sprites</span><span class="p">:</span>
<span class="linenos">75</span> <span class="n">bitmap</span> <span class="o">=</span> <span class="n">man</span><span class="o">.</span><span class="n">sprites</span><span class="p">[</span><span class="n">man</span><span class="o">.</span><span class="n">step</span><span class="p">]</span>
<span class="linenos">76</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">77</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span><span class="o">+</span><span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">-</span><span class="n">man</span><span class="o">.</span><span class="n">speed</span><span class="p">,</span>
<span class="linenos">78</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
<span class="linenos">79</span> <span class="n">man</span><span class="o">.</span><span class="n">speed</span><span class="p">,</span>
<span class="linenos">80</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span>
<span class="linenos">81</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">82</span>
<span class="linenos">83</span> <span class="n">man</span><span class="o">.</span><span class="n">move</span><span class="p">()</span>
<span class="linenos">84</span>
<span class="linenos">85</span> <span class="k">if</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">86</span> <span class="n">tft</span><span class="o">.</span><span class="n">bitmap</span><span class="p">(</span><span class="n">bitmap</span><span class="p">,</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
<span class="linenos">87</span> <span class="k">else</span><span class="p">:</span>
<span class="linenos">88</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">89</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">90</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
<span class="linenos">91</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">,</span>
<span class="linenos">92</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span>
<span class="linenos">93</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">94</span>
<span class="linenos">95</span>
<span class="linenos">96</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-chango-py">
<h2>ttgo_tdisplay/chango.py<a class="headerlink" href="#ttgo-tdisplay-chango-py" title="Link to this heading"></a></h2>
<p>Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">chango.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Test for font2bitmap converter for the driver.</span>
<span class="linenos"> 5</span><span class="sd"> See the font2bitmap program in the utils directory.</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">gc</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_16</span> <span class="k">as</span> <span class="n">font_16</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_32</span> <span class="k">as</span> <span class="n">font_32</span>
<span class="linenos">13</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_64</span> <span class="k">as</span> <span class="n">font_64</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span>
<span class="linenos">16</span>
<span class="linenos">17</span>
<span class="linenos">18</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">19</span> <span class="c1"># enable display and clear screen</span>
<span class="linenos">20</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">21</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">22</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">23</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">24</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">25</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">26</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">27</span>
<span class="linenos">28</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">29</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">30</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">31</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">37</span>
<span class="linenos">38</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">39</span>
<span class="linenos">40</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">41</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_16</span><span class="p">,</span> <span class="s2">&quot;abcdefghijklmnopqrst&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>
<span class="linenos">42</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_16</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">43</span>
<span class="linenos">44</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_32</span><span class="p">,</span> <span class="s2">&quot;abcdefghij&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>
<span class="linenos">45</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_32</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">46</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_64</span><span class="p">,</span> <span class="s2">&quot;abcd&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">48</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_64</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">49</span>
<span class="linenos">50</span>
<span class="linenos">51</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-noto-fonts-py">
<h2>ttgo_tdisplay/noto_fonts.py<a class="headerlink" href="#ttgo-tdisplay-noto-fonts-py" title="Link to this heading"></a></h2>
<p>Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">noto_fonts Writes the names of three Noto fonts centered on the display</span>
<span class="linenos"> 3</span><span class="sd"> using the font. The fonts were converted from True Type fonts using</span>
<span class="linenos"> 4</span><span class="sd"> the font2bitmap utility.</span>
<span class="linenos"> 5</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">SoftSPI</span><span class="p">,</span> <span class="n">Pin</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 9</span>
<span class="linenos">10</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSans_32</span> <span class="k">as</span> <span class="n">noto_sans</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSerif_32</span> <span class="k">as</span> <span class="n">noto_serif</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSansMono_32</span> <span class="k">as</span> <span class="n">noto_mono</span>
<span class="linenos">13</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">16</span>
<span class="linenos">17</span> <span class="k">def</span> <span class="nf">center</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">):</span>
<span class="linenos">18</span> <span class="n">screen</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># get screen width</span>
<span class="linenos">19</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">write_width</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="c1"># get the width of the string</span>
<span class="linenos">20</span> <span class="k">if</span> <span class="n">width</span> <span class="ow">and</span> <span class="n">width</span> <span class="o">&lt;</span> <span class="n">screen</span><span class="p">:</span> <span class="c1"># if the string &lt; display</span>
<span class="linenos">21</span> <span class="n">col</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="n">width</span> <span class="o">//</span> <span class="mi">2</span> <span class="c1"># find the column to center</span>
<span class="linenos">22</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># otherwise</span>
<span class="linenos">23</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># left justify</span>
<span class="linenos">24</span>
<span class="linenos">25</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span> <span class="c1"># and write the string</span>
<span class="linenos">26</span>
<span class="linenos">27</span> <span class="k">try</span><span class="p">:</span>
<span class="linenos">28</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">29</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">30</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">31</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">35</span>
<span class="linenos">36</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">37</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">38</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">39</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">40</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">41</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">45</span>
<span class="linenos">46</span> <span class="c1"># enable display and clear screen</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">48</span>
<span class="linenos">49</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">16</span>
<span class="linenos">50</span>
<span class="linenos">51</span> <span class="c1"># center the name of the first font, using the font</span>
<span class="linenos">52</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_sans</span><span class="p">,</span> <span class="s2">&quot;NotoSans&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_sans</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">54</span>
<span class="linenos">55</span> <span class="c1"># center the name of the second font, using the font</span>
<span class="linenos">56</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_serif</span><span class="p">,</span> <span class="s2">&quot;NotoSerif&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>
<span class="linenos">57</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_serif</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">58</span>
<span class="linenos">59</span> <span class="c1"># center the name of the third font, using the font</span>
<span class="linenos">60</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_mono</span><span class="p">,</span> <span class="s2">&quot;NotoSansMono&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">61</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_mono</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">62</span>
<span class="linenos">63</span> <span class="k">finally</span><span class="p">:</span>
<span class="linenos">64</span> <span class="c1"># shutdown spi</span>
<span class="linenos">65</span> <span class="k">if</span> <span class="s1">&#39;spi&#39;</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">():</span>
<span class="linenos">66</span> <span class="n">spi</span><span class="o">.</span><span class="n">deinit</span><span class="p">()</span>
<span class="linenos">67</span>
<span class="linenos">68</span>
<span class="linenos">69</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples_generic.html" class="btn btn-neutral float-left" title="Generic ESP32 Examples" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="examples_tdisplay_rp2040.html" class="btn btn-neutral float-right" title="TTGO T-Display RP2040 Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Wyświetl plik

@ -0,0 +1,869 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TTGO T-Display RP2040 Examples &mdash; st7789py 0.1.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Raspberry Pi Pico Examples" href="examples_pi_pico.html" />
<link rel="prev" title="TTGO T-Display Examples" href="examples_tdisplay.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Example Programs</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#rom-font-conversion">Rom Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#id1">16x16 Rom Fonts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">st7789py</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="examples.html">Example Programs</a></li>
<li class="breadcrumb-item active">TTGO T-Display RP2040 Examples</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/examples_tdisplay_rp2040.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ttgo-t-display-rp2040-examples">
<h1>TTGO T-Display RP2040 Examples<a class="headerlink" href="#ttgo-t-display-rp2040-examples" title="Link to this heading"></a></h1>
<p>These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See <a class="reference external" href="https://github.com/Xinyuan-LilyGO/LILYGO-T-display-RP2040">https://github.com/Xinyuan-LilyGO/LILYGO-T-display-RP2040</a>
for more information.</p>
<section id="ttgo-tdisplay-rp2040-lines-py">
<h2>ttgo_tdisplay_rp2040/lines.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-lines-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">lines.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Draws lines and rectangles in random colors at random locations on the</span>
<span class="linenos"> 5</span><span class="sd"> display.</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">11</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">14</span> <span class="n">Pin</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">15</span>
<span class="linenos">16</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">17</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">18</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">19</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">20</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="linenos">21</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="linenos">22</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">23</span>
<span class="linenos">24</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">25</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">26</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">27</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">28</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">29</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">30</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">31</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">32</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">33</span>
<span class="linenos">34</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">35</span>
<span class="linenos">36</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">37</span> <span class="n">tft</span><span class="o">.</span><span class="n">line</span><span class="p">(</span>
<span class="linenos">38</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">39</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">40</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">),</span>
<span class="linenos">41</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">43</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">45</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">46</span> <span class="p">)</span>
<span class="linenos">47</span> <span class="p">)</span>
<span class="linenos">48</span>
<span class="linenos">49</span> <span class="n">width</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">50</span> <span class="n">height</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos">51</span> <span class="n">col</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span>
<span class="linenos">52</span> <span class="n">row</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">54</span> <span class="n">col</span><span class="p">,</span>
<span class="linenos">55</span> <span class="n">row</span><span class="p">,</span>
<span class="linenos">56</span> <span class="n">width</span><span class="p">,</span>
<span class="linenos">57</span> <span class="n">height</span><span class="p">,</span>
<span class="linenos">58</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">59</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">60</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">61</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<span class="linenos">62</span> <span class="p">)</span>
<span class="linenos">63</span> <span class="p">)</span>
<span class="linenos">64</span>
<span class="linenos">65</span>
<span class="linenos">66</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-hello-py">
<h2>ttgo_tdisplay_rp2040/hello.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-hello-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">hello.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Writes &quot;Hello!&quot; in random colors at random locations on a</span>
<span class="linenos"> 5</span><span class="sd"> LILYGO® TTGO T-Display.</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="sd"> https://www.youtube.com/watch?v=atBa0BYPAAc</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># Choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga2_bold_16x16 as font</span>
<span class="linenos">24</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">25</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">26</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">27</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">28</span>
<span class="linenos">29</span>
<span class="linenos">30</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">31</span> <span class="n">Pin</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">32</span>
<span class="linenos">33</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">34</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">35</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">36</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">37</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="linenos">39</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">40</span>
<span class="linenos">41</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">42</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">43</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">44</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">45</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">46</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">47</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">48</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">49</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">50</span>
<span class="linenos">51</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">52</span> <span class="k">for</span> <span class="n">rotation</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="linenos">53</span> <span class="n">tft</span><span class="o">.</span><span class="n">rotation</span><span class="p">(</span><span class="n">rotation</span><span class="p">)</span>
<span class="linenos">54</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">55</span> <span class="n">col_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">*</span><span class="mi">6</span>
<span class="linenos">56</span> <span class="n">row_max</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">57</span>
<span class="linenos">58</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span>
<span class="linenos">59</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">60</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">61</span> <span class="s2">&quot;Hello!&quot;</span><span class="p">,</span>
<span class="linenos">62</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">col_max</span><span class="p">),</span>
<span class="linenos">63</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">row_max</span><span class="p">),</span>
<span class="linenos">64</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">65</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">66</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">67</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">)),</span>
<span class="linenos">68</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span>
<span class="linenos">69</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">70</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">),</span>
<span class="linenos">71</span> <span class="n">random</span><span class="o">.</span><span class="n">getrandbits</span><span class="p">(</span><span class="mi">8</span><span class="p">))</span>
<span class="linenos">72</span> <span class="p">)</span>
<span class="linenos">73</span>
<span class="linenos">74</span>
<span class="linenos">75</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-feathers-py">
<h2>ttgo_tdisplay_rp2040/feathers.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-feathers-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">feathers.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scroll mirrored rainbow colored random curves across the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">math</span>
<span class="linenos"> 10</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos"> 11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 13</span>
<span class="linenos"> 14</span>
<span class="linenos"> 15</span><span class="k">def</span> <span class="nf">between</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">along</span><span class="p">):</span>
<span class="linenos"> 16</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a point along the curve from left to right&quot;&quot;&quot;</span>
<span class="linenos"> 17</span> <span class="n">dist</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">along</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span>
<span class="linenos"> 18</span> <span class="k">return</span> <span class="n">left</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dist</span><span class="p">)</span> <span class="o">+</span> <span class="n">right</span> <span class="o">*</span> <span class="n">dist</span>
<span class="linenos"> 19</span>
<span class="linenos"> 20</span>
<span class="linenos"> 21</span><span class="k">def</span> <span class="nf">color_wheel</span><span class="p">(</span><span class="n">position</span><span class="p">):</span>
<span class="linenos"> 22</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;returns a 565 color from the given position of the color wheel&quot;&quot;&quot;</span>
<span class="linenos"> 23</span> <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span><span class="p">)</span> <span class="o">%</span> <span class="mi">255</span>
<span class="linenos"> 24</span>
<span class="linenos"> 25</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">85</span><span class="p">:</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="k">if</span> <span class="n">position</span> <span class="o">&lt;</span> <span class="mi">170</span><span class="p">:</span>
<span class="linenos"> 29</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">85</span>
<span class="linenos"> 30</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span>
<span class="linenos"> 31</span>
<span class="linenos"> 32</span> <span class="n">position</span> <span class="o">-=</span> <span class="mi">170</span>
<span class="linenos"> 33</span> <span class="k">return</span> <span class="n">st7789</span><span class="o">.</span><span class="n">color565</span><span class="p">(</span><span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">255</span> <span class="o">-</span> <span class="n">position</span> <span class="o">*</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 34</span>
<span class="linenos"> 35</span>
<span class="linenos"> 36</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos"> 37</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos"> 38</span><span class="sd"> The big show!</span>
<span class="linenos"> 39</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos"> 40</span> <span class="c1"># enable display and clear screen</span>
<span class="linenos"> 41</span>
<span class="linenos"> 42</span> <span class="n">Pin</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 43</span>
<span class="linenos"> 44</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos"> 45</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos"> 46</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos"> 47</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos"> 48</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="linenos"> 49</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="linenos"> 50</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos"> 51</span>
<span class="linenos"> 52</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos"> 53</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos"> 54</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos"> 55</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos"> 56</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 57</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 58</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 59</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos"> 60</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos"> 61</span>
<span class="linenos"> 62</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 63</span>
<span class="linenos"> 64</span> <span class="n">height</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="c1"># height of display in pixels</span>
<span class="linenos"> 65</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># width if display in pixels</span>
<span class="linenos"> 66</span>
<span class="linenos"> 67</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># top free area when scrolling</span>
<span class="linenos"> 68</span> <span class="n">bfa</span> <span class="o">=</span> <span class="mi">40</span> <span class="c1"># bottom free area when scrolling</span>
<span class="linenos"> 69</span>
<span class="linenos"> 70</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># scroll position</span>
<span class="linenos"> 71</span> <span class="n">wheel</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># color wheel position</span>
<span class="linenos"> 72</span>
<span class="linenos"> 73</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">bfa</span><span class="p">)</span> <span class="c1"># set scroll area</span>
<span class="linenos"> 74</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span> <span class="c1"># set scroll position</span>
<span class="linenos"> 75</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span> <span class="c1"># clear screen</span>
<span class="linenos"> 76</span>
<span class="linenos"> 77</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">height</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1"># half the height of the dislay</span>
<span class="linenos"> 78</span> <span class="n">interval</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># steps between new points</span>
<span class="linenos"> 79</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># increment per step</span>
<span class="linenos"> 80</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># step counter, overflow to start</span>
<span class="linenos"> 81</span> <span class="n">current_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># current_y value (right point)</span>
<span class="linenos"> 82</span> <span class="n">last_y</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># last_y value (left point)</span>
<span class="linenos"> 83</span>
<span class="linenos"> 84</span> <span class="c1"># segment offsets</span>
<span class="linenos"> 85</span> <span class="n">x_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">//</span> <span class="mi">8</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">9</span><span class="p">)]</span>
<span class="linenos"> 86</span>
<span class="linenos"> 87</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos"> 88</span> <span class="c1"># when the counter exceeds the interval, save current_y to last_y,</span>
<span class="linenos"> 89</span> <span class="c1"># choose a new random value for current_y between 0 and 1/2 the</span>
<span class="linenos"> 90</span> <span class="c1"># height of the display, choose a new random interval then reset</span>
<span class="linenos"> 91</span> <span class="c1"># the counter to 0</span>
<span class="linenos"> 92</span>
<span class="linenos"> 93</span> <span class="k">if</span> <span class="n">counter</span> <span class="o">&gt;</span> <span class="n">interval</span><span class="p">:</span>
<span class="linenos"> 94</span> <span class="n">last_y</span> <span class="o">=</span> <span class="n">current_y</span>
<span class="linenos"> 95</span> <span class="n">current_y</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">half</span><span class="p">)</span>
<span class="linenos"> 96</span> <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos"> 97</span> <span class="n">interval</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="linenos"> 98</span> <span class="n">increment</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">interval</span> <span class="c1"># increment per step</span>
<span class="linenos"> 99</span>
<span class="linenos">100</span> <span class="c1"># clear the first column of the display and scroll it</span>
<span class="linenos">101</span> <span class="n">tft</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">scroll</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">102</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">103</span>
<span class="linenos">104</span> <span class="c1"># get the next point between last_y and current_y</span>
<span class="linenos">105</span> <span class="n">tween</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">between</span><span class="p">(</span><span class="n">last_y</span><span class="p">,</span> <span class="n">current_y</span><span class="p">,</span> <span class="n">counter</span> <span class="o">*</span> <span class="n">increment</span><span class="p">))</span>
<span class="linenos">106</span>
<span class="linenos">107</span> <span class="c1"># draw mirrored pixels across the display at the offsets using the color_wheel effect</span>
<span class="linenos">108</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x_offset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">x_offsets</span><span class="p">):</span>
<span class="linenos">109</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">+</span>
<span class="linenos">110</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">)))</span>
<span class="linenos">111</span> <span class="n">tft</span><span class="o">.</span><span class="n">pixel</span><span class="p">((</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">x_offset</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span><span class="p">,</span> <span class="n">half</span> <span class="o">-</span>
<span class="linenos">112</span> <span class="n">tween</span><span class="p">,</span> <span class="n">color_wheel</span><span class="p">(</span><span class="n">wheel</span><span class="o">+</span><span class="p">(</span><span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">)))</span>
<span class="linenos">113</span>
<span class="linenos">114</span> <span class="c1"># increment scroll, counter, and wheel</span>
<span class="linenos">115</span> <span class="n">scroll</span> <span class="o">=</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">width</span>
<span class="linenos">116</span> <span class="n">wheel</span> <span class="o">=</span> <span class="p">(</span><span class="n">wheel</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">256</span>
<span class="linenos">117</span> <span class="n">counter</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">118</span>
<span class="linenos">119</span>
<span class="linenos">120</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-fonts-py">
<h2>ttgo_tdisplay_rp2040/fonts.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-fonts-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">fonts.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Pages through all characters of four fonts on the LILYGO® TTGO T-Display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd"> https://www.youtube.com/watch?v=2cnAhEucPD4</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos">10</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">11</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">12</span>
<span class="linenos">13</span><span class="c1"># Choose fonts</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">16</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x8</span> <span class="k">as</span> <span class="n">font1</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">18</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_8x16</span> <span class="k">as</span> <span class="n">font2</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">22</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font3</span>
<span class="linenos">23</span><span class="c1"># from romfonts import vga1_16x32 as font</span>
<span class="linenos">24</span><span class="c1"># from romfonts import vga1_bold_16x32 as font</span>
<span class="linenos">25</span><span class="c1"># from romfonts import vga2_16x32 as font</span>
<span class="linenos">26</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x32</span> <span class="k">as</span> <span class="n">font4</span>
<span class="linenos">27</span>
<span class="linenos">28</span>
<span class="linenos">29</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">30</span> <span class="n">Pin</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">31</span>
<span class="linenos">32</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">33</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">34</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">35</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">36</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="linenos">37</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="linenos">38</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">39</span>
<span class="linenos">40</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">41</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">42</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">43</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">44</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">45</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">46</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">47</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">48</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">49</span>
<span class="linenos">50</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="mi">40</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
<span class="linenos">51</span>
<span class="linenos">52</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">53</span> <span class="k">for</span> <span class="n">font</span> <span class="ow">in</span> <span class="p">(</span><span class="n">font1</span><span class="p">,</span> <span class="n">font2</span><span class="p">,</span> <span class="n">font3</span><span class="p">,</span> <span class="n">font4</span><span class="p">):</span>
<span class="linenos">54</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">55</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">56</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">57</span>
<span class="linenos">58</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">font</span><span class="o">.</span><span class="n">LAST</span><span class="p">):</span>
<span class="linenos">59</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">char</span><span class="p">),</span> <span class="n">col</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">60</span> <span class="n">col</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span>
<span class="linenos">61</span> <span class="k">if</span> <span class="n">col</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">:</span>
<span class="linenos">62</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">63</span> <span class="n">line</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">64</span>
<span class="linenos">65</span> <span class="k">if</span> <span class="n">line</span> <span class="o">&gt;</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="o">-</span><span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">:</span>
<span class="linenos">66</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">67</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">68</span> <span class="n">line</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">69</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">70</span>
<span class="linenos">71</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="linenos">72</span>
<span class="linenos">73</span>
<span class="linenos">74</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-scroll-py">
<h2>ttgo_tdisplay_rp2040/scroll.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-scroll-py" title="Link to this heading"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">scroll.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Smoothly scrolls all font characters up the screen on the LILYGO® TTGO</span>
<span class="linenos"> 5</span><span class="sd"> T-Display. Only works with fonts with heights that are even multiples of</span>
<span class="linenos"> 6</span><span class="sd"> the screen height, (i.e. 8 or 16 pixels high)</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">utime</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">12</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">13</span>
<span class="linenos">14</span><span class="c1"># choose a font</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="c1"># from romfonts import vga1_8x8 as font</span>
<span class="linenos">17</span><span class="c1"># from romfonts import vga2_8x8 as font</span>
<span class="linenos">18</span><span class="c1"># from romfonts import vga1_8x16 as font</span>
<span class="linenos">19</span><span class="c1"># from romfonts import vga2_8x16 as font</span>
<span class="linenos">20</span><span class="c1"># from romfonts import vga1_16x16 as font</span>
<span class="linenos">21</span><span class="c1"># from romfonts import vga1_bold_16x16 as font</span>
<span class="linenos">22</span><span class="c1"># from romfonts import vga2_16x16 as font</span>
<span class="linenos">23</span><span class="kn">from</span> <span class="nn">romfonts</span> <span class="kn">import</span> <span class="n">vga2_bold_16x16</span> <span class="k">as</span> <span class="n">font</span>
<span class="linenos">24</span>
<span class="linenos">25</span>
<span class="linenos">26</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">27</span> <span class="n">Pin</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">28</span>
<span class="linenos">29</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">30</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">31</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">33</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">36</span>
<span class="linenos">37</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">38</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">39</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">40</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">41</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">45</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">46</span>
<span class="linenos">47</span> <span class="n">last_line</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">48</span> <span class="n">tfa</span> <span class="o">=</span> <span class="mi">40</span>
<span class="linenos">49</span> <span class="n">tfb</span> <span class="o">=</span> <span class="mi">40</span>
<span class="linenos">50</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscrdef</span><span class="p">(</span><span class="n">tfa</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="n">tfb</span><span class="p">)</span>
<span class="linenos">51</span>
<span class="linenos">52</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">54</span> <span class="n">character</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">55</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">56</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">scroll</span><span class="p">,</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">57</span>
<span class="linenos">58</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">%</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">59</span> <span class="n">tft</span><span class="o">.</span><span class="n">text</span><span class="p">(</span>
<span class="linenos">60</span> <span class="n">font</span><span class="p">,</span>
<span class="linenos">61</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">x</span><span class="si">{:02x}</span><span class="s1">= </span><span class="si">{:s}</span><span class="s1"> &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">character</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">character</span><span class="p">)),</span>
<span class="linenos">62</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">63</span> <span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">last_line</span><span class="p">)</span> <span class="o">%</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
<span class="linenos">64</span> <span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">,</span>
<span class="linenos">65</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">66</span>
<span class="linenos">67</span> <span class="n">character</span> <span class="o">=</span> <span class="n">character</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">character</span> <span class="o">&lt;</span> <span class="mi">256</span> <span class="k">else</span> <span class="mi">0</span>
<span class="linenos">68</span>
<span class="linenos">69</span> <span class="n">tft</span><span class="o">.</span><span class="n">vscsad</span><span class="p">(</span><span class="n">scroll</span> <span class="o">+</span> <span class="n">tfa</span><span class="p">)</span>
<span class="linenos">70</span> <span class="n">scroll</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">71</span>
<span class="linenos">72</span> <span class="k">if</span> <span class="n">scroll</span> <span class="o">==</span> <span class="n">tft</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
<span class="linenos">73</span> <span class="n">scroll</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">74</span>
<span class="linenos">75</span> <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
<span class="linenos">76</span>
<span class="linenos">77</span>
<span class="linenos">78</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-toasters-py">
<h2>ttgo_tdisplay_rp2040/toasters.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-toasters-py" title="Link to this heading"></a></h2>
<p>Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">toasters.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> An example using bitmap to draw sprites on the display.</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="sd"> Spritesheet from CircuitPython_Flying_Toasters</span>
<span class="linenos"> 7</span><span class="sd"> https://learn.adafruit.com/circuitpython-sprite-animation-pendant-mario-clouds-flying-toasters</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">10</span>
<span class="linenos">11</span><span class="kn">import</span> <span class="nn">random</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos">13</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">14</span><span class="kn">import</span> <span class="nn">t1</span><span class="o">,</span> <span class="nn">t2</span><span class="o">,</span> <span class="nn">t3</span><span class="o">,</span> <span class="nn">t4</span><span class="o">,</span> <span class="nn">t5</span>
<span class="linenos">15</span>
<span class="linenos">16</span><span class="n">TOASTERS</span> <span class="o">=</span> <span class="p">[</span><span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="n">t3</span><span class="p">,</span> <span class="n">t4</span><span class="p">]</span>
<span class="linenos">17</span><span class="n">TOAST</span> <span class="o">=</span> <span class="p">[</span><span class="n">t5</span><span class="p">]</span>
<span class="linenos">18</span>
<span class="linenos">19</span>
<span class="linenos">20</span><span class="k">class</span> <span class="nc">toast</span><span class="p">():</span>
<span class="linenos">21</span><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="linenos">22</span><span class="sd"> toast class to keep track of a sprites locaton and step</span>
<span class="linenos">23</span><span class="sd"> &#39;&#39;&#39;</span>
<span class="linenos">24</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sprites</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="linenos">25</span> <span class="bp">self</span><span class="o">.</span><span class="n">sprites</span> <span class="o">=</span> <span class="n">sprites</span>
<span class="linenos">26</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sprites</span><span class="p">)</span>
<span class="linenos">27</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
<span class="linenos">28</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
<span class="linenos">29</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">30</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos">31</span>
<span class="linenos">32</span> <span class="k">def</span> <span class="nf">move</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="linenos">33</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">34</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="linenos">35</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="mi">135</span> <span class="o">-</span> <span class="mi">64</span>
<span class="linenos">36</span>
<span class="linenos">37</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="linenos">38</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span> <span class="o">%=</span> <span class="bp">self</span><span class="o">.</span><span class="n">steps</span>
<span class="linenos">39</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">-=</span> <span class="bp">self</span><span class="o">.</span><span class="n">speed</span>
<span class="linenos">40</span>
<span class="linenos">41</span>
<span class="linenos">42</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">43</span><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">44</span><span class="sd"> Initialize the display and draw flying toasters and toast</span>
<span class="linenos">45</span><span class="sd"> &quot;&quot;&quot;</span>
<span class="linenos">46</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">47</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">48</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">49</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">50</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">51</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">52</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">53</span>
<span class="linenos">54</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">55</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">56</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">57</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">58</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">59</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">60</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">61</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">62</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">63</span>
<span class="linenos">64</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">65</span> <span class="c1"># create toast spites in random positions</span>
<span class="linenos">66</span> <span class="n">sprites</span> <span class="o">=</span> <span class="p">[</span>
<span class="linenos">67</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOASTERS</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
<span class="linenos">68</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOAST</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span>
<span class="linenos">69</span> <span class="n">toast</span><span class="p">(</span><span class="n">TOASTERS</span><span class="p">,</span> <span class="mi">135</span><span class="o">-</span><span class="mi">64</span><span class="o">*</span><span class="mi">4</span><span class="p">,</span> <span class="mi">160</span><span class="p">)</span>
<span class="linenos">70</span> <span class="p">]</span>
<span class="linenos">71</span>
<span class="linenos">72</span> <span class="c1"># move and draw sprites</span>
<span class="linenos">73</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="linenos">74</span> <span class="k">for</span> <span class="n">man</span> <span class="ow">in</span> <span class="n">sprites</span><span class="p">:</span>
<span class="linenos">75</span> <span class="n">bitmap</span> <span class="o">=</span> <span class="n">man</span><span class="o">.</span><span class="n">sprites</span><span class="p">[</span><span class="n">man</span><span class="o">.</span><span class="n">step</span><span class="p">]</span>
<span class="linenos">76</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">77</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span><span class="o">+</span><span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span><span class="o">-</span><span class="n">man</span><span class="o">.</span><span class="n">speed</span><span class="p">,</span>
<span class="linenos">78</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
<span class="linenos">79</span> <span class="n">man</span><span class="o">.</span><span class="n">speed</span><span class="p">,</span>
<span class="linenos">80</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span>
<span class="linenos">81</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">82</span>
<span class="linenos">83</span> <span class="n">man</span><span class="o">.</span><span class="n">move</span><span class="p">()</span>
<span class="linenos">84</span>
<span class="linenos">85</span> <span class="k">if</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="linenos">86</span> <span class="n">tft</span><span class="o">.</span><span class="n">bitmap</span><span class="p">(</span><span class="n">bitmap</span><span class="p">,</span> <span class="n">man</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
<span class="linenos">87</span> <span class="k">else</span><span class="p">:</span>
<span class="linenos">88</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span>
<span class="linenos">89</span> <span class="mi">0</span><span class="p">,</span>
<span class="linenos">90</span> <span class="n">man</span><span class="o">.</span><span class="n">y</span><span class="p">,</span>
<span class="linenos">91</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span><span class="p">,</span>
<span class="linenos">92</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span><span class="p">,</span>
<span class="linenos">93</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">94</span>
<span class="linenos">95</span>
<span class="linenos">96</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-chango-py">
<h2>ttgo_tdisplay_rp2040/chango.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-chango-py" title="Link to this heading"></a></h2>
<p>Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">chango.py</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="sd"> Test for font2bitmap converter for the driver.</span>
<span class="linenos"> 5</span><span class="sd"> See the font2bitmap program in the utils directory.</span>
<span class="linenos"> 6</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 7</span>
<span class="linenos"> 8</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span> <span class="n">SoftSPI</span>
<span class="linenos"> 9</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos">10</span><span class="kn">import</span> <span class="nn">gc</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_16</span> <span class="k">as</span> <span class="n">font_16</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_32</span> <span class="k">as</span> <span class="n">font_32</span>
<span class="linenos">13</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">chango_64</span> <span class="k">as</span> <span class="n">font_64</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span>
<span class="linenos">16</span>
<span class="linenos">17</span>
<span class="linenos">18</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">19</span> <span class="c1"># enable display and clear screen</span>
<span class="linenos">20</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">21</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">22</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">23</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">24</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">25</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">26</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">27</span>
<span class="linenos">28</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">29</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">30</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">31</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">35</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">36</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">37</span>
<span class="linenos">38</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">39</span>
<span class="linenos">40</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">0</span>
<span class="linenos">41</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_16</span><span class="p">,</span> <span class="s2">&quot;abcdefghijklmnopqrst&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>
<span class="linenos">42</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_16</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">43</span>
<span class="linenos">44</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_32</span><span class="p">,</span> <span class="s2">&quot;abcdefghij&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>
<span class="linenos">45</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_32</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">46</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font_64</span><span class="p">,</span> <span class="s2">&quot;abcd&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">48</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">font_64</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">49</span>
<span class="linenos">50</span>
<span class="linenos">51</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
<section id="ttgo-tdisplay-rp2040-noto-fonts-py">
<h2>ttgo_tdisplay_rp2040/noto_fonts.py<a class="headerlink" href="#ttgo-tdisplay-rp2040-noto-fonts-py" title="Link to this heading"></a></h2>
<p>Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 2</span><span class="sd">noto_fonts Writes the names of three Noto fonts centered on the display</span>
<span class="linenos"> 3</span><span class="sd"> using the font. The fonts were converted from True Type fonts using</span>
<span class="linenos"> 4</span><span class="sd"> the font2bitmap utility.</span>
<span class="linenos"> 5</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos"> 6</span>
<span class="linenos"> 7</span><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">SoftSPI</span><span class="p">,</span> <span class="n">Pin</span>
<span class="linenos"> 8</span><span class="kn">import</span> <span class="nn">st7789py</span> <span class="k">as</span> <span class="nn">st7789</span>
<span class="linenos"> 9</span>
<span class="linenos">10</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSans_32</span> <span class="k">as</span> <span class="n">noto_sans</span>
<span class="linenos">11</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSerif_32</span> <span class="k">as</span> <span class="n">noto_serif</span>
<span class="linenos">12</span><span class="kn">from</span> <span class="nn">truetype</span> <span class="kn">import</span> <span class="n">NotoSansMono_32</span> <span class="k">as</span> <span class="n">noto_mono</span>
<span class="linenos">13</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="linenos">16</span>
<span class="linenos">17</span> <span class="k">def</span> <span class="nf">center</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">st7789</span><span class="o">.</span><span class="n">WHITE</span><span class="p">):</span>
<span class="linenos">18</span> <span class="n">screen</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="c1"># get screen width</span>
<span class="linenos">19</span> <span class="n">width</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">write_width</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="c1"># get the width of the string</span>
<span class="linenos">20</span> <span class="k">if</span> <span class="n">width</span> <span class="ow">and</span> <span class="n">width</span> <span class="o">&lt;</span> <span class="n">screen</span><span class="p">:</span> <span class="c1"># if the string &lt; display</span>
<span class="linenos">21</span> <span class="n">col</span> <span class="o">=</span> <span class="n">tft</span><span class="o">.</span><span class="n">width</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="n">width</span> <span class="o">//</span> <span class="mi">2</span> <span class="c1"># find the column to center</span>
<span class="linenos">22</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># otherwise</span>
<span class="linenos">23</span> <span class="n">col</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># left justify</span>
<span class="linenos">24</span>
<span class="linenos">25</span> <span class="n">tft</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span> <span class="c1"># and write the string</span>
<span class="linenos">26</span>
<span class="linenos">27</span> <span class="k">try</span><span class="p">:</span>
<span class="linenos">28</span> <span class="n">spi</span> <span class="o">=</span> <span class="n">SoftSPI</span><span class="p">(</span>
<span class="linenos">29</span> <span class="n">baudrate</span><span class="o">=</span><span class="mi">20000000</span><span class="p">,</span>
<span class="linenos">30</span> <span class="n">polarity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="linenos">31</span> <span class="n">phase</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">32</span> <span class="n">sck</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">18</span><span class="p">),</span>
<span class="linenos">33</span> <span class="n">mosi</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">19</span><span class="p">),</span>
<span class="linenos">34</span> <span class="n">miso</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">13</span><span class="p">))</span>
<span class="linenos">35</span>
<span class="linenos">36</span> <span class="n">tft</span> <span class="o">=</span> <span class="n">st7789</span><span class="o">.</span><span class="n">ST7789</span><span class="p">(</span>
<span class="linenos">37</span> <span class="n">spi</span><span class="p">,</span>
<span class="linenos">38</span> <span class="mi">135</span><span class="p">,</span>
<span class="linenos">39</span> <span class="mi">240</span><span class="p">,</span>
<span class="linenos">40</span> <span class="n">reset</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">41</span> <span class="n">cs</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">42</span> <span class="n">dc</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">43</span> <span class="n">backlight</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">),</span>
<span class="linenos">44</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="linenos">45</span>
<span class="linenos">46</span> <span class="c1"># enable display and clear screen</span>
<span class="linenos">47</span> <span class="n">tft</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">st7789</span><span class="o">.</span><span class="n">BLACK</span><span class="p">)</span>
<span class="linenos">48</span>
<span class="linenos">49</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">16</span>
<span class="linenos">50</span>
<span class="linenos">51</span> <span class="c1"># center the name of the first font, using the font</span>
<span class="linenos">52</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_sans</span><span class="p">,</span> <span class="s2">&quot;NotoSans&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>
<span class="linenos">53</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_sans</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">54</span>
<span class="linenos">55</span> <span class="c1"># center the name of the second font, using the font</span>
<span class="linenos">56</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_serif</span><span class="p">,</span> <span class="s2">&quot;NotoSerif&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>
<span class="linenos">57</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_serif</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">58</span>
<span class="linenos">59</span> <span class="c1"># center the name of the third font, using the font</span>
<span class="linenos">60</span> <span class="n">center</span><span class="p">(</span><span class="n">noto_mono</span><span class="p">,</span> <span class="s2">&quot;NotoSansMono&quot;</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">st7789</span><span class="o">.</span><span class="n">BLUE</span><span class="p">)</span>
<span class="linenos">61</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">noto_mono</span><span class="o">.</span><span class="n">HEIGHT</span>
<span class="linenos">62</span>
<span class="linenos">63</span> <span class="k">finally</span><span class="p">:</span>
<span class="linenos">64</span> <span class="c1"># shutdown spi</span>
<span class="linenos">65</span> <span class="k">if</span> <span class="s1">&#39;spi&#39;</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">():</span>
<span class="linenos">66</span> <span class="n">spi</span><span class="o">.</span><span class="n">deinit</span><span class="p">()</span>
<span class="linenos">67</span>
<span class="linenos">68</span>
<span class="linenos">69</span><span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples_tdisplay.html" class="btn btn-neutral float-left" title="TTGO T-Display Examples" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="examples_pi_pico.html" class="btn btn-neutral float-right" title="Raspberry Pi Pico Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

Wyświetl plik

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Fonts &mdash; st7789py 0.1.0 documentation</title>
@ -11,14 +11,15 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="Example Programs" href="examples.html" />
<link rel="prev" title="Raspberry Pi Pico Examples" href="examples_pi_pico.html" />
</head>
<body class="wy-body-for-nav">
@ -26,11 +27,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home"> st7789py
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -39,26 +44,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -87,8 +139,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Fonts</li>
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Fonts</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/fonts.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -99,7 +151,7 @@
<div itemprop="articleBody">
<section id="fonts">
<h1>Fonts<a class="headerlink" href="#fonts" title="Permalink to this headline"></a></h1>
<h1>Fonts<a class="headerlink" href="#fonts" title="Link to this heading"></a></h1>
<p>Two type of fonts are supported by this driver fixed size bitmap fonts
converted from PC Bios images using the font_from_romfont utility and fixed or proportional fonts converted from True-Type fonts using the font2bitmap utility.</p>
<p>The rom fonts are available in 128 and 256 PC character sets in 8x8, 8x16, 16x6 and 16x32 pixel sizes. They written using the text method.</p>
@ -107,7 +159,7 @@ converted from PC Bios images using the font_from_romfont utility and fixed or p
character is 256 pixels or less. They are written using the write method.</p>
<p>Pre-compiling the font files to .mpy files will significantly reduce the memory required for the fonts.</p>
<section id="rom-font-conversion">
<h2>Rom Font Conversion<a class="headerlink" href="#rom-font-conversion" title="Permalink to this headline"></a></h2>
<h2>Rom Font Conversion<a class="headerlink" href="#rom-font-conversion" title="Link to this heading"></a></h2>
<p>The <cite>utils</cite> directory contains the font_from_romfont.py program used to convert PC BIOS bitmap fonts from the font-bin directory of spaceraces
<a class="reference external" href="https://github.com/spacerace/romfont">https://github.com/spacerace/romfont</a> repo.</p>
<p>The utility converts all romfont bin files in the specified -input-directory (-i) and writes python font files to the specified -output-directory (-o).</p>
@ -117,7 +169,7 @@ character is 256 pixels or less. They are written using the write method.</p>
<div><p>font_from_romfont -i font-bin -o fonts -f 32 -l 127</p>
</div></blockquote>
<div class="literal-block-wrapper docutils container" id="id2">
<div class="code-block-caption"><span class="caption-text">Sample converted romfont font module.</span><a class="headerlink" href="#id2" title="Permalink to this code"></a></div>
<div class="code-block-caption"><span class="caption-text">Sample converted romfont font module.</span><a class="headerlink" href="#id2" title="Link to this code"></a></div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="sd">&quot;&quot;&quot;converted from vga_8x8.bin &quot;&quot;&quot;</span>
<span class="linenos"> 2</span>
<span class="linenos"> 3</span><span class="c1"># font width</span>
@ -150,7 +202,7 @@ character is 256 pixels or less. They are written using the write method.</p>
</div>
</section>
<section id="true-type-font-conversion">
<h2>True-Type Font Conversion<a class="headerlink" href="#true-type-font-conversion" title="Permalink to this headline"></a></h2>
<h2>True-Type Font Conversion<a class="headerlink" href="#true-type-font-conversion" title="Link to this heading"></a></h2>
<p>The <cite>utils</cite> directory contains the <cite>font2bitmap.py</cite> program used to convert True-Type font into bitmap font modules. Use the -h option to see details of the available options. The <cite>font2bitmap.py</cite> program uses font handling classes from Dan Bader blog post on using freetype
<a class="reference external" href="http://dbader.org/blog/monochrome-font-rendering-with-freetype-and-python">http://dbader.org/blog/monochrome-font-rendering-with-freetype-and-python</a> and
the negative glyph.left fix from peterhinchs font conversion program
@ -162,7 +214,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<li><p>./font2bitmap.py Chango-Regular.ttf 16 -c 0x20-0x7f</p></li>
</ul>
<div class="literal-block-wrapper docutils container" id="id3">
<div class="code-block-caption"><span class="caption-text">Sample converted TrueType font module.</span><a class="headerlink" href="#id3" title="Permalink to this code"></a></div>
<div class="code-block-caption"><span class="caption-text">Sample converted TrueType font module.</span><a class="headerlink" href="#id3" title="Link to this code"></a></div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="linenos"> 2</span><span class="c1"># Converted from Chango-Regular.ttf using:</span>
<span class="linenos"> 3</span><span class="c1"># ./font2bitmap.py Chango-Regular.ttf 16 -c 0x20-0x7f</span>
@ -215,11 +267,11 @@ the negative glyph.left fix from peterhinchs font conversion program
</div>
</section>
<section id="x8-rom-fonts">
<h2>8x8 Rom Fonts<a class="headerlink" href="#x8-rom-fonts" title="Permalink to this headline"></a></h2>
<h2>8x8 Rom Fonts<a class="headerlink" href="#x8-rom-fonts" title="Link to this heading"></a></h2>
<figure class="align-center" id="id4">
<img alt="_images/vga1_8x8.png" src="_images/vga1_8x8.png" />
<figcaption>
<p><span class="caption-text">vga1_8x8.py: 128 Character 8x8 Font</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_8x8.py: 128 Character 8x8 Font</span><a class="headerlink" href="#id4" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -228,7 +280,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id5">
<img alt="_images/vga2_8x8.png" src="_images/vga2_8x8.png" />
<figcaption>
<p><span class="caption-text">vga2_8x8.py: 256 Character 8x8 Font</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_8x8.py: 256 Character 8x8 Font</span><a class="headerlink" href="#id5" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -236,11 +288,11 @@ the negative glyph.left fix from peterhinchs font conversion program
</div>
</section>
<section id="x16-rom-fonts">
<h2>8x16 Rom Fonts<a class="headerlink" href="#x16-rom-fonts" title="Permalink to this headline"></a></h2>
<h2>8x16 Rom Fonts<a class="headerlink" href="#x16-rom-fonts" title="Link to this heading"></a></h2>
<figure class="align-center" id="id6">
<img alt="_images/vga1_8x16.png" src="_images/vga1_8x16.png" />
<figcaption>
<p><span class="caption-text">vga1_8x16.py: 128 Character 8x16 Font</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_8x16.py: 128 Character 8x16 Font</span><a class="headerlink" href="#id6" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -249,7 +301,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id7">
<img alt="_images/vga2_8x16.png" src="_images/vga2_8x16.png" />
<figcaption>
<p><span class="caption-text">vga2_8x16.py: 256 Character 8x16 Font</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_8x16.py: 256 Character 8x16 Font</span><a class="headerlink" href="#id7" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -257,11 +309,11 @@ the negative glyph.left fix from peterhinchs font conversion program
</div>
</section>
<section id="id1">
<h2>16x16 Rom Fonts<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h2>
<h2>16x16 Rom Fonts<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
<figure class="align-center" id="id8">
<img alt="_images/vga1_16x16.png" src="_images/vga1_16x16.png" />
<figcaption>
<p><span class="caption-text">vga1_16x16.py: 128 Character 16x16 Thin Font</span><a class="headerlink" href="#id8" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_16x16.py: 128 Character 16x16 Thin Font</span><a class="headerlink" href="#id8" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -270,7 +322,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id9">
<img alt="_images/vga1_bold_16x16.png" src="_images/vga1_bold_16x16.png" />
<figcaption>
<p><span class="caption-text">vga1_bold_16x16.py: 128 Character 16x16 Bold Font</span><a class="headerlink" href="#id9" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_bold_16x16.py: 128 Character 16x16 Bold Font</span><a class="headerlink" href="#id9" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -279,7 +331,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id10">
<img alt="_images/vga2_16x16.png" src="_images/vga2_16x16.png" />
<figcaption>
<p><span class="caption-text">vga2_16x16.py: 256 Character 16x16 Thin Font</span><a class="headerlink" href="#id10" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_16x16.py: 256 Character 16x16 Thin Font</span><a class="headerlink" href="#id10" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -288,7 +340,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id11">
<img alt="_images/vga2_bold_16x16.png" src="_images/vga2_bold_16x16.png" />
<figcaption>
<p><span class="caption-text">vga2_bold_16x16.py: 256 Character 16x16 Bold Font</span><a class="headerlink" href="#id11" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_bold_16x16.py: 256 Character 16x16 Bold Font</span><a class="headerlink" href="#id11" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -296,11 +348,11 @@ the negative glyph.left fix from peterhinchs font conversion program
</div>
</section>
<section id="x32-rom-fonts">
<h2>16x32 Rom Fonts<a class="headerlink" href="#x32-rom-fonts" title="Permalink to this headline"></a></h2>
<h2>16x32 Rom Fonts<a class="headerlink" href="#x32-rom-fonts" title="Link to this heading"></a></h2>
<figure class="align-center" id="id12">
<img alt="_images/vga1_16x32.png" src="_images/vga1_16x32.png" />
<figcaption>
<p><span class="caption-text">vga1_16x32.py: 128 Character 16x32 Thin Font</span><a class="headerlink" href="#id12" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_16x32.py: 128 Character 16x32 Thin Font</span><a class="headerlink" href="#id12" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -309,7 +361,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id13">
<img alt="_images/vga1_bold_16x32.png" src="_images/vga1_bold_16x32.png" />
<figcaption>
<p><span class="caption-text">vga1_bold_16x32.py: 128 Character 16x32 Bold Font</span><a class="headerlink" href="#id13" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga1_bold_16x32.py: 128 Character 16x32 Bold Font</span><a class="headerlink" href="#id13" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -318,7 +370,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id14">
<img alt="_images/vga2_16x32.png" src="_images/vga2_16x32.png" />
<figcaption>
<p><span class="caption-text">vga2_16x32.py: 256 Character 16x32 Thin Font</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_16x32.py: 256 Character 16x32 Thin Font</span><a class="headerlink" href="#id14" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -327,7 +379,7 @@ the negative glyph.left fix from peterhinchs font conversion program
<figure class="align-center" id="id15">
<img alt="_images/vga2_bold_16x32.png" src="_images/vga2_bold_16x32.png" />
<figcaption>
<p><span class="caption-text">vga2_bold_16x32.py: 256 Character 16x32 Bold Font</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
<p><span class="caption-text">vga2_bold_16x32.py: 256 Character 16x32 Bold Font</span><a class="headerlink" href="#id15" title="Link to this image"></a></p>
</figcaption>
</figure>
<div class="line-block">
@ -340,7 +392,7 @@ the negative glyph.left fix from peterhinchs font conversion program
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="examples.html" class="btn btn-neutral float-left" title="Example Programs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="examples_pi_pico.html" class="btn btn-neutral float-left" title="Raspberry Pi Pico Examples" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

Wyświetl plik

@ -10,10 +10,11 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="#" />
<link rel="search" title="Search" href="search.html" />
@ -24,11 +25,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home"> st7789py
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -37,26 +42,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -85,8 +137,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Index</li>
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Index</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>

Wyświetl plik

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>st7789py Driver &mdash; st7789py 0.1.0 documentation</title>
@ -11,10 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -26,11 +27,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="#" class="icon icon-home"> st7789py
<a href="#" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -39,26 +44,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -87,8 +139,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="#" class="icon icon-home"></a> &raquo;</li>
<li>st7789py Driver</li>
<li><a href="#" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">st7789py Driver</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/index.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -99,20 +151,36 @@
<div itemprop="articleBody">
<section id="st7789py-driver">
<h1>st7789py Driver<a class="headerlink" href="#st7789py-driver" title="Permalink to this headline"></a></h1>
<p>st7789 tft driver in MicroPython based on devbis st7789py_mpy module from
<h1>st7789py Driver<a class="headerlink" href="#st7789py-driver" title="Link to this heading"></a></h1>
<p>This is a fork of devbis st7789py_mpy module from
<a class="reference external" href="https://github.com/devbis/st7789py_mpy">https://github.com/devbis/st7789py_mpy</a>.</p>
<p>I added support for display rotation, scrolling and drawing text using 8 and 16
bit wide bitmap fonts with heights that are multiples of 8. Included are 12
bitmap fonts derived from classic pc text mode fonts.</p>
<p>This driver has support for:</p>
<ul class="simple">
<li><p>320x240, 240x240, 135x240, and 128x128 pixel displays</p></li>
<li><p>RGB and BGR Color Orders</p></li>
<li><p>Display rotation</p></li>
<li><p>Hardware based scrolling</p></li>
<li><p>Drawing text using converted PC BIOS bitmap fonts</p></li>
<li><p>Drawing text using converted TrueType fonts.</p></li>
<li><p>Drawing converted bitmaps</p></li>
</ul>
<p>This is a work in progress. Documentation can be found in the docs directory
and at <a class="reference external" href="https://penfold.owt.com/st7789py">https://penfold.owt.com/st7789py</a>.</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="fonts.html">Fonts</a><ul>
@ -128,7 +196,7 @@ bitmap fonts derived from classic pc text mode fonts.</p>
</div>
</section>
<section id="index">
<h1>Index<a class="headerlink" href="#index" title="Permalink to this headline"></a></h1>
<h1>Index<a class="headerlink" href="#index" title="Link to this heading"></a></h1>
<ul class="simple">
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
</ul>

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -10,10 +10,11 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -31,11 +32,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home"> st7789py
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -44,26 +49,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -92,8 +144,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Python Module Index</li>
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Python Module Index</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>

Wyświetl plik

@ -11,10 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<script src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script>
@ -27,11 +28,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home"> st7789py
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -40,26 +45,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1"><a class="reference internal" href="st7789py.html">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -88,8 +140,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Search</li>
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Search</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>st7789py Reference &mdash; st7789py 0.1.0 documentation</title>
@ -11,10 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=01f34227"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
@ -27,11 +28,15 @@
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #2980B9" >
<a href="index.html" class="icon icon-home"> st7789py
<a href="index.html" class="icon icon-home">
st7789py
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
@ -40,26 +45,73 @@
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">st7789py Driver</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">st7789py Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-example-programs">320x240 Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-lines-py">320x240 lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-hello-py">320x240 hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-feathers-py">320x240 feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-fonts-py">320x240 fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-scroll-py">320x240 scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#x240-toasters-py">320x240 toasters.py</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">st7789py Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#x240-ttgo-t-display-example-programs">135x240 TTGO T-Display Example Programs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples.html#lines-py">lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#hello-py">hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#feathers-py">feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#fonts-py">fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#scroll-py">scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#toasters-py">toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#chango-py">chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples.html#noto-fonts-py">noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Example Programs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples_atoms3.html">M5STACK ATOM-S3 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-feathers-py">atom_s3/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-rotations-py">atom_s3/rotations.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_atoms3.html#atom-s3-scroll-py">atom_s3/scroll.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_generic.html">Generic ESP32 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-lines-py">esp32_320x240/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-hello-py">esp32_320x240/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-feathers-py">esp32_320x240/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-fonts-py">esp32_320x240/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-scroll-py">esp32_320x240/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_generic.html#esp32-320x240-toasters-py">esp32_320x240/toasters.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay.html">TTGO T-Display Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-lines-py">ttgo_tdisplay/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-hello-py">ttgo_tdisplay/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-feathers-py">ttgo_tdisplay/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-fonts-py">ttgo_tdisplay/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-scroll-py">ttgo_tdisplay/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-toasters-py">ttgo_tdisplay/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-chango-py">ttgo_tdisplay/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay.html#ttgo-tdisplay-noto-fonts-py">ttgo_tdisplay/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_tdisplay_rp2040.html">TTGO T-Display RP2040 Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-lines-py">ttgo_tdisplay_rp2040/lines.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-hello-py">ttgo_tdisplay_rp2040/hello.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-feathers-py">ttgo_tdisplay_rp2040/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-fonts-py">ttgo_tdisplay_rp2040/fonts.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-scroll-py">ttgo_tdisplay_rp2040/scroll.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-toasters-py">ttgo_tdisplay_rp2040/toasters.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-chango-py">ttgo_tdisplay_rp2040/chango.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_tdisplay_rp2040.html#ttgo-tdisplay-rp2040-noto-fonts-py">ttgo_tdisplay_rp2040/noto_fonts.py</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="examples_pi_pico.html">Raspberry Pi Pico Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-13-feathers-py">rp_2040/waveshare_13/feathers.py</a></li>
<li class="toctree-l3"><a class="reference internal" href="examples_pi_pico.html#rp-2040-waveshare-114-feathers-py">rp_2040/waveshare_114/feathers.py</a></li>
</ul>
</li>
</ul>
@ -88,8 +140,8 @@
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>st7789py Reference</li>
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">st7789py Reference</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/st7789py.rst.txt" rel="nofollow"> View page source</a>
</li>
@ -100,11 +152,9 @@
<div itemprop="articleBody">
<section id="module-st7789py">
<span id="st7789py-reference"></span><h1>st7789py Reference<a class="headerlink" href="#module-st7789py" title="Permalink to this headline"></a></h1>
<p>Copyright (c) 2020, 2021 Russ Hughes</p>
<p>This file incorporates work covered by the following copyright and
permission notice and is licensed under the same terms:</p>
<p>The MIT License (MIT)</p>
<span id="st7789py-reference"></span><h1>st7789py Reference<a class="headerlink" href="#module-st7789py" title="Link to this heading"></a></h1>
<p>MIT License</p>
<p>Copyright (c) 2020-2023 Russ Hughes</p>
<p>Copyright (c) 2019 Ivan Belokobylskiy</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
@ -112,40 +162,53 @@ in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.</p>
<p>The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.</p>
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.</p>
<p>The driver is based on devbis st7789py_mpy module from
<a class="reference external" href="https://github.com/devbis/st7789py_mpy">https://github.com/devbis/st7789py_mpy</a>.</p>
<p>This driver adds support for:</p>
<p>This driver supports:</p>
<ul class="simple">
<li><p>320x240, 240x240 and 135x240 pixel displays</p></li>
<li><p>320x240, 240x240, 135x240 and 128x128 pixel displays</p></li>
<li><p>Display rotation</p></li>
<li><p>RGB and BGR color orders</p></li>
<li><p>Hardware based scrolling</p></li>
<li><p>Drawing text using 8 and 16 bit wide bitmap fonts with heights that are
multiples of 8. Included are 12 bitmap fonts derived from classic pc
BIOS text mode fonts.</p></li>
<li><p>Drawing text using converted TrueType fonts.</p></li>
<li><p>Drawing converted bitmaps</p></li>
<li><p>Named color constants</p>
<ul>
<li><p>BLACK</p></li>
<li><p>BLUE</p></li>
<li><p>RED</p></li>
<li><p>GREEN</p></li>
<li><p>CYAN</p></li>
<li><p>MAGENTA</p></li>
<li><p>YELLOW</p></li>
<li><p>WHITE</p></li>
</ul>
</li>
</ul>
<dl class="py function">
<dt class="sig sig-object py" id="st7789py.color565">
<span class="sig-prename descclassname"><span class="pre">st7789py.</span></span><span class="sig-name descname"><span class="pre">color565</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">red</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">green</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">blue</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#color565"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.color565" title="Permalink to this definition"></a></dt>
<span class="sig-prename descclassname"><span class="pre">st7789py.</span></span><span class="sig-name descname"><span class="pre">color565</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">red</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">green</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">blue</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#color565"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.color565" title="Link to this definition"></a></dt>
<dd><p>Convert red, green and blue values (0-255) into a 16-bit 565 encoding.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="st7789py.ST7789">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">st7789py.</span></span><span class="sig-name descname"><span class="pre">ST7789</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">spi</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backlight</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rotation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789" title="Permalink to this definition"></a></dt>
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">st7789py.</span></span><span class="sig-name descname"><span class="pre">ST7789</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">spi</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backlight</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rotation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color_order</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789" title="Link to this definition"></a></dt>
<dd><p>ST7789 driver class</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>spi</strong> (<em>spi</em>) – spi object <strong>Required</strong></p></li>
<li><p><strong>width</strong> (<em>int</em>) – display width <strong>Required</strong></p></li>
@ -154,32 +217,39 @@ BIOS text mode fonts.</p></li>
<li><p><strong>dc</strong> (<em>pin</em>) – dc pin <strong>Required</strong></p></li>
<li><p><strong>cs</strong> (<em>pin</em>) – cs pin</p></li>
<li><p><strong>backlight</strong> (<em>pin</em>) – backlight pin</p></li>
<li><p><strong>rotation</strong> (<em>int</em>) – display rotation
- 0-Portrait
- 1-Landscape
- 2-Inverted Portrait
- 3-Inverted Landscape</p></li>
<li><p><strong>rotation</strong> (<em>int</em>) – <ul>
<li><p>0-Portrait</p></li>
<li><p>1-Landscape</p></li>
<li><p>2-Inverted Portrait</p></li>
<li><p>3-Inverted Landscape</p></li>
</ul>
</p></li>
<li><p><strong>color_order</strong> (<em>int</em>) – <ul>
<li><p>RGB: Red, Green Blue, default</p></li>
<li><p>BGR: Blue, Green, Red</p></li>
</ul>
</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.hard_reset">
<span class="sig-name descname"><span class="pre">hard_reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.hard_reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.hard_reset" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">hard_reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.hard_reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.hard_reset" title="Link to this definition"></a></dt>
<dd><p>Hard reset display.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.soft_reset">
<span class="sig-name descname"><span class="pre">soft_reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.soft_reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.soft_reset" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">soft_reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.soft_reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.soft_reset" title="Link to this definition"></a></dt>
<dd><p>Soft reset display.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.sleep_mode">
<span class="sig-name descname"><span class="pre">sleep_mode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.sleep_mode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.sleep_mode" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">sleep_mode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.sleep_mode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.sleep_mode" title="Link to this definition"></a></dt>
<dd><p>Enable or disable display sleep mode.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> (<em>bool</em>) – if True enable sleep mode. if False disable sleep</p></li>
<li><p><strong>mode</strong></p></li>
@ -190,10 +260,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.inversion_mode">
<span class="sig-name descname"><span class="pre">inversion_mode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.inversion_mode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.inversion_mode" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">inversion_mode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.inversion_mode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.inversion_mode" title="Link to this definition"></a></dt>
<dd><p>Enable or disable display inversion mode.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> (<em>bool</em>) – if True enable inversion mode. if False disable</p></li>
<li><p><strong>mode</strong> (<em>inversion</em>) – </p></li>
@ -204,10 +274,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.rotation">
<span class="sig-name descname"><span class="pre">rotation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rotation</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.rotation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.rotation" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">rotation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rotation</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.rotation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.rotation" title="Link to this definition"></a></dt>
<dd><p>Set display rotation.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rotation</strong> (<em>int</em>) – <ul class="simple">
<li><p>0-Portrait</p></li>
<li><p>1-Landscape</p></li>
@ -221,10 +291,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.vline">
<span class="sig-name descname"><span class="pre">vline</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vline" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">vline</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vline" title="Link to this definition"></a></dt>
<dd><p>Draw vertical line at the given location and color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x</strong> (<em>int</em>) – x coordinate</p></li>
<li><p><strong>Y</strong> (<em>int</em>) – y coordinate</p></li>
@ -237,10 +307,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.hline">
<span class="sig-name descname"><span class="pre">hline</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.hline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.hline" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">hline</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.hline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.hline" title="Link to this definition"></a></dt>
<dd><p>Draw horizontal line at the given location and color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x</strong> (<em>int</em>) – x coordinate</p></li>
<li><p><strong>Y</strong> (<em>int</em>) – y coordinate</p></li>
@ -253,10 +323,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.pixel">
<span class="sig-name descname"><span class="pre">pixel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.pixel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.pixel" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">pixel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.pixel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.pixel" title="Link to this definition"></a></dt>
<dd><p>Draw a pixel at the given location and color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x</strong> (<em>int</em>) – x coordinate</p></li>
<li><p><strong>Y</strong> (<em>int</em>) – y coordinate</p></li>
@ -268,10 +338,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.blit_buffer">
<span class="sig-name descname"><span class="pre">blit_buffer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">buffer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.blit_buffer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.blit_buffer" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">blit_buffer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">buffer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.blit_buffer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.blit_buffer" title="Link to this definition"></a></dt>
<dd><p>Copy buffer to display at the given location.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> (<em>bytes</em>) – Data to copy to display</p></li>
<li><p><strong>x</strong> (<em>int</em>) – Top left corner x coordinate</p></li>
@ -285,10 +355,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.rect">
<span class="sig-name descname"><span class="pre">rect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">h</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.rect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.rect" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">rect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">h</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.rect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.rect" title="Link to this definition"></a></dt>
<dd><p>Draw a rectangle at the given location, size and color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x</strong> (<em>int</em>) – Top left corner x coordinate</p></li>
<li><p><strong>y</strong> (<em>int</em>) – Top left corner y coordinate</p></li>
@ -302,10 +372,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.fill_rect">
<span class="sig-name descname"><span class="pre">fill_rect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.fill_rect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.fill_rect" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">fill_rect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">height</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.fill_rect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.fill_rect" title="Link to this definition"></a></dt>
<dd><p>Draw a rectangle at the given location, size and filled with color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x</strong> (<em>int</em>) – Top left corner x coordinate</p></li>
<li><p><strong>y</strong> (<em>int</em>) – Top left corner y coordinate</p></li>
@ -319,10 +389,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.fill">
<span class="sig-name descname"><span class="pre">fill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.fill"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.fill" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">fill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.fill"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.fill" title="Link to this definition"></a></dt>
<dd><p>Fill the entire FrameBuffer with the specified color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>color</strong> (<em>int</em>) – 565 encoded color</p>
</dd>
</dl>
@ -330,10 +400,10 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.line">
<span class="sig-name descname"><span class="pre">line</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.line"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.line" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">line</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.line"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.line" title="Link to this definition"></a></dt>
<dd><p>Draw a single pixel wide line starting at x0, y0 and ending at x1, y1.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x0</strong> (<em>int</em>) – Start point x coordinate</p></li>
<li><p><strong>y0</strong> (<em>int</em>) – Start point y coordinate</p></li>
@ -347,7 +417,7 @@ BIOS text mode fonts.</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.vscrdef">
<span class="sig-name descname"><span class="pre">vscrdef</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tfa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vsa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bfa</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vscrdef"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vscrdef" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">vscrdef</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tfa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vsa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bfa</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vscrdef"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vscrdef" title="Link to this definition"></a></dt>
<dd><p>Set Vertical Scrolling Definition.</p>
<p>To scroll a 135x240 display these values should be 40, 240, 40.
There are 40 lines above the display that are not shown followed by
@ -355,7 +425,7 @@ There are 40 lines above the display that are not shown followed by
You could write to these areas off display and scroll them into view by
changing the TFA, VSA and BFA values.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>tfa</strong> (<em>int</em>) – Top Fixed Area</p></li>
<li><p><strong>vsa</strong> (<em>int</em>) – Vertical Scrolling Area</p></li>
@ -367,7 +437,7 @@ changing the TFA, VSA and BFA values.</p>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.vscsad">
<span class="sig-name descname"><span class="pre">vscsad</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vssa</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vscsad"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vscsad" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">vscsad</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vssa</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.vscsad"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.vscsad" title="Link to this definition"></a></dt>
<dd><p>Set Vertical Scroll Start Address of RAM.</p>
<p>Defines which line in the Frame Memory will be written as the first
line after the last line of the Top Fixed Area on the display</p>
@ -378,7 +448,7 @@ utime.sleep(0.01)</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>vssa</strong> (<em>int</em>) – Vertical Scrolling Start Address</p>
</dd>
</dl>
@ -386,11 +456,11 @@ utime.sleep(0.01)</p>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.text">
<span class="sig-name descname"><span class="pre">text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">background</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.text" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">color</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">background</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.text" title="Link to this definition"></a></dt>
<dd><p>Draw text on display in specified font and colors. 8 and 16 bit wide
fonts are supported.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>font</strong> (<em>module</em>) – font module to use.</p></li>
<li><p><strong>text</strong> (<em>str</em>) – text to write</p></li>
@ -405,10 +475,10 @@ fonts are supported.</p>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.bitmap">
<span class="sig-name descname"><span class="pre">bitmap</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bitmap</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.bitmap"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.bitmap" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">bitmap</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bitmap</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.bitmap"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.bitmap" title="Link to this definition"></a></dt>
<dd><p>Draw a bitmap on display at the specified column and row</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>bitmap</strong> (<em>bitmap_module</em>) – The module containing the bitmap to draw</p></li>
<li><p><strong>x</strong> (<em>int</em>) – column to start drawing at</p></li>
@ -422,11 +492,11 @@ module</p></li>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.write">
<span class="sig-name descname"><span class="pre">write</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.write"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.write" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">write</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bg</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">micropython.const</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.write"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.write" title="Link to this definition"></a></dt>
<dd><p>Write a string using a converted true-type font on the display starting
at the specified column and row</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>font</strong> (<em>font</em>) – The module containing the converted true-type font</p></li>
<li><p><strong>s</strong> (<em>string</em>) – The string to write</p></li>
@ -441,11 +511,11 @@ at the specified column and row</p>
<dl class="py method">
<dt class="sig sig-object py" id="st7789py.ST7789.write_width">
<span class="sig-name descname"><span class="pre">write_width</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.write_width"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.write_width" title="Permalink to this definition"></a></dt>
<span class="sig-name descname"><span class="pre">write_width</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">font</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/st7789py.html#ST7789.write_width"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#st7789py.ST7789.write_width" title="Link to this definition"></a></dt>
<dd><p>Returns the width in pixels of the string if it was written with the
specified font</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>font</strong> (<em>font</em>) – The module containing the converted true-type font</p></li>
<li><p><strong>string</strong> (<em>string</em>) – The string to measure</p></li>

Wyświetl plik

@ -81,7 +81,7 @@ master_doc = 'index'
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
language = 'en'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.

Wyświetl plik

@ -2,142 +2,11 @@
Example Programs
****************
320x240 Example Programs
========================
These examples run on a ESP32 board with a 320x240 display. They are were tested using a SparkFun
ESP32 Thing and a Waveshare 2 inch LCD ST7789 Module. You may need to modify the pin use for your
device.
320x240 lines.py
----------------
.. literalinclude:: ../../examples/esp32_320x240/lines.py
:linenos:
:language: python
320x240 hello.py
-----------------
.. literalinclude:: ../../examples/esp32_320x240/hello.py
:linenos:
:language: python
320x240 feathers.py
-------------------
.. literalinclude:: ../../examples/esp32_320x240/feathers.py
:linenos:
:language: python
320x240 fonts.py
----------------
.. literalinclude:: ../../examples/esp32_320x240/fonts.py
:linenos:
:language: python
320x240 scroll.py
-----------------
.. literalinclude:: ../../examples/esp32_320x240/scroll.py
:linenos:
:language: python
320x240 toasters.py
-------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the sprites2bitmap.py
utility. See the maketoast shell script for the command line used to create the toast_bitmaps.py from the
toasters.bmp image.
.. literalinclude:: ../../examples/esp32_320x240/toasters/toasters.py
:linenos:
:language: python
135x240 TTGO T-Display Example Programs
=======================================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/TTGO-T-Display for more
information.
lines.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/lines.py
:linenos:
:language: python
hello.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/hello.py
:linenos:
:language: python
feathers.py
-----------
.. literalinclude:: ../../examples/ttgo_tdisplay/feathers.py
:linenos:
:language: python
fonts.py
--------
.. literalinclude:: ../../examples/ttgo_tdisplay/fonts.py
:linenos:
:language: python
scroll.py
---------
.. literalinclude:: ../../examples/ttgo_tdisplay/scroll.py
:linenos:
:language: python
toasters.py
-----------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay/toasters/toasters.py
:linenos:
:language: python
chango.py
---------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/chango.py
:linenos:
:language: python
noto_fonts.py
-------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/noto_fonts.py
:linenos:
:language: python
.. toctree::
:maxdepth: 4
examples_atoms3.rst
examples_generic.rst
examples_tdisplay.rst
examples_tdisplay_rp2040.rst
examples_pi_pico.rst

Wyświetl plik

@ -0,0 +1,27 @@
M5STACK ATOM-S3 Examples
========================
These examples run on the M5Stack ATOM-S3. See https://shop.m5stack.com/products/atoms3-dev-kit-w-0-85-inch-screen
for more information.
atom_s3/feathers.py
-------------------
.. literalinclude:: ../../examples/atom_s3/feathers.py
:linenos:
:language: python
atom_s3/rotations.py
--------------------
.. literalinclude:: ../../examples/atom_s3/rotations.py
:linenos:
:language: python
atom_s3/scroll.py
-----------------
.. literalinclude:: ../../examples/atom_s3/scroll.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,58 @@
Generic ESP32 Examples
======================
These examples run on a ESP32 board with a 320x240 display. They are were tested using a SparkFun
ESP32 Thing and a Waveshare 2 inch LCD ST7789 Module. You may need to modify the pin use for your
device.
esp32_320x240/lines.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/lines.py
:linenos:
:language: python
esp32_320x240/hello.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/hello.py
:linenos:
:language: python
esp32_320x240/feathers.py
-------------------------
.. literalinclude:: ../../examples/esp32_320x240/feathers.py
:linenos:
:language: python
esp32_320x240/fonts.py
----------------------
.. literalinclude:: ../../examples/esp32_320x240/fonts.py
:linenos:
:language: python
esp32_320x240/scroll.py
-----------------------
.. literalinclude:: ../../examples/esp32_320x240/scroll.py
:linenos:
:language: python
esp32_320x240/toasters.py
-------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the sprites2bitmap.py
utility. See the maketoast shell script for the command line used to create the toast_bitmaps.py from the
toasters.bmp image.
.. literalinclude:: ../../examples/esp32_320x240/toasters/toasters.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,20 @@
Raspberry Pi Pico Examples
==========================
These examples run on the Raspberry Pi Pico with Waveshare displays
rp_2040/waveshare_13/feathers.py
--------------------------------
.. literalinclude:: ../../examples/rp_2040/waveshare_13/feathers.py
:linenos:
:language: python
rp_2040/waveshare_114/feathers.py
---------------------------------
.. literalinclude:: ../../examples/rp_2040/waveshare_114/feathers.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,80 @@
TTGO T-Display Examples
=======================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/TTGO-T-Display for more
information.
ttgo_tdisplay/lines.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/lines.py
:linenos:
:language: python
ttgo_tdisplay/hello.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/hello.py
:linenos:
:language: python
ttgo_tdisplay/feathers.py
-------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/feathers.py
:linenos:
:language: python
ttgo_tdisplay/fonts.py
----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/fonts.py
:linenos:
:language: python
ttgo_tdisplay/scroll.py
-----------------------
.. literalinclude:: ../../examples/ttgo_tdisplay/scroll.py
:linenos:
:language: python
ttgo_tdisplay/toasters.py
-------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay/toasters/toasters.py
:linenos:
:language: python
ttgo_tdisplay/chango.py
-----------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/chango.py
:linenos:
:language: python
ttgo_tdisplay/noto_fonts.py
---------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay/truetype/noto_fonts.py
:linenos:
:language: python

Wyświetl plik

@ -0,0 +1,80 @@
TTGO T-Display RP2040 Examples
==============================
These examples run on the LilyGo TTGO-T-Display available from the usual
locations. See https://github.com/Xinyuan-LilyGO/LILYGO-T-display-RP2040
for more information.
ttgo_tdisplay_rp2040/lines.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/lines.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/hello.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/hello.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/feathers.py
--------------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/feathers.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/fonts.py
-----------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/fonts.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/scroll.py
------------------------------
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/scroll.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/toasters.py
--------------------------------
Flying toasters sprite demo using bitmaps created from spritesheet using the imgtobitmap.py utility.
See the maketoast script in the utils directory for details. See the 320x240 toasters example for
a more advanced example that uses the sprites2bitmap utility and indexed bitmaps.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/toasters/toasters.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/chango.py
------------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/truetype/chango.py
:linenos:
:language: python
ttgo_tdisplay_rp2040/noto_fonts.py
----------------------------------
Test for font2bitmap converter for the driver.
See the font2bitmap program in the utils directory.
.. literalinclude:: ../../examples/ttgo_tdisplay_rp2040/truetype/noto_fonts.py
:linenos:
:language: python

Wyświetl plik

@ -1,12 +1,21 @@
st7789py Driver
===============
st7789 tft driver in MicroPython based on devbis' st7789py_mpy module from
This is a fork of devbis' st7789py_mpy module from
https://github.com/devbis/st7789py_mpy.
I added support for display rotation, scrolling and drawing text using 8 and 16
bit wide bitmap fonts with heights that are multiples of 8. Included are 12
bitmap fonts derived from classic pc text mode fonts.
This driver has support for:
- 320x240, 240x240, 135x240, and 128x128 pixel displays
- RGB and BGR Color Orders
- Display rotation
- Hardware based scrolling
- Drawing text using converted PC BIOS bitmap fonts
- Drawing text using converted TrueType fonts.
- Drawing converted bitmaps
This is a work in progress. Documentation can be found in the docs directory
and at https://penfold.owt.com/st7789py.
.. toctree::