Modul 3 Laporan Akhir 2 (Percobaan 3)





1. Komponen[back]
    a. Arduino
Gambar 1. Arduino



   b. LED 
 
Gambar 2. LED



    c. Push Button

        
Gambar 3. Potensiometer


2. Rangkian Simulasi[back]

Gambar 4. Rangkaian setelah di RUN

Gambar 5. Rangkaian Sebelum di RUN     
 

3. Flowchart[back]
  
Gambar 6. Flowchart Master

                              

Gambar 7. Flowchart Slave




4.Listing Program[back]

//MASTER

 

#include <SPI.h>

 

void setup (void) {

   Serial.begin(115200);

//set baud rate to 115200 for usart

   digitalWrite(SS, HIGH);

// disable Slave Select

   SPI.begin ();

   SPI.setClockDivider(SPI_CLOCK_DIV8);//divide the clock by 8

}

 

void loop (void) {

   char c;

   digitalWrite(SS, LOW); // enable Slave Select

   // send test string

   for (const char * p = "Hello, world!\r" ; c = *p; p++)

   {

      SPI.transfer (c);

      Serial.print(c);

   }

   digitalWrite(SS, HIGH); // disable Slave Select

   delay(2000);

}

//SLAVE

 

#include <SPI.h>

char buff [50];

volatile byte indx;

volatile boolean process;

 

void setup (void) {

   Serial.begin (115200);

   pinMode(MISO, OUTPUT); // have to send on master in so it set as output

   SPCR |= _BV(SPE); // turn on SPI in slave mode

   indx = 0; // buffer empty

   process = false;

   SPI.attachInterrupt(); // turn on interrupt

}

ISR (SPI_STC_vect) // SPI interrupt routine

{

   byte c = SPDR; // read byte from SPI Data Register

   if (indx < sizeof buff) {

      buff [indx++] = c; // save data in the next index in the array buff

      if (c == '\r') //check for the end of the word

      process = true;

   }

}

void loop (void) {

   if (process) {

      process = false; //reset the process

      Serial.println (buff); //print the array on serial monitor

      indx= 0; //reset button to zero

   }

}



 
5. Analisa[back]

   Apabila ada tambahan slave, bagaimana cara master membedakan satu save dengan slave lainnya pada I2C pada saat berkomunikasi? Apakah pada bagian program, atau rangkaian, atau keduanya?

    Jawab :

    Pada komunikasi I2C, kita dapat menggunakan banyak slave. namun bagi master untuk membedakan slave dengan slave yang lainnya adalah dengan cara mengaturnya pada listing program. mencocokkan program untuk pengirim data dengan penerima data pada slave seperti contoh pada program diatas yaitu "SLAVE_ADDR". yang merupakan penghubung antara master dengan slave. untung rangkaiannya sendiri yaitu hanya dengan menghubungkan pin SDA (master) dengan pin SDA(slave) dan pin SCL (master) dengan pin SCL (slave) lainnya.

6. Video[back]



7. Link Download[back]

  Simulasi Rangkaian Proteus [Download]
  Video Simulasi [Download]
  Listing Program Master [Download]
  Listing Program Slave [Download]
  HTML [Download]








 

Tidak ada komentar:

Posting Komentar