collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino e max7219  (Lida 3514 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Arduino e max7219
« 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() {
}

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino e max7219
« Responder #1 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).
Avr fanboy

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Arduino e max7219
« Responder #2 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?

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Arduino e max7219
« Responder #3 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?

Offline thx1011

  • Mini Robot
  • *
  • Mensagens: 80
Re: Arduino e max7219
« Responder #4 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.

Offline thx1011

  • Mini Robot
  • *
  • Mensagens: 80
Re: Arduino e max7219
« Responder #5 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);
 
}

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Arduino e max7219
« Responder #6 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(....)?

Offline Kristey

  • Mini Robot
  • *
  • Mensagens: 783
Re: Arduino e max7219
« Responder #7 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.