Arduino Mega y Display 8 x 7 segmentos


Finalmente estoy encontrando la solución para comandar el display.

El link a DX del Display.

Pensé que sería algo mas fácil, y aún no lo tengo al 100%.


El pinout, usé la interfaz ICSP :
1 negro a 6 RCK
2 azul a NADA
3 blanco a SCK
4 gris a DID
6 violet a GND
Un punto importante es que no conecté el pin de voltaje


Mi código ejemplo es este.


#include
const byte LATCH = 51;

void setup ()
{
digitalWrite(SS, HIGH);
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}


void loop ()
{
unsigned int pattern;

// 1 PUNTO
// 2 cen
// 3 arr izq
// 4 aba izq
// 5 aba
// 6 aba der
// 7 arr der
// 8 arr

digitalWrite (LATCH, LOW);
SPI.transfer (B11111111); // TODO ON
SPI.transfer (B00000000); // 8 y punto ENCENDIDO
digitalWrite (LATCH, HIGH);
delay(300);

digitalWrite (LATCH, LOW);
SPI.transfer (B11111111); // TODO ON
SPI.transfer (B11111000); // siete
digitalWrite (LATCH, HIGH);
delay(300);

digitalWrite (LATCH, LOW);
SPI.transfer (B10000100); // 3 y ultimo
SPI.transfer (B10000000); // 8
// SPI.transfer (B00000010); // decenas
// SPI.transfer (B11111000); // 7
// SPI.transfer (B00000001); // unidades
// SPI.transfer (B11111001); // 1
digitalWrite (LATCH, HIGH);
delay(1000);


digitalWrite (LATCH, LOW);
SPI.transfer (B10101010); // en 1 3 5 7
SPI.transfer (B00000000); // 8chos
digitalWrite (LATCH, HIGH);
delay(300);

digitalWrite (LATCH, LOW);
SPI.transfer (B10000000); // 8vo segment
SPI.transfer (B11111001); // un uno
digitalWrite (LATCH, HIGH);
delay(300);


digitalWrite (LATCH, LOW);
SPI.transfer (B01000000); // 7mo segment
SPI.transfer (B10100100); // un DOS
digitalWrite (LATCH, HIGH);
delay(300);


// un 8 en el 8vo display
digitalWrite (LATCH, LOW);
SPI.transfer (B10000000);
SPI.transfer (B10000000);
digitalWrite (LATCH, HIGH);
delay(300);



// 9 y punto
digitalWrite (LATCH, LOW);
SPI.transfer (highByte(0x10));
SPI.transfer (lowByte (0x10));
digitalWrite (LATCH, HIGH);
delay(300);

// CERO y punto
digitalWrite (LATCH, LOW);
SPI.transfer (highByte(0x40));
SPI.transfer (lowByte (0x40));
delay(300);
digitalWrite (LATCH, HIGH);

// letra o minuscula
digitalWrite (LATCH, LOW);
SPI.transfer (highByte(0x23));
SPI.transfer (lowByte (0x23));
delay(300);
digitalWrite (LATCH, HIGH);

digitalWrite (LATCH, LOW);
SPI.transfer (highByte(0xF));
SPI.transfer (lowByte (0xF));
delay(300);
digitalWrite (LATCH, HIGH);

digitalWrite (LATCH, LOW);
SPI.transfer (highByte(0xA));
SPI.transfer (lowByte (0xA));
delay(300);
digitalWrite (LATCH, HIGH);

delay(1000);
}


Comentarios

Entradas populares