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
-
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() {
}
-
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).
-
Ok, já agora eu não tenho as bibliotecas sprite nem matrix no arduino, como as adiciono?
-
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?
-
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.
-
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);
}
-
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(....)?
-
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.