//Maître SPI (ARDUINO)
//Communication SPI entre deux cartes Arduino
//CIRCUIT DIGEST
#include<SPI.h> //Bibliothèque SPI
#define LED 7 // Défition de la broche de la LED
#define ipbutton 2 // Définition de la broche de l'interrupteur 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(115200); // Début de la communication série à 115200 bauds
pinMode(ipbutton,INPUT); //Définition de la broche 2 en entrée
pinMode(LED,OUTPUT); // Définition de la broche 7 en sortie
SPI.begin(); // Début la communication SPI
SPI.setClockDivider(SPI_CLOCK_DIV8); //Fixe l'horloge de la communication SPI à 16/8, soit 2Mhz
digitalWrite(SS,HIGH); // initialisation de SlaveSelect en valeur haute (de telle sorte que le maître ne se connecte pas à l'esclave)
}
void loop(void)
{
byte Mastersend,Mastereceive;
buttonvalue = digitalRead(ipbutton); //Lecture de la broche 2
if(buttonvalue == HIGH) //Condition d'affectation de la valeur de x (à envoyer à l'esclave) dépendant de la valeur de la broche 2 (interruption ou pas)
{
x = 1;
}
else
{
x = 0;
}
digitalWrite(SS, LOW); //Début de la communication avec l'escalve relié au maître
Mastersend = x;
Mastereceive=SPI.transfer(Mastersend);
//Envoi la valeur mastersend à l'esclave / réceptionne la valeur en provenance de l'esclave
if(Mastereceive == 1)
//Condition pour fixer la sortie LED en fonction de la valeur reçue par l'esclave
{
digitalWrite(LED,HIGH); //Fixe la valeur de la broche 7 à l'état HAUT
Serial.println("Master LED ON"); // Affichage sur le port série
}
else
{
digitalWrite(LED,LOW); //Fixe la valeur de la broche 7 à l'état BAS
Serial.println("Master LED OFF");
}
delay(10);
}