0

Arduino pohybující se LED světlo – Knight Rider

Jedná se o jednoduchý Arduino projekt pro začátečníky, který bliká čtyřmi LED diodami v různých vzorech. Vzory pak mohou být změněny přímo v programu pomocí Arduino IDE. Prodleva mezi blikáním jednotlivých LED diod a proměnou vzorů může být také změněna v programu.

Pro vytvoření tohoto projektu je nutné propojit Arduino Uno (nebo jinou dostupnou) desku s čtyřmi LED diodami a čtyřmi odpory pro omezení proudu LED diodami.

Video níže znázorňuje výsledek projektu:

Sestavení projektu:

K sestavení potřebujeme zmíněné čtyři LED diody společně s rezistory. V tomto projektu jsou použity odpory 470 ohmů, ale je nutné vždy použít vhodný odpor pro použité LED diody, většinou v rozmezí 220 až 470 ohmů. LED diody jsou červené o velikosti 3 mm, ale je na vás, jakou barvu a velikost použijete.

Pro zapojení můžete použít nepájivé pole a zapojit celý projekt podle obrázků níže.

Moving Light Display Arduino Project for beginners breadboard layout

Moving Light Display Arduino Project Circuit Diagram

Ukázkový program

Po sestavení zapojení zkopírujte přiložený ukázkový program a nahrajte ho pomocí Arduino IDE do vaší Arduino desky. Po úspěšném nahrání byste měli pozorovat na LED diodách různé vzory blikání.

//---------------------------------------------------------------------
//  Program:      moving_light_display
//
//  Description:  Flashes four LEDs connected to Arduino pins 2 to 5 
//                in various patterns
//
//  Date:         4 April 2016      Author: W.A. Smith
//                http://startingelectronics.org
//---------------------------------------------------------------------
// change speed of pattern change in milliseconds here
#define SPEED_MS  300

// change LED patterns here
unsigned char led_pattern[] = {
  0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01, 0x00,
  0x06, 0x09, 0x06, 0x09, 0x06, 0x09, 0x06, 0x09,
  0x05, 0x0a, 0x05, 0x0a, 0x05, 0x0a, 0x05, 0x0a
};

void setup() {
  // set pin 2 to 5 as outputs
  for (int i = 2; i <= 5; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  DisplayPattern(led_pattern, sizeof(led_pattern));
  delay(SPEED_MS);
}

void DisplayPattern(unsigned char *pattern, int num_patterns)
{
  static int pattern_num = 0; // keeps count of patterns
  unsigned char mask = 1;     // for testing each bit in pattern

  // do for LEDs on pin 2 to pin 5
  for (int i = 2; i <= 5; i++) {
    // check if bit in pattern is set or not and switch LED accordingly
    if (pattern[pattern_num] & mask) {
      digitalWrite(i, HIGH);
    }
    else {
      digitalWrite(i, LOW);
    }
    mask <<= 1;   // adjust mask for checking next bit in pattern
  }
  pattern_num++;  // move to next pattern for next function call
  // keep pattern within limits of pattern array
  if (pattern_num >= num_patterns) {
    pattern_num = 0;
  }
}

Změna rychlosti proměny vzorů

Pro změnu rychlosti, kterou se proměňují napsané vzory, stačí změnit číslo u proměnné „SPEED_MS“, viz. kód níže.

// change speed of pattern change in milliseconds here
#define SPEED_MS  300

Na začátku je nastavena tato rychlost na 300 milisekund, tedy po každých 0,3 vteřině dojde ke změně daného vzoru. Pokud toto číslo zmenšíme, bude změna vzoru probíhat rychleji. Naopak pokud toto číslo zvětšíme, budou pauzy mezi vzory delší.

Změna vzorů svícení LED diod

Pro změnu použitých vzorů LED diod je nutné změnit obsah proměnné v ukázce níže. V této proměnné můžeme vzory jak měnit, tak i přidávat nové, přičemž kód pružně reaguje na počet vzorů a my tedy nemusíme už jinde měnit program.

// change LED patterns here
unsigned char led_pattern[] = {
  0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01, 0x00,
  0x06, 0x09, 0x06, 0x09, 0x06, 0x09, 0x06, 0x09,
  0x05, 0x0a, 0x05, 0x0a, 0x05, 0x0a, 0x05, 0x0a
};

Zadané vzory jsou ve tvaru hexadecimálních čísel, kdy na čtyřech LED diodách můžeme dosáhnout 16 kombinací. V tabulce níže si můžete prohlédnout všechny možné vzory, kterých můžeme dosáhnout společně s jejich hexa tvarem.

LED hexadecimal number patterns

Převzato a přeloženo: https://startingelectronics.org/beginners/arduino-projects-for-beginners/moving-light-display/

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Luboš

Napsat komentář

Vaše emailová adresa nebude zveřejněna.