нет реакции от max7219

naviantropos
Offline
Зарегистрирован: 06.07.2017

подключаю Arduino Uno micro-usb к max7219 к двум четырехразрядным индикаторам. подключение проверял; менял чип на запасной; писал скетчи в arduino ide с использованием стандартной библиотеки spi, с использованием библиотеки ledcontrol; но нет реакции, а точнее в любом случае горят все сегменты. help)

bizzon
Offline
Зарегистрирован: 29.03.2016

Неправильно подключил

 

naviantropos
Offline
Зарегистрирован: 06.07.2017

для индикаторов SMA410364 нет  даташита( но вроде они все подобные.. а так больше и проверять негде( 

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

Что значит "подобные"? Возьмите мультиметр и нарисуйте распиновку. Если не увидите проблемы, давайте сюда схему подключения и скетч.

naviantropos
Offline
Зарегистрирован: 06.07.2017

подобные другим 4разрядным индикаторам. 

naviantropos
Offline
Зарегистрирован: 06.07.2017

naviantropos
Offline
Зарегистрирован: 06.07.2017
#include <SPI.h>

// What pin on the Arduino connects to the LOAD/CS pin on the MAX7219/MAX7221
#define LOAD_PIN 10

/**
 * Transfers data to a MAX7219/MAX7221 register.
 * 
 * @param address The register to load data into
 * @param value   Value to store in the register
 */
void maxTransfer(uint8_t address, uint8_t value) {

  // Ensure LOAD/CS is LOW
  digitalWrite(LOAD_PIN, LOW);

  // Send the register address
  SPI.transfer(address);

  // Send the value
  SPI.transfer(value);

  // Tell chip to load in data
  digitalWrite(LOAD_PIN, HIGH);
}
  

void setup() {
  
  // Set load pin to output
  pinMode(LOAD_PIN, OUTPUT);

  // Reverse the SPI transfer to send the MSB first  
  SPI.setBitOrder(MSBFIRST);
  
  // Start SPI
  SPI.begin();

  // Run test
  // All LED segments should light up
  maxTransfer(0x0F, 0x01);
  delay(1000);
  maxTransfer(0x0F, 0x00);
  
  // Enable mode B
  maxTransfer(0x09, 0xFF);
  
  // Use lowest intensity
  maxTransfer(0x0A, 0x00);
  
  // Only scan one digit
  maxTransfer(0x0B, 0x00);
  
  // Turn on chip
  maxTransfer(0x0C, 0x01);
  
  
  
}

void loop() {
  
  // Loop through each code
  for (uint8_t i = 0; i < 0x10; ++i)
  {
    maxTransfer(0x01, i);
    delay(500);
  }
  
}

 

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

naviantropos пишет:

подобные другим 4разрядным индикаторам. 

Они все разные. Вы вызвонили свой мультиметром или нет? Можете просто безо всяких ваших ардуин и максов зажечь нужный Вам светодиод просто проводком, батарейкой и резистором? Если не можете, то говорить не о чем, сначала прозвоните распиновку.

naviantropos
Offline
Зарегистрирован: 06.07.2017

В общем, оказалось, что распиновка моего индикатора SMA410364 с общим анодом. думаю как теперь изменить схему подключения

naviantropos
Offline
Зарегистрирован: 06.07.2017

sma410364

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

Ну, вот, видите, о чём я Вам уж второй день и говорю. Всегда надо начинать с прозвонки и точной распиновки.

naviantropos
Offline
Зарегистрирован: 06.07.2017

Учту. Есть мысли как выходить из положения?)

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

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

naviantropos
Offline
Зарегистрирован: 06.07.2017

Забыл сказать - спасибо Вам.