From caf93bb566223dd05d17a17b41b10611736f6472 Mon Sep 17 00:00:00 2001
From: FluffyCube9343 <learningninja007@gmail.com>
Date: Sun, 20 Feb 2022 16:12:16 -0500
Subject: [PATCH] spi is working

---
 communication/SPI/v0.2_M_SPI/M_SPI.ino | 37 ++++++++++++
 communication/SPI/v0.2_S_SPI/S_SPI.ino | 78 ++++++++++++++++++++++++++
 2 files changed, 115 insertions(+)
 create mode 100644 communication/SPI/v0.2_M_SPI/M_SPI.ino
 create mode 100644 communication/SPI/v0.2_S_SPI/S_SPI.ino

diff --git a/communication/SPI/v0.2_M_SPI/M_SPI.ino b/communication/SPI/v0.2_M_SPI/M_SPI.ino
new file mode 100644
index 0000000..d6e6a2b
--- /dev/null
+++ b/communication/SPI/v0.2_M_SPI/M_SPI.ino
@@ -0,0 +1,37 @@
+//Master Arduino Code:
+//SPI MASTER (ARDUINO)
+//SPI COMMUNICATION BETWEEN TWO ARDUINO 
+//CIRCUIT DIGEST
+
+#include<SPI.h>                             //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.2_S_SPI/S_SPI.ino b/communication/SPI/v0.2_S_SPI/S_SPI.ino
new file mode 100644
index 0000000..87f5a9f
--- /dev/null
+++ b/communication/SPI/v0.2_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<SPI.h>
+#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);
+      
+ 
+}
+}