•  Modul III: LA 2 Percobaan 2



    1.      Kondisi [Kembali]

    Komunikasi SPI, menghidupkan LED slave saat button master ditekan dan LED master menyala saat button slave ditekan.

    2.      Hardware [Kembali]  

            a.       Push button

     

    b.      LED

    c.       Arduino 

    3.      Rangkaian [Kembali]

    4.      Prinsip kerja [Kembali]

    Pada komunikasi SPI, ada 4 pin yang digunakan, yaitu pin MISO, MOSI, SS, SCK. Pin MISO merupakan pin dengan input dari slave dan output master, sedangkan pin Mosi adalah pin yang inputnya dari master dan output slave. Pin SS (slave Select) digunkan untuk memilih slave yang akan diajak berkomunikasi oleh mster, dan pin SCK adalah clock yang dihasilkan mater untuk melakukan shifting pda shift register kedua device.

    Pada program master maupun slave ditmbahkan library untuk komunikasi SPI. Selain itu juga digunakan fungsi INPUT_PULLUP karena pada rangkaian menggunakan button. Pada saat button ditekan maka akan mengasilkan nilai 1 sehingga LED akan menyala, dan untuk kondisi lainnya maka LED tidak menyala.

    Master:

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

    } 

    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(9600); 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 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; } Slavesend=x; SPDR = Slavesend; //Sends the x value to master via SPDR delay(1000); } }

     

    5.      Video percobaan [Kembali]

    6.      Analisa [Kembali]

    a.       Analisa pengaruh “SPI.setClockDivider (SPI_CLOCK_DIV8);” pabila nilai 8 diganti dengan nilai lain!

    Jawab:

    Syntax SPI.setClockDivider digunakan untk menentukan kecepatan clock yang digunakan. Pembagi dari clock SPI ini relativ tergantung dengan divider yang digunakan. Semakin kecil angka pembagi maka clock akan semakin cepat. Saat pembagi bernilai 8 maka 16/8 menghasilkn kecepatan clock 2 MHz. Saat nilai pembagi  32 maka kecepatannya mnejadi 250 KHz.

    b.      Analisa pengaruh menekan push button dan nyala LED terhadap master dan slave!

    Jawab:

    Push button pada rangkaian digunakan untuk mengalirkan tegangan ke LED. Untuk menandakan adanya komunikasi antar 2 arduino, saat push button yang terhubung ke master ditekan maka LED pada slave akan menyala dan sebaliknya saat push button yang terhubung ke slave ditekan, maka LED pada master akan menyala. Hal ini terjadi karena hubungan pin MISO dan MOSI yang dihubungkan ke masing-masing arduino. Dimana saat MOSI dihubungkan, master akan menjadi output sedangkan saat MIS dihubungkan, master akan menjadi input.

    c.       Analisa perbedaan rangkaian pada modul dengan rangakaian saat praktikum!

    Jawab:

    Rangkaian yang ada pada modul berbeda dengan rangkaian yang ada pada saat praktikum. Letak perbedaannya adalah saat praktikum, pin 10 terhubung anatara master dan slave. Pin 10 ini merupakan pin slave select ynag digunakan untuk memilih slave mana yang akan diajak berkomunikasi.

    d.      Analisa pengaruh pin MISO terhadap output yang dihasilkan!

    Jawab:

    Pin MISO merupakan pin input dai master untuk menerima data dari slave menuju master. Saat button yang terhubung dengan pin MISO ditekan, artinya LED pada slave yang akan hidup

    7.      Link download[Kembali]

    Download HTML [download]

    Download video percobaan [download]

    Download listing program slave [download]

    Download listing program master [download]

    Download datasheet arduino [download]

    Download datasheet LED [download]

    Download datasheet push button [download]

    Tidak ada komentar:

    Posting Komentar

    BAHAN PRESENTASI UNTUK MATA KULIAH ELEKTRONIKA 2020/2021     Oleh : Rahma Azira Ichsan 2010953021   Dosen Pengempu: Dr. Da...