• Welcome to LusoRobótica - Robótica em Português.
 

Arduino e max7219

Started by Bernardo Lucas, 21 de December de 2014, 23:58

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Bernardo Lucas

Queria fazer um projeto com a board max7219 e o arduino.
O que pretendia era fazer aparecer as letras umas a seguir ás outras. Já andei a pesquisar, mas não consgui perceber muito bem, como se programa o arduino com esta board. Poderiam ajudar-me?
Tenho assim este código que tirei de um site, dá me erra a compilar, mas poderiam explicar me mais ao menos como o código é programado...
#include <Sprite.h>  // Sprite before Matrix
#include <Matrix.h>

//                  DIN, CLK, LOAD, #chips
Matrix myLeds = Matrix(16, 17, 18, 3);

Sprite letter_L = Sprite(5, 8,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11111,
  B11111
);
Sprite letter_E = Sprite(5, 8,
  B11111,
  B11111,
  B11000,
  B11110,
  B11110,
  B11000,
  B11111,
  B11111
);
Sprite letter_D = Sprite(6, 8,
  B111100,
  B111110,
  B110111,
  B110011,
  B110011,
  B110111,
  B111110,
  B111100
);
Sprite letter_S = Sprite(5, 8,
  B01110,
  B11111,
  B11000,
  B11110,
  B01111,
  B00011,
  B11111,
  B01110
);

void setup() {
  myLeds.clear();
  myLeds.setBrightness(4);
  myLeds.write(0, 0, letter_L);
  myLeds.write(6, 0, letter_E);
  myLeds.write(12, 0, letter_D);
  myLeds.write(19, 0, letter_S);
}

void loop() {
}

senso

Datasheet está lá tudo, esse chip tem uma ROM com um mapa das letras, não existe ponta de necessidade de estar a ocupar ram com sprites(nome bonito para um mapa de caracteres, na realidade é mais que isso, mas nessa aplicação é só para isso que os estão a usar).
Avr fanboy

Bernardo Lucas

Ok, já agora eu não tenho as bibliotecas sprite nem matrix no arduino, como as adiciono?

Bernardo Lucas

Já consegui adicionar as bibliotecas.
Nesta função:
myLeds.write(0, 0, letter_L);
O que significa cada um dos três parametros dentro dos parentese?

thx1011

Quote from: senso on 22 de December de 2014, 00:13
Datasheet está lá tudo, esse chip tem uma ROM com um mapa das letras, não existe ponta de necessidade de estar a ocupar ram com sprites(nome bonito para um mapa de caracteres, na realidade é mais que isso, mas nessa aplicação é só para isso que os estão a usar).

Boas, deves estar a confundir com outro chip. O  max7219 não tem ROM com mapa de letras :) A única coisa que ele faz é o refresh sequencial dos pins de saída em função dos dados de entrada, mas tem de ser o utilizador/programador a definir o que quer que tem à saída.

thx1011

Quote from: Bernardo Lucas on 22 de December de 2014, 00:37
Já consegui adicionar as bibliotecas.
Nesta função:
myLeds.write(0, 0, letter_L);
O que significa cada um dos três parametros dentro dos parentese?

Acho que o código está feito para quatro max7219 ligados em sequencia, ou seja com quatro displays de matriz...
Adicionalmente tens o código todo no setup, e por isso no fim deves só ficar com a primeira letra digo eu.

Os parâmetros de entrada são X, Y e o valor a passar.

Vê lá se com este código funciona. Depois podes passar à frente.

#include "LedControl.h"


#include "LedControl.h" //  need the library
LedControl lc=LedControl(11,13,7,1); //

// pin 11 is connected to the MAX7219 pin 1
// pin 13 is connected to the CLK pin 13
// pin 7 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219



void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0,8);// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen
}

void loop() {
 
  int x;
  int y;
 
  int z;
 
  z = random(2);
 
  x= random(8);
 
  y= random(8);
 
  if ( z == 0 ) lc.setLed(0,y,x,true);
 
  if ( z == 1 ) lc.setLed(0,y,x,false);
 
}

Bernardo Lucas

Assim que puder experimento esse código. Mas para o codigo que eu tenho ele esta feito para 4 matrizes, mas posso altera-lo para apensa uma e usar de igual forma a função myled.write(....)?

Kristey

Os codigos nos sites deviam servir de exemplos para aprender a trabalhar com as bibliotecas.
E nao um Drag and Drop para o ide do Arduino.

Do que vi não parece ser complicado escreveres tu o codigo que precisas.
Como disse o senso tens tudo na datasheet.