DigiSpark (Arduino) és 8×8-as LED matrix

Utoljára középiskolában volt lehetőségem arra, hogy mikrovezérlőkkel játszadozzak. Szerencsére az évek alatt nagyon sok megoldás jött ki, szemtelenül olcsón, így most már mindenki hozzájuthat egyhez és minimális programozási ismerettel is működésre bírhatja kis kütyüjét.

Egy korábbi projekthez vásároltam DigiSpark-ot, ami igazán jó és olcsó kis játékszer. Ugyanettől a cégtől van Oak-om is, ami sajnos nem lett a kedvencem, mert hozzáláncolták a Particle.io felhőhöz. Az Oak sokkal tetszetősebb, mert eleve rendelkezik WiFi-vel, több rajta a kidrótozott I/O, viszont jelen pillanatban még beüzemelni sem lehet particle.io-s hozzáférés nélkül (jó, van soros hackelés hozzá, de fejleszteni rá nem lehet lokálisan). A DigiSpark elérhető eBay-en is (opensource hardware, szal’ bárki készíthet egyet magának), szemtelenül olcsón. Hátránya, hogy csak 5 I/O csatlakozója van, és 3 csatlakozó van elkülönítve tápfeszültség célokra ( Vin, GND, 5V). USB-ről programozható, így nem kell soros-USB átalakító, viszont sajnos az USB csatlakozója csak USB HID kompatibilis eszközök működtetésére használható, soros kommunikációra nem (pedig jó lett volna a Mikrotik LCD projekthez).

PHOTO_20160807_135851_650px

Ami tetszik pl. az Uno-val szemben, hogy a kód sokkal gyorsabban fordul rá és gyorsabban fel is töltődik. Gondoltam túrok kicsit az Arduino-s dobozomban és lefoglalom magam kicsit egy értelmetlen hobbiprojekttel.

Én az a fajta kocka vagyok, aki nem tart több ezer oldalas dokumentációkat a különféle API-król, parancs referenciákról. Szeretem megérteni, hogy mi, mitől működik. Ezért mintapéldákat szoktam elmenteni magamnak. Egyrészt a sikerélmény miatt könnyebben megjegyzem, mintha csak be kellene magolni, másrészt biztos lehetek benne, hogy működni fog később is. Továbbá ha szükségem van rá, csak Control C/V és kész.

Szal’ most egy könnyű projekt következik, Arduino-t kedvelő, de csóró kezdőknek 🙂

Knight Rider effekt és karakterek megjelenítése, 8×8-as (MAX 7219 LED meghajtós) LED matrixon.

A szükséges eszközök:

  • DigiSpark (igen, jól látod, 250Ft-ért is van már, ingyen szállítással – ami 3-4 hétig tart, szal’ érdemes sokat venni)
  • 8×8-as LED matrix, MAX7219-es LED meghajtóval
  • LEDcontrol lib, ami az Arduino szoftver Vázlat -> Könyvtár tartalmazása -> Könyvtárak kezelése -> Kereső: LEDcontrol segítségével telepíthetőArduino_LEDControl_lib

A bekötés:

A tápellátáshoz használjunk egy microUSB töltőt, vagy a számítógép USB portját. Függően attól, hogy a DigiSpark milyen USB csatlakozással érkezett (én a microUSB-set találtam meg először a “játszós” dobozban).

DigiSpark LED matrix
5V VCC
GND GND
P0 CS
P2 CLK
P4 DIN

Azért nem sorban használom a DigiSpark csatlakozóit, mert az én modellemnél a P1-re a beépített LED van kötve. Ez praktikus akkor, ha mondjuk gombot vagy kapcsolót akarunk használni, mert a LED-en látjuk az állapotát. Továbbá, mivel a csatlakozók osztva vannak az USB Rx/Tx-szel, érdemes először feltölteni a programot, majd utána összevezetékelni az alkatrészeket.


#include "LedControl.h"

LedControl lc=LedControl(4,2,0,1);
int brightness = 1;
int curPos = 0;
int dr = 1;

void setup() {
   lc.shutdown(0,false);
   lc.setIntensity(0,brightness);
   lc.clearDisplay(0);

   twelve();
}

void twelve() {
   byte tw[5]={B01000100,B11001010,B01000010,B01000100,B11101110};
   lc.setRow(0,0, tw[0]);
   lc.setRow(0,1, tw[1]);
   lc.setRow(0,2, tw[2]);
   lc.setRow(0,3, tw[3]);
   lc.setRow(0,4, tw[4]);
}

void knightrider() {
   lc.setLed(0,6,curPos, true);
   lc.setLed(0,7,curPos, true);
   delay(1000);
   lc.setLed(0,6,curPos, false);
   lc.setLed(0,7,curPos, false);

   if (dr == 1) {
      if ( curPos < 7) {
         curPos++;
      }
      else {
         dr = 0;
      }
   }
   else {
      if ( curPos > 0) {
         curPos--;
      }
      else {
         dr = 1;
      }
   }
}

void loop() {
   knightrider();
}