Barevná světýlka

Je čas na novou hračku! Tentokrát to bude LED pásek.

Na pásku máš 8 malých čtverečků. Každý z nich obsahuje docela hodně elektroniky: tři barevné LED (červenou, zelenou a modrou) a čip, který je umí ovládat pomocí informací, které dostane přes jediný drátek z modulu.

Takové pásky se prodávají po metrech a dají se nastříhat – mezi jednotlivými světýlky si všimni čárky, která naznačuje, kde máš střihnout. Energie z USB stačí zhruba na osm světýlek, proto jsi jich dostala tolik.

Tenhle LED pásek je stavěný na pět voltů. Naštěstí ale potřebuje 5 V jen na napájení; řídící signál s informacemi o barvičkách může mít 3,3 V.

Pojďme pásek zapojit:

  • GND pásku (bílý drátek) připoj na G
  • DI (data in – zelený drátek) připoj na D4
  • +5V (červený drátek) připoj na VIN.

Nožička VIN poskytuje 5 voltů. Pozor na ni: nepřipojuj na ni zařízení, které se s pěti volty nevyrovnají.

Máš-li zapojeno, můžeš začít programovat. „Jazyk”, kterým „mluví” tenhle LED pásek je trošku složitější než signál PWM, ale MicroPython obsahuje speciální knihovnu, která s páskem komunikovat umí. Vypadá to nějak takhle:

from machine import Pin
from neopixel import NeoPixel

POCET_LED = 8
pin = Pin(2, Pin.OUT)
np = NeoPixel(pin, POCET_LED)
np[0] = (255, 255, 255)
np.write()

Co znamenají ta čísla (0 a 255), na to už jistě přijdeš sám/sama. Jen při experimentování nezapomeň zavolat np.write(), tím se informace pošlou do LED pásku.

Zvládneš naprogramovat semafor?

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2019/brno-podzim-pondeli:micropython:9",
      "title": "Barevná světýlka",
      "html": "\n          \n    \n\n    <h2>Barevn&#xE1; sv&#x11B;t&#xFD;lka</h2>\n<p>Je &#x10D;as na novou hra&#x10D;ku!\nTentokr&#xE1;t to bude LED p&#xE1;sek.</p>\n<p>Na p&#xE1;sku m&#xE1;&#x161; 8 mal&#xFD;ch &#x10D;tvere&#x10D;k&#x16F;.\nKa&#x17E;d&#xFD; z nich obsahuje docela hodn&#x11B; elektroniky:\nt&#x159;i barevn&#xE9; LED (&#x10D;ervenou, zelenou a modrou)\na &#x10D;ip, kter&#xFD; je um&#xED; ovl&#xE1;dat pomoc&#xED; informac&#xED;,\nkter&#xE9; dostane p&#x159;es jedin&#xFD; dr&#xE1;tek z&#xA0;modulu.</p>\n<p>Takov&#xE9; p&#xE1;sky se prod&#xE1;vaj&#xED; po metrech a daj&#xED; se\nnast&#x159;&#xED;hat &#x2013; mezi jednotliv&#xFD;mi sv&#x11B;t&#xFD;lky si v&#x161;imni &#x10D;&#xE1;rky,\nkter&#xE1; nazna&#x10D;uje, kde m&#xE1;&#x161; st&#x159;ihnout.\nEnergie z USB sta&#x10D;&#xED; zhruba na osm sv&#x11B;t&#xFD;lek, proto jsi jich dostala tolik.</p>\n<p>Tenhle LED p&#xE1;sek je stav&#x11B;n&#xFD; na p&#x11B;t volt&#x16F;. Na&#x161;t&#x11B;st&#xED; ale pot&#x159;ebuje 5 V jen\nna <em>nap&#xE1;jen&#xED;</em>; &#x159;&#xED;d&#xED;c&#xED; sign&#xE1;l s informacemi o barvi&#x10D;k&#xE1;ch m&#x16F;&#x17E;e m&#xED;t 3,3 V.</p>\n<p>Poj&#x10F;me p&#xE1;sek zapojit:</p>\n<ul>\n<li><code>GND</code> p&#xE1;sku (b&#xED;l&#xFD; dr&#xE1;tek) p&#x159;ipoj na <code>G</code></li>\n<li><code>DI</code> (<em>data in</em> &#x2013; zelen&#xFD; dr&#xE1;tek) p&#x159;ipoj na <code>D4</code></li>\n<li><code>+5V</code> (&#x10D;erven&#xFD; dr&#xE1;tek) p&#x159;ipoj na <code>VIN</code>.</li>\n</ul>\n<p>No&#x17E;i&#x10D;ka <code>VIN</code> poskytuje 5 volt&#x16F;.\nPozor na ni: nep&#x159;ipojuj na ni za&#x159;&#xED;zen&#xED;, kter&#xE9; se s&#xA0;p&#x11B;ti volty nevyrovnaj&#xED;.</p>\n<p>M&#xE1;&#x161;-li zapojeno, m&#x16F;&#x17E;e&#x161; za&#x10D;&#xED;t programovat.\n&#x201E;Jazyk&#x201D;, kter&#xFD;m &#x201E;mluv&#xED;&#x201D; tenhle LED p&#xE1;sek je tro&#x161;ku\nslo&#x17E;it&#x11B;j&#x161;&#xED; ne&#x17E; sign&#xE1;l PWM, ale MicroPython obsahuje\nspeci&#xE1;ln&#xED; knihovnu, kter&#xE1; s p&#xE1;skem komunikovat um&#xED;.\nVypad&#xE1; to n&#x11B;jak takhle:</p>\n<pre>from machine import Pin\nfrom neopixel import NeoPixel\n\nPOCET_LED = 8\npin = Pin(2, Pin.OUT)\nnp = NeoPixel(pin, POCET_LED)\nnp<span class=\"highlight-nocolor\">[0]</span> = (<span class=\"highlight-red\">255</span>, <span class=\"highlight-green\">255</span>, <span class=\"highlight-blue\">255</span>)\nnp.write()\n</pre><p>Co znamenaj&#xED; ta &#x10D;&#xED;sla (<code>0</code> a <code>255</code>), na to u&#x17E; jist&#x11B; p&#x159;ijde&#x161; s&#xE1;m/sama.\nJen p&#x159;i experimentov&#xE1;n&#xED; nezapome&#x148; zavolat\n<code>np.write()</code>, t&#xED;m se informace po&#x161;lou do LED p&#xE1;sku.</p>\n<p>Zvl&#xE1;dne&#x161; naprogramovat semafor?</p>\n\n\n        "
    }
  }
}