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); } } }