Skip to content

FudgeCZ/led-pyramid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LED_pyramid.ino = Hlavní program

LED_pyramid_test.ino = Program pro testování funkčnosti

display-holder.f3d = 3D model pro úpravy v Autodesk Fusion

display-holder.stl = 3D model pro výtisk

Ročníková práce MET - Svítící LED pyramida

  • Jméno : Novák František

  • Třída : MET4

image

Obsah

Úvod do projektu

Co je to a princip

Hlavní cíl projektu

Použité komponenty

Mechanická konstrukce a 3D tisk

Elektrické zapojení

Ovládání a režimy

Pájení

Testování funkcí

Výsledné zařízení

Závěr

Zdroje

Úvod do projektu:

Pro svou ročníkovou práci jsem si zvolil svítící LED pyramidu. Hlavním důvodem mého výběru byla snaha vytvořit zařízení, které je vizuálně atraktivním projektem a zároveň i zajímavý a naučný.

Tento projekt pro mě představoval ideální výzvu, protože kombinuje: návrh zapojení součástek, manuální zručnost při konstrukci pyramidy, a tvorbu programu pro Arduino. Zvláštní motivací pro mě byla práce s moderními komponenty, jako je Arduino Nano s rozhraním USB-C, a implementace uživatelského rozhraní pomocí LCD displeje.

Co je to a princip:

Svítící LED pyramida je elektronický dekorativní prvek, který slouží jako ukázka možností řízení světelných diod pomocí Arduina. Konstrukčně se jedná o 2D objekt ve tvaru jehlanu, který je osazen devatenácti LED diodami. Celé zařízení je řízeno vývojovou deskou Arduino Nano, která tvoří „mozek" celého systému.

Princip funkce je založen na cyklickém provádění hlavní smyčky programu (loop), která neustále monitoruje vstupy a řídí výstupy. Zařízení funguje na principu stavového automatu, kde proměnná režim určuje, která animace se má právě vykonávat. Ovládání je zajištěno tlačítkem připojeným na digitální vstup. Aby zařízení reagovalo na stisk tlačítka okamžitě i v průběhu animací, je v kódu implementována speciální funkce cekejBezpecne. Ta nahrazuje běžné čekání (delay) a v krátkých intervalech kontroluje stav tlačítka, což umožňuje plynulé přepínání režimů bez nutnosti čekat na dokončení světelného efektu.

Vizuální efekty jsou vytvářeny spínáním digitálních pinů, ke kterým jsou diody připojeny. Pro pokročilé efekty, jako je „pulzování" (plynulé rozsvěcení a zhasínání), využívá zařízení metodu softwarové pulsní šířkové modulace (PWM). Protože digitální piny umí standardně jen stavy zapnuto/vypnuto, program velmi rychle střídá tyto stavy v různých poměrech, čímž pro lidské oko vytváří iluzi změny jasu. O aktuálním stavu, názvu animace a číslu režimu je uživatel informován prostřednictvím LCD displeje, který s procesorem komunikuje přes sběrnici I2C.

Hlavní cíl projektu:

Hlavním cílem této ročníkové práce bylo navrhnout a sestavit komplexní elektronické zařízení. Cílem nebylo pouze rozblikat diodu, ale vytvořit systém s uživatelským rozhraním. Tento hlavní záměr lze rozdělit do několika konkrétních technických a vzdělávacích cílů:

  • Programování v Arduino IDE: Osvojit si práci s poli (arrays) pro efektivní správu většího množství pinů a pochopit logiku neblokujícího kódu. Důležitým cílem bylo naprogramovat systém tak, aby animace byly plynulé a ovládání responzivní.
  • Implementace komunikačních protokolů: Naučit se pracovat s knihovnou LiquidCrystal_I2C a zprovoznit komunikaci mezi arduinem a displejem pouze pomocí dvou datových vodičů (SDA, SCL).
  • Tvorba algoritmů: Naprogramovat sekvence animací, jako je „Zleva doprava", střídání sudých a lichých řad nebo náhodný výběr efektů.
  • Finalizace produktu: Dotáhnout projekt do podoby, kdy je mechanicky stabilní (využití 3D tisku pro držáky displeje) a spolehlivě funguje při opakovaném použití.

Použité komponenty:

Pro realizaci zařízení byly vybrány následující klíčové součástky:

  • Arduino Nano (USB-C): Kompaktní vývojová. Zvolena pro své malé rozměry vhodné do nepájivého pole a moderní USB-C konektor.

    image
  • LED diody (19 ks): 5mm diody, které tvoří vizuální část projektu.

    image
  • LCD Displej 1602 s I2C převodníkem: Zobrazuje textové informace (2 řádky po 16 znacích). Díky I2C modulu vyžaduje pouze 2 datové piny (A5/A6).

    image image

  • Rezistory (220 Ω - 9 ks): Ochranné prvky zapojené v sérii k LED diodám pro omezení proudu.

    image
  • Tlačítko: Slouží k přepínání režimů.

    image
  • Nepájivé pole a propojovací vodiče: Pro flexibilní sestavení obvodu.

Mechanická konstrukce a 3D tisk:

Mechanická stránka projektu se skládá ze dvou hlavních částí: samotné pyramidy a upevnění displeje.

  • Konstrukce pyramidy: Pyramida je sestavena pomocí prostorového pájení. Diody drží pohromadě díky spájeným vývodům (katody a anody), které tvoří pevnou mřížku.
  • 3D Tisk: Aby LCD displej pevně držel na nepájivém poli a byl v dobré poloze pro čtení, navrhl jsem a vytiskl speciální plastové nožičky zasouvací do nepájivého pole pro stabilitu. Ty zajišťují lepší čitelnost displeje a hezčí vzhled celého zařízení.
image

Elektrické zapojení

image

Zapojení je realizováno na nepájivém poli. Projekt byl nejprve zapojen v online nástroji Tinkercad, kde se jednoduše dá navrhnout a naprogramovat Arduino a další různé zařízení. Zapojení elektroniky podle schéma:

  • LED Diody: Jsou ovládány 9 digitálními výstupy. Piny Arduina D4D12 jsou připojeny přes rezistory k jednotlivým sekcím pyramidy.
    • Pole v kódu: int ledPins[] = {12, 11, 10, 9, 8, 7, 6, 5, 4};
  • Ovládací tlačítko: Jeden pól tlačítka je připojen na pin D2 a druhý na zem (GND). V programu je aktivován interní INPUT_PULLUP rezistor, takže stisk tlačítka spíná logickou nulu (LOW).
    • Pole v kódu: int buttonPin = 2;
  • LCD Displej: Napájení (VCC, GND) je bráno z 5V větve Arduina. Datová komunikace probíhá přes piny A5 (SCL) a A6 (SDA) což odpovídá sběrnici I2C.
    • Pole v kódu: LiquidCrystal_I2C lcd(0x27, 16, 2);

Ovládání a režimy:

Zařízení se ovládá jedním tlačítkem. Systém obsahuje celkem 10 režimů (0-9). Při každém stisku tlačítka se hodnota proměnné režim zvýší o 1. Po dosažení čísla 9 se cyklus vrátí na 0.

Režimy se dají jednoduše přidat a upravit, stačí přidat funkce a text pro displej.

Seznam naprogramovaných režimů:

  • Režim 0 (Vypnuto): Všechny LED zhasnou, zařízení čeká.

    image
  • Režim 1 (Zleva doprava): Postupné rozsvěcení a zhasínání řad diod z jedné strany na druhou.

    image
  • Režim 2 (Zprava doleva): Inverzní animace k režimu 1.

    image
  • Režim 3 (Střed -> Ven): Efekt, kdy se světlo šíří od prostředního sloupce směrem k okrajům.

    image
  • Režim 4 (Ven -> Střed): Světlo se "stahuje" z okrajů do středu pyramidy.

    image
  • Režim 5 (Pulzování): Speciální režim využívající softwarové PWM (rychlé spínání signálů). Jas diod se plynule zvyšuje a snižuje (tzv. "dýchání"). Program toho docílí rychlým spínáním diod v cyklech s proměnlivou délkou svitu (delayMicroseconds).

    image image

  • Režim 6 (Sudé / Liché): Střídavé blikání sudých a lichých sekcí diod.

    image image

  • Režim 7 (Automaticky): Přehrává pevnou sekvenci animací za sebou.

    • 3x Zleva-doprava - tam a zpátky
    • 3x Pulzování
    • 3x Od středu do stran - tam a zpátky
    • 6x Sudé a liché
    • Zpět na 1…
    image
  • Režim 8 (Náhodně): Arduino náhodně vybírá animace (1-6) a přehrává je, čímž zajišťuje neopakující se podívanou.

    image
  • Režim 9 (Svítí vše): Trvalé rozsvícení všech diod.

    image

Pájení:

Náročnější částí byla konstrukce samotné pyramidy. Postupoval jsem metodou pájení "ve vzduchu" podle předem připraveného plánu, aby diody tvořily požadovaný tvar. Postup pájení jednotlivých pater a sekcí:

  • 2x LED samostatně.

    image
  • Spojení 2x zkrácené LED s další LED.

    image
  • Spojení 2x LED s další LED.

    image
  • Spojení 2x zkrácené LED s dvěma dalšími LED.

    image
  • Finální vrchol tvořený 3 LED na sobě.

    image

Testování funkcí:

Po dokončení zapojení a sestavení zařízení následuje testování. K dispozici je i testovací program LED_pyramid_test.ino (viz. Zdroje)

  • Test napájení: První zapojení do USB. Kontrola, zda se nerozžhaví žádná součástka a zda svítí kontrolka na Arduinu.
  • Test LED diod: Nahrání jednoduchého kódu, který rozsvítí všechny piny ledPins, aby se ověřilo, zda jsou všechny diody připájeny správně a nejsou špatně dané póly.
  • Test I2C Displeje: Ověření adresy displeje (standardně 0x27) a nastavení kontrastu potenciometrem na zadní straně modulu, aby byl text čitelný.
  • Test Logiky a Tlačítka: Zde jsem narazil na problém s odezvou tlačítka během dlouhých animací. Vyřešil jsem to implementací funkce cekejBezpecne(), která kontroluje tlačítko i během čekání v animaci. Pokud je stisknuto, animace se okamžitě přeruší (return) a přepne se režim.

Výsledné zařízení:

Po dokončení všech fázích - od prvotního návrhu a 3D tisku, přes pájení konstrukce, až po finální programování a ladění - vzniklo plně funkční dekorativní zařízení. Výsledný produkt splňuje všechny předem stanovené cíle a funguje spolehlivě.

image

Vlastnosti hotové LED pyramidy:

  • Kompaktní design: Celé zařízení je sestaveno na malém nepájivém poli, přičemž dominantním prvkem je prostorová konstrukce LED diod ve tvaru pyramidy.
  • Vizuální efekty: Zařízení nabízí celkem 10 různých provozních režimů. Animace jsou plynulé a zahrnují různé efekty např. pulzování (softwarové stmívání) a náhodné generování efektů.
  • Uživatelské rozhraní: Díky LCD displeji má uživatel okamžitý přehled o tom, jaký režim je právě aktivní (např. nápis „PULZOVANI" nebo „NAHODNE").
  • Interaktivita: Ovládání je řešeno jednoduše pomocí tlačítka. Zařízení reaguje okamžitě díky optimalizovanému kódu, který nečeká na dokončení animace, ale umožňuje přepnutí režimu kdykoliv.

V praxi zařízení funguje tak, že po připojení napájení (USB-C) se rozsvítí podsvícení displeje a zařízení je připraveno spustit režimy.

Možnosti dalšího rozvoje: Tento projekt je dobrý v tom, že je otevřený dalším úpravám. Do budoucna je možné zařízení rozšířit například o:

  • Naprogramování dalších, složitějších světelných sekvencí.
  • Vytvoření plošného spoje (PCB) pro přenosnou verzi napájenou např. z baterie.

Závěr :

Cílem mé ročníkové práce bylo vytvořit „Svítící LED pyramidu", která bude plně funkční a vizuálně atraktivní. Tento cíl se podařilo splnit. Výsledné zařízení nabízí 10 různých režimů, plynulé animace a informativní displej. Během práce jsem získal cenné zkušenosti s:

  • Návrhem vlastní elektronické konstrukce.
  • Pokročilým programováním v C++ (práce s časováním a poli).
  • Řešením problémů v reálném čase (např. ošetření tlačítka).

Zdroje (ctrl+kliknutí pro otevření odkazu):

wikipedia.org

roboticsbackend.com/arduino-push-button-tutorial/

projecthub.arduino.cc/led-chaser-using-arduino

github.com/johnrickman/LiquidCrystal_I2C

Kód a 3D model na zkopírování:

github.com/FudgeCZ/led-pyramid

Po otevření odkazu se objeví soubor LED_pyramida.ino, kde je vidět kód

Soubory display-holder f3d a stl jsou 3D modely (f3d - soubor pro Autodesk Fusion pro upravení modelu; stl - soubor pro vytištění)

About

Repository for a year project in my school. LED pyramid with Arduino nano and lcd screen shows some cool animations thanks to the LED pyramid

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages