MAX7219 matrix module

Тема в разделе "Arduino & Shields", создана пользователем Citrus, 29 янв 2013.

  1. Citrus

    Citrus Нерд

    Вот прикупил у братцев наших... китайцев вот такую штуку...
    пришел мне конструктор =) пришлось доставать с полки паяльную станцию (опыт то не пропьешь;) )
    вот даташит на MAX7219
    Чувствую будет у меня много вопросов с адресами
    Кроме демо надыбал вот этот код
    Код (Text):
    #include "LedControl.h" //  нужна данная библиотека

    LedControl lc=LedControl(12,11,10); // подключенные пины
    // pin 12 подключен к DIN
    // pin 11 подключен CLK
    // pin 10 подключен CS

    void setup()
    {
    // the zero refers to the MAX7219 number, it is zero for 1 chip
    lc.shutdown(0,false);// выключите энергосбережения, вкл. дисплей
    lc.setIntensity(0,1);// Устанавливаем яркость (0~15 возможные значения)
    lc.clearDisplay(0);// очистить экран
    }
    void loop()
    {
    for (int row=0; row<8; row++)
    {
    for (int col=0; col<8; col++)
    {
    lc.setLed(0,col,row,true); // включается светодиод столбец, строка
    delay(10);
    lc.setLed(0,col,row,false); // выключается светодиод столбец, строка
    delay(10);
    }
    }
    }
    Ждите скоро будет много вопросов =)))))
     

    Вложения:

  2. Citrus

    Citrus Нерд

    Подскажите как это работает... как зажечь любую точку на этой матрице...
     
  3. Unixon

    Unixon Оракул Модератор

    Как работает схема или библиотека?
     
  4. Citrus

    Citrus Нерд

    Вот демо к max7219
    используется библиотека LedControl.h
     

    Вложения:

  5. Unixon

    Unixon Оракул Модератор

    Cirtus, у вас же все карты на руках. :)
    Уже разобрались?
     
  6. Citrus

    Citrus Нерд

    сижу втыкаю =)
     
  7. tarakan

    tarakan Нуб

    У меня та же проблема. Как успехи?
     
  8. zsm

    zsm Гик

    Есть такой тестовый скетч ещё.

    Код (Text):
    unsigned char i;
    unsigned char j;
    /*Port Definitions*/
    int Max7219_pinCLK = 11;
    int Max7219_pinCS = 10;
    int Max7219_pinDIN = 12;
    unsigned char disp1[38][8]={
    {0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0
    {0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10},//1
    {0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2
    {0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3
    {0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4
    {0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
    {0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6
    {0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7
    {0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8
    {0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9
    {0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A
    {0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B
    {0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C
    {0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D
    {0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E
    {0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40},//F
    {0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C},//G
    {0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44},//H
    {0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C},//I
    {0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30},//J
    {0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24},//K
    {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C},//L
    {0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81},//M
    {0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0},//N
    {0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O
    {0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20},//P
    {0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D},//Q
    {0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21},//R
    {0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S
    {0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T
    {0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C},//U
    {0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18},//V
    {0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0},//W
    {0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41},//X
    {0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},//Y
    {0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},//Z
    };
    void Write_Max7219_byte(unsigned char DATA)
    {
                unsigned char i;
            digitalWrite(Max7219_pinCS,LOW);      
            for(i=8;i>=1;i--)
              {        
                digitalWrite(Max7219_pinCLK,LOW);
                digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data
                DATA = DATA<<1;
                digitalWrite(Max7219_pinCLK,HIGH);
              }                              
    }
    void Write_Max7219(unsigned char address,unsigned char dat)
    {
            digitalWrite(Max7219_pinCS,LOW);
            Write_Max7219_byte(address);          //address,code of LED
            Write_Max7219_byte(dat);              //data,figure on LED
            digitalWrite(Max7219_pinCS,HIGH);
    }
    void Init_MAX7219(void)
    {
    Write_Max7219(0x09, 0x00);      //decoding :BCD
    Write_Max7219(0x0a, 0x03);      //brightness
    Write_Max7219(0x0b, 0x07);      //scanlimit;8 LEDs
    Write_Max7219(0x0c, 0x01);      //power-down mode:0,normal mode:1
    Write_Max7219(0x0f, 0x00);      //test display:1;EOT,display:0
    }
    void setup()
    {
      pinMode(Max7219_pinCLK,OUTPUT);
      pinMode(Max7219_pinCS,OUTPUT);
      pinMode(Max7219_pinDIN,OUTPUT);
      delay(50);
      Init_MAX7219();
    }
    void loop()
    {
      for(j=0;j<38;j++)
      {
      for(i=1;i<9;i++)
        Write_Max7219(i,disp1[j][i-1]);
      delay(500);
      }      
    }
     
  9. zsm

    zsm Гик

    вот бегущая строка ещё , если кому надо :)

    Код (Text):
    //We always have to include the library
    #include "LedControl.h"

    //pin 12 is connected to the DataIn
    //pin 11 is connected to the CLK
    //pin 10 is connected to LOAD

    //LedControl(int dataPin, int clkPin, int csPin, int numDevices);
    LedControl lc=LedControl(12,11,10,1);

    void setup() {
      //The MAX72XX is in power-saving mode on startup, we have to do a wakeup call
      lc.shutdown(0,false);
      //Set the brightness to a medium values (0~15 possible values)
      lc.setIntensity(0,2);
      //and clear the display
      lc.clearDisplay(0);
    }

    #define SP {0, 0, 0, 0, 0}              //Espacio
    #define EX {0, 125, 0, 0, 0}            //Exclamacion !
    #define A {31, 36, 68, 36, 31}
    #define B {127, 73, 73, 73, 54,}
    #define C {62, 65, 65, 65, 34}
    #define D {127, 65, 65, 34, 28}
    #define E {127, 73, 73, 65, 65}
    #define F {127, 72, 72, 72, 64}
    #define G {62, 65, 65, 69, 38}
    #define H {127, 8, 8, 8, 127}
    #define I {0, 65, 127, 65, 0}
    #define J {2, 1, 1, 1, 126}
    #define K {127, 8, 20, 34, 65}
    #define L {127, 1, 1, 1, 1}
    #define M {127, 32, 16, 32, 127}
    #define N {127, 32, 16, 8, 127}
    #define O {62, 65, 65, 65, 62}
    #define P {127, 72, 72, 72, 48}
    #define Q {62, 65, 69, 66, 61}
    #define R {127, 72, 76, 74, 49}
    #define S {50, 73, 73, 73, 38}
    #define T {64, 64, 127, 64, 64}
    #define U {126, 1, 1, 1, 126}
    #define V {124, 2, 1, 2, 124}
    #define W {126, 1, 6, 1, 126}
    #define X {99, 20, 8, 20, 99}
    #define Y {96, 16, 15, 16, 96}
    #define Z {67, 69, 73, 81, 97}

    //Escribimos la frase separando cada letra por comas
    //En el primer numero lo adaptaremos la longitud de la frase (caracteres)
    byte frase[5][5]={H,O,L,A,SP};
    int largo = sizeof(frase)/5;
    int gnd[18]={-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};

    void loop() {

      for (int letra=0; letra<largo; letra++){
        for (int desplaza = 18; desplaza>=5; desplaza--) {
          for (int i=0; i<5; i++){
            lc.setRow(0,gnd[i+desplaza-5],frase[letra][i]);
          }
        delay(100); // speed of animation
        lc.clearDisplay(0);
        }
        if(letra == largo){
        letra = 0;}
      }//end for letra

    }
     
    Последнее редактирование: 16 мар 2014