Laporan Akhir Modul 3 Percobaan 2 Kondisi 12




1. Komponen[kembali]

Push Button

LED
Arduino
 
Resistor

 
 Power Supply

2. Rangkaian Simulasi[kembali]


Prinsip Kerja:
    Pada rangkaian percobaan menggunakan 2 arduino UNO yang bertindak sebagai master dan slave. Untuk bagian master pada masing-masing PIN komunikasi SPI dihubungkan ke PIN komunikasi SPI yang sama ke slave. Untuk input yang digunakan yaitu button yang disetting pada program sebagai Input Pullup dan ouput yang digunakan yaitu Buzzer. Buzzer akan menyala ketika kita pencet button dan kita menuggu terlebih dahulu selama 1 detik.


3. Flowchart[kembali]



4. Listing Program[kembali]

    Master:
        #include <SPI.h> //Deklarasi library SPI
#define button 2
void setup (void) {
  pinMode(button, INPUT_PULLUP);
  Serial.begin(115200 ); //Set baud rate 115200
  digitalWrite(SS, HIGH);
  // disable Slave Select
  SPI.begin ();
  SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop (void) {
  char c;
  int nilai=digitalRead(button);
  if(nilai==0){
    delay(1000);
   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(1000);
  }
}

    Slave:
    #include <SPI.h>
#define buzzer 2

char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(buzzer, 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) {
    digitalWrite(buzzer, HIGH);
    process = false; //reset the process
    Serial.println (buff); //print the array on serial monitor
    indx = 0; //reset button to zero
    delay(500);
  }
  else
  {
    digitalWrite(buzzer, LOW);
  }
}
5. Video[kembali]



6. Kondisi[kembali]

1. Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI

Jawab:

- MOSI merupakan Master Output Slave Input yang berarti jika master dijadikan sebagai output maka slave akan menjadi inputnya.

- MISO merupakan Master Input Slave Output yang berarti jika master dijadikan sebagai input maka slave akan menjadi outputnya.

- SCK merupakan Clock yang jika dikonfigurasi sebagai master maka pinnya akan menjadi output namun jika sebagai slave maka pinnya akan menjadi input.

- SS merupakan slave select merupakan jalur untuk master yang bagian mana yang akan mengirimkan data.



2. Bagaimana cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave?

Jawab:

Saat menggunakan lebih dari satu slave bisa dengan cara mengganti rangkaian dengan metode Independent Slave Configuration, yaitu pin SS pada master dapat dihubungkan beberapa buah slave yang kita inginkan. Daisy Chain Configuration dengan metode satu pin SS pada master dihubungkan ke beberapa slave. Untuk ini kita juga memerlukan perubahan pada program dengan menginisialisasikan slave-slavenya agar tau perintah dari master.

7. Link Download[kembali]

    Download HTML
    Download Rangkaian
    Download Listing Master
    Download Listing Slave
    Download Video

Tidak ada komentar:

Posting Komentar