Tugas Pendahuluan 2 Modul 3







1. Kondisi [Kembali]

Percobaan 2 Kondisi 15

Ubah button menjadi saklar SPDT.

2. Rangkaian Simulasi [Kembali]




3. Video [Kembali]





4. Prinsip Kerja [Kembali]


Rangkaian terdiri dari 2 Arduino Uno, 2 LED, dan 2 SPDT, dan 4 resistor serta 2 VCC dan 2 GND. Pada arduino master pin 7 master terdapat resistor, led dan terhubung dengan pin 2 master yaitu ada vcc, spdt, lalu ke ground. Begitu juga dengan arduino slave. Kemudian terdapat hubungan antar 2 arduino tersebut dimana terhubung pin 10, 11, 12, dn 13.

Berdasarkan kondisi percobaan LED akan hidup ketika spdt pulldown. Maka untuk program arduino dapat dibuat sebagai berikut.

MASTER

#include<SPI.h>                             //Library SPI 


#define LED 7                               //Deklarasi pin 7 untuk LED


#define ipbutton 2                          //Deklarasi pin 2 untuk ipbutton

di mana buttonvalureee

int buttonvalue;                            //deklarasi variabel buttonvalue tipe int


int x;                                      //deklarasi variabel x tipe int


void setup (void)                           //Kode dalam fungsi ini dijalankan sekali



{


  Serial.begin(115200);                   //komunikasi serial dimulai dengan Baud Rate 115200 


  


  pinMode(ipbutton,INPUT);                //pin 2 sebagai input

  pinMode(LED,OUTPUT);                    //pin 7 sebagai output


  


  SPI.begin();                            //Komunikasi SPI dimulai


  SPI.setClockDivider(SPI_CLOCK_DIV8);    //Clock SPI komunikasi yaitu 8 (16/8=2Mhz)


  digitalWrite(SS,HIGH);                  //Mengatur slave select berlogika 1, master tidak terhubung dengan slave


}



void loop(void)                           //Kode dalam fungsi ini dijalankan berulang


{


  byte Mastersend,Mastereceive;          //Deklarasi variabel tioe data int



  buttonvalue = digitalRead(ipbutton);   //Membaca status dari pin 2



  if(buttonvalue == HIGH)                //Kondisi ketika buttonvalue berlogika 1 yang dikirm ke slave tergantung dari pin 2


  {


    x = 1;


  }


  else


  {


    x = 0;


  }


  


  digitalWrite(SS, LOW);                  //Mengatur komunikasi dengan slave yang terhubung ke master


  


  Mastersend = x;                            


  Mastereceive=SPI.transfer(Mastersend); //Mengirim nilai mastersend value ke slave dan menerima value dari slave


  


  if(Mastereceive == 1)                   //Kondisi jika Masterecive berlogika 1 untuk mengatur LED bergantung dari nilai yang diterima dari salve


  {


    digitalWrite(LED,HIGH);              //Atur pin 7 LED berlogika HIGH


    Serial.println("Master LED ON");     //Memprint teks


  }


  else


  {


   digitalWrite(LED,LOW);               //Atur pin 7 LED berlogika LOW


   Serial.println("Master LED OFF");    //Memprint teks


  }


  delay(1000);


}

SLAVE

#include<SPI.h>                           //Library SPI 



#define LEDpin 7                          //Deklarasi pin 7 untuk LEDpin


#define buttonpin 2                       //Deklarasi pin 2 untuk buttonpin


volatile boolean received;                //Deklarasi variabel received tipe volatile boolean


volatile byte Slavereceived,Slavesend;    //Deklarasi variabel Slavereceived,Slavesend tipe volatile byte


int buttonvalue;                          //deklarasi variabel buttonvalue tipe int


int x;                                    //deklarasi variabel x tipe int


void setup()                              //Kode dalam fungsi ini dijalankan sekali



{


  Serial.begin(115200);                   //komunikasi serial dimulai dengan Baud Rate 115200 


  


  pinMode(buttonpin,INPUT);               //pin 2 sebagai input


  pinMode(LEDpin,OUTPUT);                 //pin 7 sebagai output


  pinMode(MISO,OUTPUT);                   //pin MISO sebagai output


  SPCR |= _BV(SPE);                       //Menghidupkan SPI dalam mode Slave


  received = false;                       //received diset false



  SPI.attachInterrupt();                  //Interuupt diset ON 


  


}



ISR (SPI_STC_vect)                        //Fungsi Interrrput routine  


{


  Slavereceived = SPDR;                   //NIlai yang diterima dari master jika disimpan dalam variabel slavereceived


  received = true;                        //Mengatur received adalah True 


}



void loop()                               //Kode dalam fungsi ini dijalankan berulang


{ if(received)                            //Logika untuk menset LED ON/OFF tergantung nilai yang diterima dari master


   {


      if (Slavereceived==1)               //kondisi jika slavereceived==1


      {


        digitalWrite(LEDpin,HIGH);        //Pin 7 atau LEDpin HIGH maka LED ON


        Serial.println("Slave LED ON");   //Print teks Slave LED ON


      }else


      {


        digitalWrite(LEDpin,LOW);          //Pin 7 atau LEDpin LOW maka LED OFF


        Serial.println("Slave LED OFF");   //Print teks Slave LED OFF


      }


      


      buttonvalue = digitalRead(buttonpin);  //Membaca status pin 2


      


      if (buttonvalue == HIGH)               //Kondisi jika buttonvalue yang dikirm ke master


      {


        x=1;


        


      }else


      {


        x=0;


      }


      


  Slavesend=x;                                //Variabel Slavesend adalah variabel x


  SPDR = Slavesend;                           //variabel SPDR adalah Salvesend  


  delay(1000);


}


}

MASTER

Untuk penjelasannya program arduino yaitu deklarasi library SPI, deklarasi pin 7 untuk LED, deklarasi pin 2 untuk ipbutton dan deklarasi variabel buttonvalue dan x tipe data int. Kemudian fungsi void setup dimana kode dalam fungsi ini dieksekusi sekali. KOde didalamnya terdapat Serial.begin(115200) untuk mengatur baud rate 115200. Setelah itu pin 2 sebagai input, pin 7 sebagai output. Kemudian SPI.begin() untuk memulai komunikasi SPI. Kemudian SPI.setClockDivider(SPI_CLOCK_DIV8) dimana Clock SPI komunikasi yaitu 8 (16/8=2Mhz). Selanjutnya digitalWrite(SS,HIGH) untuk mengatur slave select berlogika 1, master tidak terhubung dengan slave. 

Setelah itu terdapat fungsi void loop dimana kode akan dijalan berulang kali. Kode di dalamnya yaitu deklarsai variavel Mastersend,Mastereceive tipe data byte. buttonvalue = digitalRead(ipbutton) untuk membaca status pin 2. Lalu ada perulangan jika buttonvalue == HIGH yaitu kondisi ketika buttonvalue berlogika 1 yang dikirm ke slave tergantung dari pin 2. Selanjutnya variabel x bernilai 1, jika tidak variabel x bernilai 0. Setelah itu digitalWrite(SS, LOW) untuk mengatur komunikasi dengan slave yang terhubung ke master. Lalu variabel Mastersend sama dengan variabel x. Mastereceive=SPI.transfer(Mastersend) untuk mengirim nilai mastersend value ke slave dan menerima value dari slave. Setelah itu ada percabangan jika Mastereceive == 1 yaitu kondisi jika Masterecive berlogika 1 untuk mengatur LED bergantung dari nilai yang diterima dari salve. Maka pin LED yaitu pin 7 HIGH dan LED ON. Jika kondisi tidak terpenuhi maka pin LED pin 7 akan LOW dan LED OFF. Kemudian delay 1000ms. 

SLAVE

Untuk penjelasannya program arduino yaitu deklarasi library SPI, deklarasi pin 7 untuk LED, deklarasi pin 2 untuk ipbutton dan deklarasi variabel received tipe data volatile boolean dan variabel Slavereceived,Slavesend tipe data volatile byte, variabel buttonvalue tipe int, dan variabel x tipe int. 

Kemudian terdapat fungsi void setup() dimana kode dalam fungsi akan dijalankan sekali. Kode di dalanya yaitu Serial.begin(115200) untuk set baud rate menjadi 115200, lalu pin 2 buttonpin sebagai input dan pin 7 LEDpin sebagai output, dan pin MISO untuk output. Selanjutnya SPCR |= _BV(SPE) untuk menghidupkan SPI dalam mode Slave, atur variabel received menjadikondisi false, dan SPI.attachInterrupt() untuk interrupt diset ON. Kemudian untuk fungsi interrupt routine ISR (SPI_STC_vect) lalu Slavereceived = SPDR di mana nIlai yang diterima dari master jika disimpan dalam variabel slavereceived dan mengatur kondisi received adalah true. 

Setelah itu terdapat fungsi voidloop dimana kode dalam fungsi ini dijalankan berulang kali. Kode di dalamnya yaitu percabangan if(received) untuk menset LED ON/OFF tergantung nilai yang diterima dari master dan percangan if lagi dimana kondisi jika slavereceived==1. Kemudian pin 7 LEDpin akan HIGH maka LED ON. Jika tidak terpenuhi maka  Pin 7 atau LEDpin LOW maka LED OFF. Setlah itu buttonvalue = digitalRead(buttonpin) untuk membaca status pin 2. Dan terdapat percabangan buttonvalue == HIGH untuk kondisi jika buttonvalue yang dikirm ke master. Jika terpenuhi maka variabel x bernilai 1 dan jika tidak variabel x bernilai 0. Setelah itu variabel Slavesend sama dengan x, variabel SPDR sama dengan Salvesend. Lalu delay selama 1000ms. 

Saat kondisi button pulldown, maka SPDT berlogika LOW dan Masterreceiver bernilai 1 maka LED akan ON. Pada slave jika Slavereceiver bernilai 1 maka LED akan menyala. Namun saat kondisi button pullup, maka SPDT berlogika HIGH dan menyebabkan LED tidak menyala.


5. Link Download [Kembali]
  • Download rangkaian simulasi Klik
  • Download video simulasi Klik
  • Download listing program Klik
  • Download HTML  Klik
  • Download library Arduino Uno  Klik
  • Download datasheet Arduino Uno  Klik
  • Download datasheet resistor Klik
  • Download datasheet SPDT Klik
  • Download datasheet LED Klik



Tidak ada komentar:

Posting Komentar

BAHAN PRESENTASI UNTUK MATAKULIAH ELEKTRONIKA Oleh Annisa Az-Zahra 2010952058 Dosen Pengampu: Darwison, M.T. JURUSAN TEKNIK ELEKTRO FAKULTAS...