LED-matris jacka (3 / 4 steg)
Steg 3: Gränssnittet mikrokontroller
Jag använder inte rätt kondensator värden när man bygger jackan. Jag ville inte någon electrolytics i mixen. 6952 är en ganska motståndskraftig chip och har stått upp ganska bra för mitt missbruk.
Jag är att ge makten till boarduino direkt med 4AA strömförsörjningen och sedan köra 5v till max6952.
Och här är några exempel på kod för gränsyta för boarduino med max6952:
Max 6952 exempelkod till Arduino
Testad på Boarduino
Matt Joyce @ NYC Resistor
#define DATAOUT 11 / / MOSI
#define DATAIN 12 / / MISO - inte används, men en del av inbyggda SPI
#define SPICLOCK 13 / / sck
#define SLAVESELECT 10 / / ss
char spi_transfer (flyktiga röding data)
{
SPDR = data;
Starta överföringen
medan (! () SPSR & (1 << SPIF))) / / Wait slutet av överföringen
{
};
returnera SPDR; returnera den mottagna byten
}
void setup()
{
byte i.
byte clr;
pinMode (DATAOUT, OUTPUT);
pinMode (DATAIN, indata);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
digitalWrite(SLAVESELECT,HIGH); Inaktivera enheten
SPCR = 01010000
avbryta inaktiverad, spi aktiverat, msb 1st, master, clk låg när sysslolös,
prov på framkanten av clk, system klocka/4 (snabbast)
SPCR = 0b01010010;
CLR = SPDR;
Delay(32);
Konfigurera Register
write_led_twice(0x04,0x01);
Intensitet fönsterrutorna 1 och 2
write_led_twice(0x01,0xFF);
write_led_twice(0x02,0xFF);
Skanna den gräns
write_led_twice(0x03,0x01);
}
byte write_led (int adress, int värde)
{
digitalWrite(SLAVESELECT,LOW);
2 byte opcode
spi_transfer(Address);
spi_transfer(Value);
Delay(36);
digitalWrite(SLAVESELECT,HIGH); släppa chip, signalera slutet överföring
}
Skriv n gånger för n chips daisy fastkedjade.
byte write_led_twice (int adress, int värde)
{
digitalWrite(SLAVESELECT,LOW);
2 byte opcode
spi_transfer(Address);
spi_transfer(Value);
spi_transfer(Address);
spi_transfer(Value);
Delay(36);
digitalWrite(SLAVESELECT,HIGH); släppa chip, signalera slutet överföring
}
void loop()
{
Testa ROM teckenuppsättning
write_led_twice(0x20,0x5e);
write_led_twice(0x21,0x5e);
write_led_twice(0x22,0x5e);
write_led_twice(0x23,0x5e);
Delay(4000);
Testa programmerbara RAM utrymme
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);
Greden testsamtal Register
write_led_twice(0x07,0x01);
Delay(1000);
Stänga av Test registrera
write_led_twice(0x07,0x00);
}