diff --git a/communication/SPI/v0.3_M_SPI/M_SPI.ino b/communication/SPI/v0.3_M_SPI/M_SPI.ino new file mode 100644 index 0000000..d6e6a2b --- /dev/null +++ b/communication/SPI/v0.3_M_SPI/M_SPI.ino @@ -0,0 +1,37 @@ +//Master Arduino Code: +//SPI MASTER (ARDUINO) +//SPI COMMUNICATION BETWEEN TWO ARDUINO +//CIRCUIT DIGEST + +#include //Library for SPI +#define LED 7 +#define ipbutton 2 +int buttonvalue; +int x; +void setup (void) + +{ + Serial.begin(115200); //Starts Serial Communication at Baud Rate 115200 + + pinMode(ipbutton,INPUT); //Sets pin 2 as input + pinMode(LED,OUTPUT); //Sets pin 7 as Output + + SPI.begin(); //Begins the SPI commnuication + SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz) + digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave) +} + +void loop(void) +{ + byte Mastersend,Mastereceive; + + buttonvalue = 8; + + digitalWrite(SS, LOW); //Starts communication with Slave connected to master + + Mastersend = buttonvalue; + Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave + + Serial.println(Mastereceive); + delay(50); +} diff --git a/communication/SPI/v0.3_S_SPI/S_SPI.ino b/communication/SPI/v0.3_S_SPI/S_SPI.ino new file mode 100644 index 0000000..87f5a9f --- /dev/null +++ b/communication/SPI/v0.3_S_SPI/S_SPI.ino @@ -0,0 +1,78 @@ + +//Slave Arduino Code: +//SPI SLAVE (ARDUINO) +//SPI COMMUNICATION BETWEEN TWO ARDUINO +//CIRCUIT DIGEST +//Pramoth.T + +#include +#define LEDpin 7 +#define buttonpin 2 +volatile boolean received; +volatile byte Slavereceived,Slavesend; +int buttonvalue; +int x = 5; +void setup() + +{ + Serial.begin(115200); + + pinMode(buttonpin,INPUT); // Setting pin 2 as INPUT + pinMode(LEDpin,OUTPUT); // Setting pin 7 as OUTPUT + pinMode(MISO,OUTPUT); //Sets MISO as OUTPUT (Have to Send data to Master IN + + SPCR |= _BV(SPE); //Turn on SPI in Slave Mode + received = false; + + SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation + +} + +ISR (SPI_STC_vect) //Inerrrput routine function +{ + Slavereceived = SPDR; // Value received from master if store in variable slavereceived + received = true; //Sets received as True +} + +void loop() +{ if(received) //Logic to SET LED ON OR OFF depending upon the value recerived from master + { + if (Slavereceived==8) + { + x+=1; + + + /* + digitalWrite(LEDpin,HIGH); //Sets pin 7 as HIGH LED ON + Serial.println("Slave LED ON"); + }else + { + digitalWrite(LEDpin,LOW); //Sets pin 7 as LOW LED OFF + Serial.println("Slave LED OFF"); + } + + buttonvalue = digitalRead(buttonpin); // Reads the status of the pin 2 + + if (buttonvalue == HIGH) //Logic to set the value of x to send to master + { + x=1; + + }else + { + x=0;*/ + + } + if(x == 10){x = 0;} + + Slavesend=x; + + + SPDR = Slavesend; + SPDR = x;//Sends the x value to master via SPDR + Serial.println(SPDR); + Serial.println(Slavesend); + delay(500); + + +} +}