MAX7219

Дим
Offline
Зарегистрирован: 05.05.2017

Здравствуйте, купил 5 штук max7219. Собрал для проверки - ни один не заработал.

 

int dataInPin = 4;
int loadPin = 6;
int clockPin = 5;

int maxInUse = 4;    //here you have to change this varialbe to how many max 7219 you want to use

 // define max7219 registers
byte max7219_reg_noop        = 0x00;
byte max7219_reg_digit0      = 0x01;
byte max7219_reg_digit1      = 0x02;
byte max7219_reg_digit2      = 0x03;
byte max7219_reg_digit3      = 0x04;
byte max7219_reg_digit4      = 0x05;
byte max7219_reg_digit5      = 0x06;
byte max7219_reg_digit6      = 0x08;
byte max7219_reg_digit7      = 0x01;
byte max7219_reg_decodeMode  = 0x09;
byte max7219_reg_intensity   = 0x0a;
byte max7219_reg_scanLimit   = 0x0b;
byte max7219_reg_shutdown    = 0x0c;
byte max7219_reg_displayTest = 0x0f;

int counter = 0;

void putByte(byte data) 
{
     byte i = 8;
     byte mask;
     while(i > 0) 
     {
         mask = 0x01 << (i - 1);  // get bitmask
         digitalWrite(clockPin, LOW);   // tick
         
         if (data & mask) // choose bit
         {        
             digitalWrite(dataInPin, HIGH); // send 1
         }
         else
         {
             digitalWrite(dataInPin, LOW);  // send 0
         }
         digitalWrite(clockPin, HIGH);  // tock
         --i;                     // move to lesser bit
     }
}

void maxPut (byte reg, byte col)    // use this
{ 
    putByte(reg);  // specify register
    putByte(col);//((data & 0x01) * 256) + data >> 1); // put data
}

void maxIni (byte reg, byte col) // put the initialisation to all the max 7219 in the system
{    
     int c = 0;
     digitalWrite(loadPin, HIGH);
     for (c = 1; c <= maxInUse; c++) 
     {
         maxPut(reg, col);   // use all 8 columns
     }
     digitalWrite(loadPin, LOW);
     digitalWrite(loadPin, HIGH);
}

void setup () 
{
     pinMode(dataInPin, OUTPUT);
     pinMode(clockPin,  OUTPUT);
     pinMode(loadPin,   OUTPUT);
     
     Serial.begin(9600);
     
     maxIni(max7219_reg_scanLimit, 0x07);      
     maxIni(max7219_reg_decodeMode, 0x00);  // using an led matrix (not digits)
     maxIni(max7219_reg_shutdown, 0x01);    // not in shutdown mode
     maxIni(max7219_reg_displayTest, 0x00); // no display test
     for (int i=1; i <= 8; i++) // empty registers, turn all LEDs off
     {    
         maxIni(i,0);
     }
     maxIni(max7219_reg_intensity, 0x0f & 0x0f);    // the first 0x0f is the value you can set
}
 
void loop () 
{
    int i = 0;
     for (i=1; i<=8; i++) 
     {
           digitalWrite(loadPin,HIGH);
           maxPut(i, counter);
           digitalWrite(loadPin, LOW);
           digitalWrite(loadPin,HIGH);
     }
     Serial.print("counter: ");
     Serial.print(counter++);
     Serial.println();
 
     delay(500);
     
     for (i=1; i<=8; i++) // a longer way to clean the dispaly
     {    
           digitalWrite(loadPin,HIGH);
           maxPut(i, 0);
           digitalWrite(loadPin, LOW);
           digitalWrite(loadPin,HIGH);
     }
}

неужели все брак

Plasteroid
Plasteroid аватар
Offline
Зарегистрирован: 15.07.2020

Ну , судя по схеме , вы не подключили питание к МАХ7219 от Ардуино

Дим
Offline
Зарегистрирован: 05.05.2017

есть питание, схему взял с другого сайта

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот ты тогда на другом сайте и спрашивай

svm
Offline
Зарегистрирован: 06.11.2016

Дим пишет:

есть питание, схему взял с другого сайта

А скетч взял для МАХ 7221, чё старье за 19 год использовать, 21 й уже на носу.:))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дим пишет:

есть питание, схему взял с другого сайта

Тваюшдивизию! Второй за одно утро!

Вы сами-то себя слышите? Люди, стараясь Вам помочь, тратят своё время на то, чтобы разобраться в схеме, которая не имеет отношения к Вашей проблеме - а просто картинка с другого сайта! Сами-то подумайте (если есть чем), дохера они Вам напомогают, не видя как на самом деле у Вас всё сделано?

Решение Вашей проблемы читайте здесь (там, правда, нет никакого решения, ссылку я "взял с другого сайта").

Дим
Offline
Зарегистрирован: 05.05.2017

Спасибо что не ударили "помощники". Накинулись как петухи. Не вникнув в суть вопроса. Если картинка взята с другого сайта - это ни чего не значит. Ну нарисую я свою и что измениться.  ЕвгенийП иди сам туда.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим пишет:

Если картинка взята с другого сайта - это ни чего не значит. Ну нарисую я свою и что измениться.

Вообще-то, значит, что Вам лень как следует оформить вопрос. Тогда почему нам должно быть не лень на него отвечать.

А по поводу той схемы, что Вы разместили - в ней обнаружена ошибка, не позволяющая ей работать. Если эта картинка полностью соответствует тому, что у Вас собрано - значит, Вам помогли - указали на ошибку. А если не соответствует, то это полное пренебрежение к тем, кому Вы задаете свои вопросы, так что возмущение Евгения вполне обосновано.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дим пишет:

Если картинка взята с другого сайта - это ни чего не значит. 

А вот то, что на ней нарисовано не то, что у Вас на самом деле собрано (например, нет питания) - это уже значит.

Дим пишет:

Ну нарисую я свою и что измениться.

Ничего. Как и от того, что я удалю эту тему ввиду неадекватности автора.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

 я удалю эту тему ввиду неадекватности автора.

а я помогу, если тебя Петрович вдруг пожалеет

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Дим пишет:

есть питание, схему взял с другого сайта

Что даже в мозгу не стрельнуло, что для того, что бы помочь ВАМ , нужна ВАША схема ?
Мы же не "другому сайту помогаем"....