Étape 3: L’Interface Microcontroller
Je n’utilise les valeurs de condensateur approprié lors de la génération de la veste. Je ne voulais pas tout électrolytiques dans le mélange. Le 6952 est une puce assez élastique et a assez bien résisté à mes abus.
Je suis l’alimentation à la boarduino directement avec l’alimentation 4AA et puis l’exécution de 5v à la max6952.
Et voici un exemple de code pour interfacer avec le boarduino avec le max6952 :
Exemple de 6952 Max Code pour Arduino
Testé sur Boarduino
Résistance de NYC @ Matt Joyce
#define DATAOUT 11 / / MOSI
#define DATAIN 12 / / MISO - ne pas utilisé, mais une partie de builtin SPI
#define SPICLOCK 13 / / sck
#define SLAVESELECT 10 / / ss
char spi_transfer (données char volatils)
{
SPDR = données ;
Démarrer la transmission
tandis que (! () SPSR & (1 << SPIF))) / / attendre la fin de la transmission
{
};
retour SPDR ; retourne l’octet reçu
}
void setup()
{
octet i ;
clr octets ;
pinMode (DATAOUT, sortie) ;
pinMode (DATAIN, entrée) ;
pinMode(SPICLOCK,OUTPUT) ;
pinMode(SLAVESELECT,OUTPUT) ;
digitalWrite(SLAVESELECT,HIGH) ; désactiver le périphérique
SPCR = 01010000
Interrupt désactivé, spi activé, msb 1er, maître, clk faible lors de l’inactivité,
exemple sur le bord d’attaque de clk, système horloge/4 (plus rapide)
SPCR = 0b01010010 ;
CLR = SPDR ;
Delay(32) ;
Configurez le registre
write_led_twice(0x04,0x01) ;
Intensité le volet 1 et volet 2
write_led_twice(0x01,0xFF) ;
write_led_twice(0x02,0xFF) ;
Analyse limite
write_led_twice(0x03,0x01) ;
}
write_led octet (adresse int, int valeur)
{
digitalWrite(SLAVESELECT,LOW) ;
2 octets opcode
spi_transfer(Address) ;
spi_transfer(value) ;
Delay(36) ;
digitalWrite(SLAVESELECT,HIGH) ; puce, de sortie du signal transfert fin
}
Écrire n fois pour n en guirlande de puces.
write_led_twice octet (adresse int, int valeur)
{
digitalWrite(SLAVESELECT,LOW) ;
2 octets opcode
spi_transfer(Address) ;
spi_transfer(value) ;
spi_transfer(Address) ;
spi_transfer(value) ;
Delay(36) ;
digitalWrite(SLAVESELECT,HIGH) ; puce, de sortie du signal transfert fin
}
void loop()
{
Jeu de caractères de ROM de test
write_led_twice(0x20,0x5E) ;
write_led_twice(0x21,0x5E) ;
write_led_twice(0X22,0x5E) ;
write_led_twice(0x23,0x5E) ;
Delay(4000) ;
Test Programmable RAM espace
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) ;
Appel Register Test gred
write_led_twice(0x07,0x01) ;
Delay(1000) ;
Désactiver le Test s’inscrire
write_led_twice(0x07,0x00) ;
}