Go Down

Topic: Ajuda Arduino-UNO+MAX6953 (Read 1 time) previous topic - next topic

micheldubiani

Sep 14, 2011, 03:38 pm Last Edit: Sep 14, 2011, 07:29 pm by micheldubiani Reason: 1
Srs

Estou encontrando uma dificuldade em uma feature específica do MAX6953 em conjunto com o arduíno UNO.
eu somente consigo inserir o 1 caracter definido pelo usuário (RAM00) as outras posições de memória aparecem como "tudo 1", isto é acende todos os leds. Segue abaixo o código comentado que implementei:
Code: [Select]

#include <Wire.h>
void setup()
{
       pinMode(13, OUTPUT);
Serial.begin(9600);
      Wire.begin();
SCAN: do
{
Wire.beginTransmission(0x51); //envia dados ao dispositivo 1;
Wire.send(0x03); //Scan Limit;
Wire.send(0x00); //Usaremos displays 0 e 1;
ACK = Wire.endTransmission();
inc++;
       Serial.print(ACK);
       Serial.print(inc);
       }
while ((ACK>1) && (inc<=3));
       inc=0;
         
INTENSITY:do
{
Wire.beginTransmission(0x51); //envia dados ao dispositivo 1;
Wire.send(0x01); //INTENSITY;
Wire.send(0xFF); //Intensidade máxima;
ACK = Wire.endTransmission();
inc++;
       Serial.print(ACK);
       }
while ((ACK>1) || (inc<=3));
inc = 0;

CONFIG: do
{
Wire.beginTransmission(0x51);
Wire.send(0x04); //Setup de configuração
Wire.send(0x13); //Shutdown - Dis, Sincroniza o "piscar" dos leds com o ACK da Interface I2C;
ACK = Wire.endTransmission();
inc++;
}
       while ((ACK>1) || (inc<=3));
inc = 0;

RAM00: do
{
Wire.beginTransmission(0x51);
Wire.send(0x05);
Wire.send(0x85);  //Registrador RAM01 - user-defined character
Wire.send(0x01);  //1 linha, 1ºled
       Wire.send(0x01);  //2 linha, 1ºled
       Wire.send(0x00);  //3 linha, apagada
       Wire.send(0x00);  //4 linha, apagada
       Wire.send(0x00);  //5 linha, apagada
    ACK = Wire.endTransmission();
inc++;
}
       while ((ACK>1) || (inc<=3));
inc = 0;  
}

void loop()
{
do
{
Wire.beginTransmission(0x51);
Wire.send(0x21);
Wire.send(0x05);
ACK = Wire.endTransmission();
inc++;
}
       while ((ACK>1) || (inc<=3));
inc = 0;
delay(2000);
     
       do
{
Wire.beginTransmission(0x51);
Wire.send(0x21);
Wire.send(0x20);
ACK = Wire.endTransmission();
inc++;
       }
while ((ACK>1) || (inc<=3));
inc = 0;
       delay(2000);

}

trunet

ta difícil de ler o código...

da para editar o seu post e colocar as tags [ CODE ] e [ /CODE ] (retire o espaço nos colchetes) para facilitar a leitura?

micheldubiani


trunet

nunca usei este IC, mas achei este código no antigo fórum: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285387425. Veja se ajuda.

micheldubiani

esse código foi de grande ajuda no início dos meus trabalhos porém não insere caracteres nos registradores do MAX6953, usa somente os registros existentes.
Esse IC tem 24 registradores onde podemos inserir a forma que quisermos na matriz 5x7. Eu consigo inserir um caracter no primeiro mas quando vou ao próximo registro ele me apresenta tudo 1, testei no 2 e no 3 registradores.
agradeço a atenção de qualquer forma.

Go Up