PENDAHULUAN 1 M3




KOMUNIKASI SPI

1. Kondisi [Kembali]

Ubah button menjadi saklar SPST

2. Gambar Rangkaian Simulasi [Kembali]


Listing Program

MASTER

#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 = digitalRead(ipbutton);   //Reads the status of the pin 2

  if(buttonvalue == HIGH)                //Logic for Setting x value (To be sent to slave) depending upon input from pin 2
  {
   x = 0;
  }

  else
  {
    x = 1;
  }

  digitalWrite(SS, LOW);                  //Starts communication with Slave connected to master
  Mastersend = x;                            
  Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
  
  if(Mastereceive == 1)                   //Logic for setting the LED output depending upon value received from slave
  {
    digitalWrite(LED,HIGH);              //Sets pin 7 HIGH
    Serial.println("Master LED ON");
  }

  else
  {
   digitalWrite(LED,LOW);               //Sets pin 7 LOW
   Serial.println("Master LED OFF");
  }
  delay(100);
}

SLAVE
//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;

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==1) 
      {
        digitalWrite(LEDpin,HIGH);         //Sets pin 7 as HIGH LED ON
        Serial.println("Slave LED OFF");
}
      else
      {
        digitalWrite(LEDpin,LOW);          //Sets pin 7 as LOW LED OFF
        Serial.println("Slave LED ON");
      }

      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=0;
      }
      
      else
      {
        x=1;
      }

  Slavesend=x;                             
  SPDR = Slavesend;                           //Sends the x value to master via SPDR 
  delay(100);
}
}

3. Video Simulasi [Kembali]

4. Prinsip Kerja Rangkaian [Kembali]

Rangkaian diatas menggunakan beberapa komponen utama seperti arduino uno, saklar SPST, LED, dan resistor. Pada komunikasi SPI ini memiliki 4 buah pin yang akan dihubungkan pada masing-masing arduino. Pin-pin yang terhubung berupa pin SS pada pin 10, MOSI pada pin 11, MISO pada pin 12, dan SCK pada pin 13. Prinsip kerja rangkaian ini yaitu saklar pada master akan mempengaruhi LED pada slave dan begitu juga sebaliknya. Ketika saklar pada master dibuka maka akan terjadi aktif keadaan MOSI yaitu master akan mengirim sinyal dan slave akan menerima sinyal sehingga LED pada slave akan aktif.  Ketika saklar pada slave dibuka maka akan terjadi aktif keadaan MISO yaitu slave akan mengirim sinyal dan master akan menerima sinyal sehingga LED pada master akan aktif.

5. Link Download [Kembali]



Tidak ada komentar:

Posting Komentar

 BAHAN PRESENTASI UNTUK MATA KULIAH ELEKTRONIKA 2020      DOSEN PENGAMPU : Dr. Darwison, MT   Referensi :    Darwison, 2010, "TEORI, ...