LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: Bernardo Lucas em 21 de Dezembro de 2014, 23:58

Título: Arduino e max7219
Enviado por: Bernardo Lucas em 21 de Dezembro de 2014, 23:58
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...
Código: [Seleccione]
#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() {
}
Título: Re: Arduino e max7219
Enviado por: senso em 22 de Dezembro 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).
Título: Re: Arduino e max7219
Enviado por: Bernardo Lucas em 22 de Dezembro de 2014, 00:18
Ok, já agora eu não tenho as bibliotecas sprite nem matrix no arduino, como as adiciono?
Título: Re: Arduino e max7219
Enviado por: Bernardo Lucas em 22 de Dezembro de 2014, 00:37
Já consegui adicionar as bibliotecas.
Nesta função:
Código: [Seleccione]
myLeds.write(0, 0, letter_L);O que significa cada um dos três parametros dentro dos parentese?
Título: Re: Arduino e max7219
Enviado por: thx1011 em 23 de Dezembro de 2014, 16:19
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.
Título: Re: Arduino e max7219
Enviado por: thx1011 em 23 de Dezembro de 2014, 16:27
Já consegui adicionar as bibliotecas.
Nesta função:
Código: [Seleccione]
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.

Código: [Seleccione]
#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);
 
}
Título: Re: Arduino e max7219
Enviado por: Bernardo Lucas em 25 de Dezembro de 2014, 01:03
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(....)?
Título: Re: Arduino e max7219
Enviado por: Kristey em 25 de Dezembro de 2014, 16:21
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.