Tugas Pendahuluan 1 Modul 3 Percobaan 1


Percobaan I

UART - Button & LED

1. Prosedur [Kembali]

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

2. Hardware dan Diagram Blok [Kembali]

    1. Arduino Uno

    2. Dip Switch

    3. LED

    4. Power supply

    5. Ground

    6. Resistor


Diagram Blok:



Rangkaian Simulasi.

Prinsip Kerja:

    Pada rangkaian percobaan 1 kondisi 7 ini menggunakan dua arduino yaitu sebagai master dan slave. Dimana master bertindak sebagai pengirim data dan slave sebagai penerima data dan pengendali led. Kedua arduino berkomunikasi melalui UART (Universal Asynchronous Receiver Transmitter), antarmuka komunikasi serial yang memungkinkan dua perangkat untuk berkomunikasi satu sama lain.
        Pada arduino master, data yang dikirimkan adalah representasi digital dari posisi switch dengan 4 switch dalam pull-down & 4 switch dalam pull-up. Dimana jika 3 switch pull-down dan 4 switch pull up mengaktifkan running led dan jika 3 switch pull down dan 0 switch pull up mengaktifkan blinking led. Data dari arduino master dikirim melalui pin Tx (transmit) menuju pin Rx (receive) pada arduino slave dengan jalur komunikasi serial. Pada arduino slave, data yang diterima dari master melalui pin Rx diubah menjadi nilai digital 1 atau 0 untuk menghidupkan LED. Master mengirimkan instruksi digital melalui UART, dan slave menerjemahkan instruksi tersebut untuk menyalakan LED sesuai dengan pola yang telah ditentukan.
 
  • Arduino Master

  • Arduino Slave


    Listing Program:
  • Arduino Master 
//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

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

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 tombol yang ditekan
  if (b8 == LOW)
  {
    Serial.write('8');
  }
  else if (b7 == LOW)
  {
    Serial.write('7');
  }
  else if (b6 == LOW)
  {
    Serial.write('6');
  }
  else if (b5 == LOW)
  {
    Serial.write('5');
  }
  else if (b4 == LOW)
  {
    Serial.write('4');
  }
  else if (b3 == LOW)
  {
    Serial.write('3');
  }
  else if (b2 == LOW)
  {
    Serial.write('2');
  }
  else if (b1 == LOW)
  {
    Serial.write('1');
  }
  delay(20);
}

  • Arduino Slave

 //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()
{
  bool ds1_to_3_active = digitalRead(2) == LOW && digitalRead(3) == LOW && digitalRead(4) == LOW;
  bool ds5_to_8_active = digitalRead(5) == HIGH && digitalRead(6) == HIGH && digitalRead(7) == HIGH && digitalRead(8) == HIGH;

  if (ds1_to_3_active && !ds5_to_8_active)
  {
    // Turn off blinking LEDs
    digitalWrite(led[7], LOW);
    digitalWrite(led[8], LOW);
    digitalWrite(led[9], LOW);

    // Running LEDs
    for (int i = 2; i <= 6; i++)
    {
      digitalWrite(led[i], HIGH);
      delay(100); // Adjust the delay time as needed for the running LED effect
      digitalWrite(led[i], LOW);
    }
  }
  else if (ds1_to_3_active && ds5_to_8_active)
  {
    // Turn off running LEDs
    for (int i = 2; i <= 6; i++)
    {
      digitalWrite(led[i], LOW);
    }

    // Blinking LEDs
    for (int j = 7; j <= 9; j++) // Blink LEDs 7, 8, 9
    {
      digitalWrite(led[j], HIGH);
    }
    delay(500); // LEDs on for 500ms
    for (int j = 7; j <= 9; j++) // Blink LEDs 7, 8, 9
    {
      digitalWrite(led[j], LOW);
    }
    delay(500); // LEDs off for 500ms
  }
  else
  {
    // Turn off all LEDs if no condition is met
    for (int i = 2; i <= 9; i++) // Iterate over LEDs 2 to 9
    {
      digitalWrite(led[i], LOW);
    }
  }

  delay(20); // Adjust the delay time as needed
}


5. Kondisi [Kembali]

   4 switch dalam pull-down & 4 switch dalam pull-up, 3 switch pull-down dan 4 switch pull up mengaktifkan running led, 3 switch pull down dan 0 switch pull up mengaktifkan blinking led.

᭒ HTML↠ klik disini
Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Download Datasheet ARDUINO UNO   klik disini
᭒ Download Datasheet LED   klik disini
᭒ Donwload Datasheet Switch   Klik disini




Tidak ada komentar:

Posting Komentar

Bahan Presentasi Untuk Matakuliah Sistem Digital 2023 OLEH: Fadhila Amanda 2110952031 Dosen Pengampu: Dr. Darwison,MT Referensi: a. Anil K. ...