TP 1 M3

    1. Arduino Uno

    2. Dip Switch

    3. LED

    4. Power supply

    5. Ground

    6. Resistor


Diagram Blok:

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Variasikan kondisi switch dan amati keluarannya pada LED


                        RANGKAIAN SIMULASI

Percobaan 1 Kondisi 3: Pengendalian LED dengan Arduino Master dan Slave

Percobaan ini menggunakan dua Arduino, satu sebagai master dan satu sebagai slave, untuk mengendalikan LED berdasarkan posisi saklar. Arduino master bertindak sebagai pengirim data, sedangkan Arduino slave menerima data dan mengendalikan LED.

Komunikasi:

  • Komunikasi antara Arduino master dan slave menggunakan UART (Universal Asynchronous Receiver Transmitter), yaitu antarmuka komunikasi serial yang memungkinkan dua perangkat untuk saling terhubung.
  • Data dari Arduino master dikirim melalui pin Tx (transmit) ke pin Rx (receive) pada Arduino slave melalui jalur komunikasi serial (UART).

Fungsi:

  • Arduino Master:
    • Membaca posisi 8 saklar dengan pull-up resistor.
    • Mengubah posisi saklar menjadi data digital.
    • Mengirim data digital ke Arduino slave melalui UART.
  • Arduino Slave:
    • Menerima data digital dari Arduino master melalui UART.
    • Mengubah data digital menjadi nilai digital 1 atau 0.
    • Mengendalikan LED berdasarkan nilai digital:
      • 3 LED menyala jika semua saklar pull-up aktif.
      • LED "running" menyala jika 4 saklar pull-up aktif.

4. Flowchart dan Listing Program [Kembali]

    Flowchart:
  • Arduino Master
  • Arduino Slave

    Listing Program:
  • Arduino Master 
int sw[] = {2, 3, 4, 5, 6, 7}; // Pin untuk switch//deklarasi array interjer bernama sw=inisialisasi daftar nomer pin int i, sw_on; //i=penghitung loop char previous_state = '\0'; // menghindari pengiriman data berulang void setup() { Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600 for (i = 0; i < 6; i++) { pinMode(sw[i], INPUT_PULLUP); // Mengatur semua switch sebagai input pull-up (high jika terbuka, low jika tertutup) } } void penjumlahan() { sw_on = 0; // mengakumulasikan keadaan gabungan dari switch for (i = 0; i < 6; i++) { // iterasi untuk semua switch sw_on += digitalRead(sw[i]); // membaca keadaan digital (HIGH atau LOW) dari pin saat ini berdasarkan switch yang terhubung dengannya. } } void loop() { penjumlahan(); // Memanggil fungsi penjumlahan untuk mendapatkan keadaan switch char current_state; // Mendeklarasikan variabel karakter untuk menyimpan keadaan saat ini if (sw_on == 6) { // Jika semua switch aktif current_state = 'A'; // Menetapkan keadaan saat ini sebagai 'A' } else if (sw_on == 5) { // Jika ada 5 switch aktif current_state = 'B'; // Menetapkan keadaan saat ini sebagai 'B' } else { current_state = 'a'; // Menetapkan keadaan saat ini sebagai 'a' jika tidak ada 5 atau 6 switch aktif } if (current_state != previous_state) { // Memeriksa apakah keadaan saat ini berbeda dengan keadaan sebelumnya Serial.write(current_state); // Mengirim keadaan saat ini melalui komunikasi serial previous_state = current_state; // Memperbarui keadaan sebelumnya dengan keadaan saat ini } }

  • Arduino Slave
int led[] = {2, 3, 4, 5, 6, 7}; // Pin untuk LED
int i; // penghitung loop
char previous_message = '\0';

void setup() {
  Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
  for (i = 0; i < 6; i++) {
    pinMode(led[i], OUTPUT); // Mengatur semua pin LED sebagai output menggunakan pinMode().
  }
}

void loop() {
  if (Serial.available()) { // Memeriksa apakah ada data yang tersedia di port serial
    char message = Serial.read(); // Membaca karakter yang diterima dari port serial
    if (message != previous_message) { // Memeriksa apakah pesan yang diterima berbeda dari pesan sebelumnya
      previous_message = message; // Memperbarui pesan sebelumnya dengan pesan yang baru diterima
      if (message == 'A') { // Jika pesan adalah 'A'
        for (i = 0; i < 3; i++) {
          digitalWrite(led[i], HIGH); // Mengaktifkan LED dari pin 2-4
        }
        for (i = 3; i < 6; i++) {
          digitalWrite(led[i], LOW); // Mematikan LED dari pin 5-7
        }
      } else if (message == 'B') { // Jika pesan adalah 'B'
        for (i = 1; i < 6; i++) {
          digitalWrite(led[i], HIGH); // Mengaktifkan running LED dari pin 3-7
          delay(500); // Memberi jeda 500 milidetik
          digitalWrite(led[i], LOW); // Mematikan LED yang sebelumnya diaktifkan
        }
      } else if (message == 'a') { // Jika pesan adalah 'a'
        for (i = 0; i < 6; i++) {
          digitalWrite(led[i], LOW); // Mematikan semua LED
        }
      }
    }
  }
}

Semua switch dalam kondisi pull-up, semua switch mengaktifkan 3 led sementara 5 switch mengaktifkan running led dari ke dua hingga ke 6






Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disiniKlik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet LED klik disini
Download Listing Program Master klik disini

Download Listing Program Slave klik disini


















Komentar

Postingan populer dari blog ini