Paso 3: La interfaz de microcontrolador
No usar los valores de condensador apropiado cuando la chaqueta. No quería ningún electrolíticos en la mezcla. El 6952 es un chip bastante resistente y ha defendido bastante bien a mi abuso.
Estoy proporcionando energía para el boarduino directamente con la fuente de alimentación de 4AA y luego que la max6952 a 5v.
Y aquí es algún código de ejemplo para interfaces de boarduino con el max6952:
Código de ejemplo de 6952 Max para Arduino
Probado en Boarduino
Matt Joyce @ NYC Resistor
#define correrá 11 / / MOSI
#define DATAIN 12 / / MISO - no se utiliza, pero parte de builtin SPI
#define SPICLOCK 13 / / sck
#define SLAVESELECT 10 / / ss
char spi_transfer (datos char volátiles)
{
SPDR = datos;
Iniciar la transmisión
mientras (! () SPSR & (1 << SPIF))) / / espera el final de la transmisión
{
};
volver SPDR; volver el byte recibido
}
void setup()
{
byte me;
clr bytes;
pinMode (correrá, salida);
pinMode (DATAIN, entrada);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
digitalWrite(SLAVESELECT,HIGH); desactivar dispositivo
SPCR = 01010000
interrupción deshabilitada, spi habilitado, msb 1, master, clk baja en reposo,
muestra en el borde de ataque de clk, sistema reloj/4 (más rápido)
SPCR = 0b01010010;
CLR = SPDR;
Delay(32);
Configurar el registro
write_led_twice(0x04,0x01);
Intensidad panel 1 y panel 2
write_led_twice(0x01,0xFF);
write_led_twice(0x02,0xFF);
Análisis límite
write_led_twice(0x03,0x01);
}
byte write_led (int direccion, int valor)
{
digitalWrite(SLAVESELECT,LOW);
operación de 2 bytes
spi_transfer(Address);
spi_transfer(Value);
Delay(36);
digitalWrite(SLAVESELECT,HIGH); liberar chip, señal de transferencia final
}
Escribir números veces n Margarita de chips.
byte write_led_twice (int direccion, int valor)
{
digitalWrite(SLAVESELECT,LOW);
operación de 2 bytes
spi_transfer(Address);
spi_transfer(Value);
spi_transfer(Address);
spi_transfer(Value);
Delay(36);
digitalWrite(SLAVESELECT,HIGH); liberar chip, señal de transferencia final
}
void loop()
{
Ensayo conjunto de caracteres de la ROM
write_led_twice(0x20,0x5e);
write_led_twice(0x21,0x5e);
write_led_twice(0x22,0x5e);
write_led_twice(0x23,0x5e);
Delay(4000);
Pruebas programables RAM espacio
write_led_twice(0x05,0x80);
write_led_twice(0x05,0x42);
write_led_twice(0x05,0x61);
write_led_twice(0x05,0x51);
write_led_twice(0x05,0x49);
write_led_twice(0x05,0x46);
write_led_twice(0x20,0x80);
write_led_twice(0x21,0x80);
write_led_twice(0x22,0x80);
write_led_twice(0x23,0x80);
Delay(4000);
Gred prueba registro de llamada
write_led_twice(0x07,0x01);
Delay(1000);
Desactivar registro de prueba
write_led_twice(0x07,0x00);
}