Prak uP&uC : M3 TP1




Tugas Pendahuluan 1 Modul 3
(Percobaan 1 Kondisi 4)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Modul Arduino 


b) ESP32 


c) Dipswitch 


d) LED 
e) Seven Segment


Diagram Blok:







3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :








Prinsip Kerja :

Pada komponen "master", tombol-tombol yang terhubung berperan sebagai input yang terhubung langsung ke pin digital Arduino. Saat tombol ditekan, Arduino membaca statusnya dan memanfaatkan protokol UART untuk mengirimkan data yang mencerminkan tombol yang ditekan ke perangkat "slave". Di sisi "slave", mikrokontroler menerima data dari master melalui jalur UART. Data ini kemudian diurai untuk mengontrol LED yang terhubung ke pin digital Arduino. Jika master mendeteksi tiga tombol atau lebih yang ditekan, sinyal spesifik akan dikirim ke slave melalui UART untuk memicu efek kedipan pada tiga LED pertama.

Dengan demikian, dalam susunan ini, komunikasi antara master dan slave diselenggarakan melalui protokol UART, yang memungkinkan pengiriman data serial yang merepresentasikan instruksi dari master ke slave. Hal ini membolehkan sistem untuk merespons input pengguna pada perangkat master dengan mengontrol LED pada perangkat slave sesuai dengan instruksi yang diterima.

4. Flowchart dan Listing Program [Kembali]

Flowchart :









Listing Program :

MASTER:
#define PIN1 2
#define PIN2 3
#define PIN3 4
#define PIN4 5
#define PIN5 6
#define PIN6 7
#define PIN7 8
#define PIN8 9

bool status1, status2, status3, status4, status5, status6, status7, status8;

void setup() {
  Serial.begin(9600);
  // Set each pin as input with pull-up resistor enabled
  pinMode(PIN1, INPUT_PULLUP);
  pinMode(PIN2, INPUT_PULLUP);
  pinMode(PIN3, INPUT_PULLUP);
  pinMode(PIN4, INPUT_PULLUP);
  pinMode(PIN5, INPUT_PULLUP);
  pinMode(PIN6, INPUT_PULLUP);
  pinMode(PIN7, INPUT_PULLUP);
  pinMode(PIN8, INPUT_PULLUP);
}

void loop() {
  // Read each digital pin and store in corresponding status variables
  status8 = digitalRead(PIN8);
  status7 = digitalRead(PIN7);
  status6 = digitalRead(PIN6);
  status5 = digitalRead(PIN5);
  status4 = digitalRead(PIN4);
  status3 = digitalRead(PIN3);
  status2 = digitalRead(PIN2);
  status1 = digitalRead(PIN1);

  // Count the number of active (LOW) inputs
  int jumlahAktif = 0;
  if (status8 == LOW) jumlahAktif++;
  if (status7 == LOW) jumlahAktif++;
  if (status6 == LOW) jumlahAktif++;
  if (status5 == LOW) jumlahAktif++;
  if (status4 == LOW) jumlahAktif++;
  if (status3 == LOW) jumlahAktif++;
  if (status2 == LOW) jumlahAktif++;
  if (status1 == LOW) jumlahAktif++;

  // Actions based on the number of active inputs
  if (jumlahAktif == 1) {
    // Send the numbers from 1 to 8 as characters
    for (int i = 1; i <= 8; i++) {
      Serial.write(i + '0');
      delay(100);
    }
  } else if (jumlahAktif == 3) {
    // Send the character 'B' three times
    for (int i = 0; i < 3; i++) {
      Serial.write('B');
    }
    delay(500); // Delay between each set of actions
  }

  delay(20);
}

SLAVE:
int lampuPin[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Daftar pin LED

char input;

void setup() {
  Serial.begin(9600); // Inisialisasi komunikasi serial dengan kecepatan 9600 baud
  for (int i = 0; i < 8; i++) {
    pinMode(lampuPin[i], OUTPUT); // Mengatur semua pin LED sebagai output
  }
}

void loop() {
  // Memeriksa jika ada data yang masuk melalui Serial
  if (Serial.available()) {
    input = Serial.read(); // Membaca satu karakter dari Serial

    // Mengontrol LED berdasarkan input
    if (input >= '1' && input <= '8') {
      int indexLed = input - '1'; // Mengonversi input karakter menjadi indeks LED
      digitalWrite(lampuPin[indexLed], HIGH); // Menghidupkan LED yang sesuai
      delay(100); // Memberi jeda untuk waktu LED menyala
      digitalWrite(lampuPin[indexLed], LOW); // Mematikan LED
    }
    // Mengontrol LED untuk kondisi 'B'
    else if (input == 'B') {
      // Menyalakan dan mematikan tiga LED pertama
      for (int i = 0; i < 3; i++) {
        digitalWrite(lampuPin[i], HIGH); // Menghidupkan tiga LED pertama
      }
      delay(50); // Jeda untuk waktu LED menyala
      for (int i = 0; i < 3; i++) {
        digitalWrite(lampuPin[i], LOW); // Mematikan tiga LED pertama
      }
      delay(50); // Jeda untuk waktu LED mati
    }
  }
}

5. Kondisi [Kembali]

Percobaan 1 Kondisi 4 :  Semua Switch dalam kondisi Pull-up, 1 switch aktif mengaktifkan running led dari led 1 hingga 8 sementara 3 switch aktif mengaktifkan blinking led pada 3 led



6. Video Simulasi [Kembali]







7. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Button klik disini

Tidak ada komentar:

Posting Komentar

Among Us - Crewmates

  BAHAN PRESENTASI MATA KULIAH SISTEM DIGITAL 2023 OLEH : Raras Yulia Rosandi 2110951012 DOSEN PENGAMPU : Dr. Ir. Darwison, ST, MT JURUSAN T...