• English
  • logo

    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.

     

    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

  • Copyright © 2025 BEERDUINO