Jste zde

LED driver s MAX7221

Popis

LED driver modul, kterým lze ovládat např. dva sedmi segmentové displeje. Modul je navrhnut v SMD variantě.

Desky se dají spojit za sebe a tím připojit na stejné piny více LED.

Návrh vytvořen v programu Fritzing.
Deska vytvořena u firmy Elecrow.

 

Obvod

 

Příklad kódu
V tomto příkladu je využita knihovna LedControl a ParseNumber.

#include "LedControl.h"
#include "ParseNumber.h"
 
// Pin 12 to Data In, 11 to Clk, 10 to LOAD, number of devices is 2
LedControl lc = LedControl(12, 11, 10, 2);
 
/* 4 digits parser */
ParseNumber parser = ParseNumber (4);
 
void setup() {
  // Initialize the 2 MAX7219 devices
  for (int k = 0; k < 2; k++) {
    lc.shutdown(k, false); // Enable display
    lc.setIntensity(k, 15); // Set brightness level (0 is min, 15 is max)
    lc.clearDisplay(k);    // Clear display register
  }
}
void loop() {
  parser.parseInt(-5);
  setDisplay (0, parser.getData(), parser.getDataSize(), parser.getDecimalPointIndex());
 
  parser.setStringTrimRight(false);
  parser.parseString("abcde", false);
  parser.setStringTrimRight(true);
  setDisplay (1, parser.getData(), parser.getDataSize(), parser.getDecimalPointIndex());
 
 
  parser.setShowTrailingZeroes(true);
  parser.parseFloat(-2.3);
  setDisplay (2, parser.getData(), parser.getDataSize(), parser.getDecimalPointIndex());
 
  parser.setShowTrailingZeroes(false);
  parser.parseFloat(5647);
  setDisplay (3, parser.getData(), parser.getDataSize(), parser.getDecimalPointIndex());
}
 
void setDisplay (uint8_t display, byte *data, uint8_t dataSize, uint8_t decimalPointIndex) {
  uint8_t addr = display / 2;
  for (uint8_t i = 0; i < dataSize; i++) {
    /* first index of display in MAX */
    uint8_t di = ((display % 2 == 0) ? 4 : 0);
 
    if (data[i] >= '0' && data[i] <= '9') {
      /* set digit */
      lc.setDigit(addr, di + i, data[i] - '0', (decimalPointIndex == i));
    } else if (data[i] == 0) {
      lc.setChar(addr, di + i, ' ', false);
    } else {
      lc.setChar(addr, di + i, data[i], false);
    }
  }
}
Soubory: