Laporan Akhir Modul 3 Percobaan 3 Up Uc



  1. Tujuan [Kembali]

    1. Memahami prinsip kerja UART, SPI, dan I2C
    2. Mengaplikasikan protokol komunikasi UART, SPI, dan I2C pada Arduino

    Kondisi: Ganti potensiometer dengan buuton dan led dengan motor DC, sehingga ketika button di tekan maka motor DC akan berputar searah jarum jam.


  2. Hardware [Kembali]
    • Arduino


    • Push button


    • Resistor


    • Motor


    • Driver Motor



  3. Rangkaian Percobaan [Kembali]


  4. Prinsip kerjanya adalah terdapat dua buah arduino yang masing-masingnya berfungsi sebagai master dan slave, lalu terdapat push button yang dihubungkan pada arduino master dengan input pull up, dan pada arduino slave dihubungkan driver motor yang dapat mengontrol arah putaran motor dan motor adalah sebagai output pada rangkaian. Pada rangkaian ini, jika pussh button ditekan, maka arus akan masuk ke push button dan memberi logika LOW pada input arduino master, lalu pada arduino master memberikan data ke arduino slave yang dapat diproses sehingga mengeluarkan output pada arduino slave yang akan membuat motor berputar searah jarum jam. Dan bagitu juga untuk sebaliknya, jika button dilepas atau tidak ditekan, maka motor akan berhenti bergerak. Untuk listing program agar dapat memutar motor tersebut dapat dilihat dibawah.


  5. Listing Program dan Flowchart [Kembali]
  6. Listing program:

    Master
    #include <Wire.h>
    #define BUTTON A0
    #define SLAVE_ADDR 9

    void setup() {
      Wire.begin();
      pinMode(BUTTON, INPUT);
    }

    void loop() {
      delay(50);
      int button_status = digitalRead(BUTTON);
      Wire.beginTransmission(SLAVE_ADDR);
      Wire.write(button_status);
      Wire.endTransmission();
    }

    Slave
    #include <Wire.h>
    #define SLAVE_ADDR 9
    #define in1 9
    #define in2 10

    int rd;

    void setup() {
      pinMode(in1, OUTPUT);
      pinMode(in2, OUTPUT);
      Wire.begin(SLAVE_ADDR);
      Wire.onReceive(receiveEvent);

      Serial.begin(9600);
      Serial.println("I2C Slave demo");
    }

    void receiveEvent() {
      rd = Wire.read();
      Serial.println(rd);
    }

    void loop() {
      if (rd == LOW) {
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
      } else {
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
      }
    }

    Flowchart:

    Master

    Slave

  7. Analisa [Kembali]
    1. Apakah device master pada komunikasi ini mempunyai alamat/address?
    2. Jawab:

      Pada device master dideklarasikan alamat/address yaitu pada sintaks #define SLAVE_ADDR 9, sintaks ini berfungsi untuk dapat mudah untuk mengirimkan data ke slave.

    3. Apa yang terjadi jika addres pada slave di ganti menjadi 0x70?
    4. Jawab:

      Jika address di ganti menjadi 0x70 maka data yang dikirim pada master tidak dapat diterima oleh slave, karena address pada slave tersebut berbeda dengan master.

    5. Apa fungsi sintax 'Wire.onReceive(receiveEvent)' pada slave?
    6. Jawab:

      Fungsi dari 'Wire.onReceive(receiveEvent)' adalah memanggil suatu fungsi saat data mulai masuk pada Arduino, selanjutnya receiveEvent adalah fungsi yang akan dipanggil ketika slave menerima data dan dapat mengolah data pada fungsi tersebut.


  8. Video [Kembali]



  9. Link Download [Kembali]
    1. HTML
    2. Rangkaian Simulasi
    3. Listing Program Master
    4. Listing Program Slave
    5. Datasheet Arduino
    6. Datasheet Push button
    7. Datasheet Motor DC
    8. Datasheet Driver Motor
    9. Video

Tidak ada komentar:

Posting Komentar