Tugas Pendahuluan Modul 3 Up & Uc



  1. Kondisi [Kembali]
  2. Ganti LED menjadi Buzzer


  3. Rangkaian Simulasi [Kembali]


  4. Prinsip kerja dari rangkaian ini adalah, terdapat 2 buah arduino yang salah satunya sebagai master dan lainnya sebagai slave. Pada button dibuat rangkaian pull up ke ke master sebagai input dan buzzer dihubungkan ke slave sebagai output. Master dan slave dihubungkan keduanya pada pin MISO, MOSI, SCK, dan SS. Agar rangkaiannya dapat berjalan, maka master dan slave dimasukkan program yang telah tersedia dibawah. Pada saat rangkaian dijalankan, jika button ditekan, maka akan membarikan input logika low pada master dan mengirim data ke slave sehingga akan membuat buzzer hidup selama 1 detik. Jika button dilepas atau tidak ditekan, maka akan terjadi kebalikannya.

  5. Flowchart [Kembali]



  6. Listing program [Kembali]

  7. Master

    //MASTER

    #include <SPI.h> //Deklarasi library SPI
    #define button 2

    char data = "1";
    void setup (void) {
      pinMode(button, INPUT_PULLUP);
      Serial.begin(115200); //untuk memulai serial dengan Set baud rate 115200 untuk USART dan SPI
      digitalWrite(SS, HIGH); // disable Slave Select
      SPI.begin (); // untuk memulai komunikasi SPI
      SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
    }

    void loop (void) {
      char c; // menginisialisasikan variabel C dengan tipe data char
      int nilai = digitalRead(button);
      if (nilai == 0) {
        digitalWrite(SS, LOW); // enable Slave Select untuk menghidupkan dari slave dibuat low karena si slave akan hidup ketika diberi input low karena dari master berlogika HIGH supaya arus mengalir
        // send test string
        for (const char * p = "1" ; c = *p; p++)
        {
          SPI.transfer (c);
          Serial.print(c); // sebagai penghubung serial monitornya
        }
        SPI.transfer("1");
        digitalWrite(SS, HIGH); // disable Slave Select menggunakan HIGH dikarenkan HIGH bertemu HIGH akan mati
        delay(2000);
      }
    }

    Slave

    //SLAVE

    #include <SPI.h> //Deklarasi library SPI
    #define buzzer 2

    char buff [50]; // untuk menginisialisasikan variabel buff pada spi.h tinggal tambahkan library
    volatile byte indx;// tidak ada koma
    volatile boolean process;//  tidak ada koma dan boolean merupakan tipe data yang akan memilih

    void setup (void) {
      Serial.begin (115200);// serial begin antara master dan slave harus sama
      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;// Ketika dia masuk maka dia akan mati
      SPI.attachInterrupt(); // turn on interrupt
    }

    ISR (SPI_STC_vect) // SPI interrupt routine // fungsi yg digunakan Ketika program sudah berjalan
    { // fungsi yg digunakan Ketika program sudah berjalan
      byte c = SPDR; // read byte from SPI Data Register from slave
      if (indx < sizeof buff) {
        buff [indx++] = c; // save data in the next index in the array buff
        if (c == '1') //check for the end of the word
          process = true;
      }
      if (c == '1') { //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(1000);
      }
      else
      {
        digitalWrite(buzzer, LOW);
      }
    }


  8. Video Simulasi [Kembali]



  9. Link Download [Kembali]
    1. Video
    2. File Rangkaian
    3. Listing program master
    4. Listing program slave
    5. Datasheet push button
    6. Datasheet arduino
    7. File HTML

Tidak ada komentar:

Posting Komentar