Étape 4 :
Insérez le code suivant dans l’IDE Arduino. Notez les commentaires dans le code qui vous diront ce que fait chaque partie du code.
/*
******************************************************
* Test de SPI (conduite un potentiomètre numérique dans ce cas)
*
* Ce module utilise la bibliothèque Arduino SPI (livré avec
* l’IDE Arduino) pour permettre la communication entre un
* Programme Arduino et un SPI permis puce périphérique.
*
* La routine se lit dans les valeurs 8 bits, stocke la valeur
* dans la variable « pot », puis envoie « pot » out via le SPI.
* *
* La bibliothèque SPI utilise broche 13 de l’Arduino Uno pour l’horloge.
* Données série sont envoyées sur la broche 11.
*
* Cette broche d’usages courants 10 comme la puce choisir pour la
* Dispositif de SPI à programmer.
*
* Pins 2-9 sont utilisés pour lire dans les valeurs des 8 bits de l’octet
* doivent être envoyés par l’intermédiaire de SPI
******************************************************
*/
#include < SPI.h > / / Liens préécrites bibliothèque SPI dans le code
void setup()
{
pinMode (entrée 2) ; Réglez de façon strictement 2-9 comme entrées
pinMode (3, entrée) ;
pinMode (4 entrées) ;
pinMode (5, entrée) ;
pinMode (6, entrée) ;
pinMode (7, entrée) ;
pinMode (8 entrées) ;
pinMode (9, entrée) ;
pinMode (sortie 10,) ; Réglez de façon strictement SPI à être sorties
pinMode (sortie 11) ;
pinMode (13, sortie) ;
digitalWrite (2, haut) ; Active la valeur de résistances de pull-up Arduino
digitalWrite (3, élevée) ; Cela définit un interne à la puce
digitalWrite (4, élevée) ; résistance de pull-up sur donc une tige non connectée
digitalWrite (5, HIGH) ; est fiable à logique 1
digitalWrite (6, HIGH) ;
digitalWrite (7, HIGH) ;
digitalWrite (8, HIGH) ;
digitalWrite (9, HIGH) ;
digitalWrite (10, haute) ;
digitalWrite (11, haute) ;
digitalWrite (13, HIGH) ;
SPI.begin() ; Initialiser les paramètres SPI
SPI.setBitOrder(MSBFIRST) ; MSB à être envoyé d’abord
SPI.setDataMode(SPI_MODE3) ; La valeur pour l’horloge s’élevant à bord
SPI.setClockDivider(SPI_CLOCK_DIV64) ; Diviseur de réglage de l’horloge (en option)
Pour plus d’informations sur ces paramètres, consultez site Arduino ou Wikipedia
}
void loop()
{
int val = 0 ; « val » est une variable de test utilisée lors de la lecture des pins
int j = 0 ; « j » est une variable utilisée dans une opération de lecture de données
pot de Byte = B00000000 ; Zéro tous les bits de l’octet « pot »
pour (int i = 0; j’ai < 8; i ++) / / boucle pour lire chacune des 8 broches d’entrée
{
j = i + 2 ; Ajouter 2 boucle comte pour faire correspondre les broches d’entrée
Val = digitalRead(j) ; Goupille appropriée de lecture
if(Val == High)
{
bitSet(pot, i) ; Ensemble appropriée peu à 1 basé sur le nombre de boucles i
} / / Sinon, laissez à 0
}
}
digitalWrite(10,LOW) ; Déposez le SPI puce-select 0 (Arduino broche 10)
SPI.transfer(pot) ; SPI est transférés du pot variable
digitalWrite(10,HIGH) ; Soulever la puce-select pour 1
Delay(10000) ; Boucle de retard 10 secondes (choisissez votre calendrier)
} / / Données seront lu et transmises une fois toutes les 10 secondes sur cette base