TP 1 MODUL 3


Percobaan 1 Kondisi 
Komunikasi UART

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi

  • Rangkaian




  • Diagram Blok


  • Prinsip Kerja
Pada percobaan 1 Kondisi 6 menggunakan komunikasi UART pada arduino. Pada arduino master terdapat input berupa switch yang dideklarasikan dengan DS1 - DS8, pada arduino master ini akan mengirimkan kode atau data berupa 'r' saat menjalankan program running LED dengan syarat 1 switch pull-down dan 4 switch pull-up, saat ingin menjalankan blinking LED maka master akan mengirimkan data atau kode berupa 'b' dengan syarat 4 switch pull-down dan 1 switch pull-up.

Pada arduino slave, akan diterima data dari arduino master dan akan menjalankan data sesuai dengan kode yang diterima, seperti menjalankan running LED saat mendapatkan data 'r', dan menjalankan blinking LED saat menerima data 'b'.

Pada komunikasi UART ini menggunakan pin Tx dan Rx, yaitu Tx sebagai transmiter dan Rx sebagai receiver.


  • Flowchart

Flowchart Master UART



Flowchart Slave UART







  • Listing Program
Master

#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9

bool b1, b2, b3, b4, b5, b6, b7, b8;

void setup() {
  Serial.begin(9600);
  pinMode(DS1, INPUT_PULLUP);
  pinMode(DS2, INPUT_PULLUP);
  pinMode(DS3, INPUT_PULLUP);
  pinMode(DS4, INPUT_PULLUP);
  pinMode(DS5, INPUT_PULLUP);
  pinMode(DS6, INPUT_PULLUP);
  pinMode(DS7, INPUT_PULLUP);
  pinMode(DS8, INPUT_PULLUP);
}

void loop() {
  int b8 = digitalRead(DS8);
  int b7 = digitalRead(DS7);
  int b6 = digitalRead(DS6);
  int b5 = digitalRead(DS5);
  int b4 = digitalRead(DS4);
  int b3 = digitalRead(DS3);
  int b2 = digitalRead(DS2);
  int b1 = digitalRead(DS1);

  // Hidupkan LED sesuai dengan kondisi tombol yang ditekan
  if (b8 == HIGH && b7 == HIGH && b6 == HIGH && b5 == HIGH &&
      b4 == LOW && b3 == HIGH && b2 == HIGH && b1 == HIGH) {
    // Mengaktifkan running LED
    Serial.write('r');
  } else if (b8 == HIGH && b7 == LOW && b6 == LOW && b5 == LOW &&
             b4 == LOW && b3 == LOW && b2 == LOW && b1 == LOW) {
    // Mengaktifkan blinking LED
    Serial.write('b');
  }
  delay(20);
}

Slave

int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(led[i], OUTPUT);
  }
}

void loop() {
  if (Serial.available()) {
    message = Serial.read();

    if (message == 'r') {
      // Mengaktifkan running LED
      for (int i = 0; i < 8; i++) {
        digitalWrite(led[i], HIGH);
        delay(100);
        digitalWrite(led[i], LOW);
      }
    } else if (message == 'b') {
      // Mengaktifkan blinking LED
      for (int i = 0; i < 8; i++) {
        digitalWrite(led[i], HIGH);
      }
      delay(500);
      for (int i = 0; i < 8; i++) {
        digitalWrite(led[i], LOW);
      }
      delay(500);
    }
  }
}

4. Kondisi [Kembali]

4 Switch Pull-down dan 4 switch pull-up, 1 switch pull-down dan 4 switch pull-up akan mengaktifkan running LED, 4 switch pull-down dan 1 switch pull-up akan mengaktifkan Blinking LED.

Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi   klik disini
Listring Program master  klik disini
Listing Program Slave klik disini


Komentar