NIM : 2110951004

.

Senin, 06 Mei 2024

M3_TP 1_Prak UpUc




1. Prosedur
[Kembali]
  1. Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
  2. Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
  3. Verifikasi atau upload program pada arduino. 
  4. Jalankan atau uji coba rangkaian yang telah dibuat sesuai dengan kondisi.
  5. Perhatikan rangkaian dan output apakah sesuai dengan kondisi.
  6. Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok [Kembali]
a. Hardware
 
1. Arduino Uno
 Spesifikasi:

2. Dipswitch
 
Spesifikasi:

3. RESISTOR

4. LED


b. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
    
    a). Rangkaian Simulasi

    b). Prinsip Kerja

Program di atas merupakan contoh implementasi komunikasi UART antara dua Arduino, di mana satu Arduino berperan sebagai master dan yang lainnya sebagai slave. Berikut prinsip kerjanya:

Master (Arduino pertama):
1. Mendeklarasikan pin untuk saklar sebagai input pull-up.
2. Membaca status saklar setiap pin secara berurutan.
3. Mengirim status saklar ke slave melalui komunikasi serial UART setiap 500 milidetik.

Slave (Arduino kedua):
1. Mendeklarasikan pin untuk LED sebagai output.
2. Menerima status saklar dari master melalui komunikasi serial UART.
3. Mengatur LED berdasarkan status saklar yang diterima, sesuai dengan kondisi:
   - Jika semua saklar aktif, LED1, LED2, dan LED3 menyala.
   - Jika saklar kedua hingga keenam aktif, LED2 hingga LED6 akan menyala secara berurutan dengan delay 500 milidetik.

Prinsip kerja komunikasi UART pada kedua Arduino ini memungkinkan pertukaran data antara keduanya, di mana Arduino master mengirimkan data saklar ke slave, dan slave mengontrol LED berdasarkan data yang diterima.

4. Flowchart dan Listing Program [Kembali]

    a). Flowchart

Master
Slave

    b). Listing Program

Master

const int SWITCH1_PIN = 2;
const int SWITCH2_PIN = 3;
const int SWITCH3_PIN = 4;
const int SWITCH4_PIN = 5;
const int SWITCH5_PIN = 6;
const int SWITCH6_PIN = 7;
//mendeklarasikan variabel konstanta pada pin arduino

void setup() { //pendefinisian fungsi setup, yang dijalankan sekali
  Serial.begin(9600); //inisialisasi komunikasi serial

  pinMode(SWITCH1_PIN, INPUT_PULLUP);
  pinMode(SWITCH2_PIN, INPUT_PULLUP);
  pinMode(SWITCH3_PIN, INPUT_PULLUP);
  pinMode(SWITCH4_PIN, INPUT_PULLUP);
  pinMode(SWITCH5_PIN, INPUT_PULLUP);
  pinMode(SWITCH6_PIN, INPUT_PULLUP);
  //konfigurasi pin saklar, dengan aktif pullup
}

void loop() {
  int switchState1 = digitalRead(SWITCH1_PIN);
  int switchState2 = digitalRead(SWITCH2_PIN);
  int switchState3 = digitalRead(SWITCH3_PIN);
  int switchState4 = digitalRead(SWITCH4_PIN);
  int switchState5 = digitalRead(SWITCH5_PIN);
  int switchState6 = digitalRead(SWITCH6_PIN);
  //digitalread untuk membaca keadaan saklar, kemudian disimpan dalam variabel switchstate dalam bentuk high/low

  Serial.print(switchState1);
  Serial.print(switchState2);
  Serial.print(switchState3);
  Serial.print(switchState4);
  Serial.print(switchState5);
  Serial.println(switchState6);

  delay(500);
}

Slave

const int LED1_PIN = 2;
const int LED2_PIN = 3;
const int LED3_PIN = 4;
const int LED4_PIN = 5;
const int LED5_PIN = 6;
const int LED6_PIN = 7;

void setup() {
  Serial.begin(9600);

  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  pinMode(LED3_PIN, OUTPUT);

 
  pinMode(LED4_PIN, OUTPUT);
  pinMode(LED5_PIN, OUTPUT);
  pinMode(LED6_PIN, OUTPUT);
}

void loop() {
  if (Serial.available() >= 6) {//mengecek apakah ada setidaknya enam byte data yang tersedia untuk dibaca dari serial
    int switchState1 = Serial.read() - '0';
    int switchState2 = Serial.read() - '0';
    int switchState3 = Serial.read() - '0';
    int switchState4 = Serial.read() - '0';
    int switchState5 = Serial.read() - '0';
    int switchState6 = Serial.read() - '0';
    //keadaan saklar dibaca menggunakan serial.read dan dikonfersi dari ASCII menjadi integer dengan mengurangkan nol

    if (switchState1 && switchState2 && switchState3 && switchState4 && switchState5 && switchState6) {
      digitalWrite(LED1_PIN, HIGH);
      digitalWrite(LED2_PIN, HIGH);
      digitalWrite(LED3_PIN, HIGH);
    } else {
      digitalWrite(LED1_PIN, LOW);
      digitalWrite(LED2_PIN, LOW);
      digitalWrite(LED3_PIN, LOW);
    }

    if (!switchState1 && switchState2 && switchState3 && switchState4 && switchState5 && switchState6) {
      for (int i = LED2_PIN; i <= LED6_PIN; i++) {
        digitalWrite(i, HIGH);
        delay(500);
        digitalWrite(i, LOW);
      }
    }
  }
}

5. Kondisi [Kembali]
    Semua Switch dalam kondisi Pull-up, semua switch mengaktifkan 3 led sementara 5 switch mengaktifkan running led dari led kedua hingga ke enam

6. Video Simulasi [Kembali]


7. Download File [Kembali]
File Rangkaian 
Share:

0 komentar:

Posting Komentar

Blogger news

Blogger templates