TP MODUL 3 PERCOBAAN 1



Modul 3 Percobaan 1

1. Prosedur [Kembali]

  • 1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
    2. Buat program menggunakan Arduino IDE.
    3. Transfer program yang telah dibuat ke Arduino yang ada di Proteus.
    4. Uji coba program di simulasi sesuai dengan kondisi yang diinginkan.
    5. Proses selesai setelah uji coba berhasil dilakukan.

  • Hardware
 1. Arduino Uno

    2. Dip Switch

    3. LED

    4. Power supply

    5. Ground

    6. Resistor


  • Diagram Blok


    • Rangkaian Simulasi


    • Prinsip Kerja

    Pada rangkaian, terdapat dua Arduino yang berperan sebagai Master dan Slave dalam sebuah sistem komunikasi UART. Master Arduino bertanggung jawab untuk mengontrol input dari beberapa tombol dan mengirimkan karakter yang sesuai melalui koneksi serial (UART) ke Slave Arduino. Setiap tombol terhubung ke pin digital pada Master Arduino, di mana tombol-tombol tersebut memiliki aksi yang berbeda saat ditekan.

    Tombol-tombol yang terhubung ke pin digital pada Master Arduino dibagi menjadi dua kelompok: DS1 hingga DS4 terhubung sebagai tombol PULL DOWN, sementara DS5 hingga DS8 terhubung sebagai tombol PULL UP. Selama program berjalan, Master Arduino akan terus memantau status setiap tombol menggunakan fungsi digitalRead(). Ketika sebuah tombol ditekan, Master Arduino akan mengirimkan karakter yang sesuai melalui koneksi serial (UART) menggunakan fungsi Serial.write(). Karakter yang dikirimkan akan merepresentasikan tombol yang ditekan.

    Pada sisi Slave Arduino, perangkat akan menerima karakter yang dikirimkan oleh Master melalui koneksi serial (UART). Berdasarkan karakter yang diterima, Slave Arduino akan mengatur outputnya, yang dalam kasus ini adalah mengontrol LED-LED yang terhubung ke pinnya. Pin-pin yang terhubung ke tombol-tombol diatur sebagai input dengan resistansi pull-up atau pull-down yang sesuai.

    Pada setiap iterasi loop(), program di Slave Arduino akan memeriksa status tombol-tombol tersebut. Jika kondisi tertentu terpenuhi, seperti empat tombol dalam kondisi pull-down ditekan atau tidak ada tombol dalam kondisi pull-up yang ditekan, maka program akan menjalankan aksi tertentu. Contohnya, jika empat tombol pull-down ditekan, program akan menyalakan LED secara berurutan (running LED). Sementara jika tidak ada tombol pull-down atau pull-up yang ditekan, program akan membuat LED-LED tertentu berkedip (blinking LED). Jika tidak ada kondisi yang terpenuhi, maka semua LED akan dimatikan.

    Dengan prinsip ini, sistem memantau status tombol-tombol untuk mengatur tindakan yang sesuai terhadap LED-LED yang terhubung, memungkinkan pengendalian yang adaptif dan responsif berdasarkan input yang diberikan.


  • Flowchart
  • Arduino Master

  • Arduino Slave
  • 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

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 == HIGH)
  {
    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);
} 

//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
}


                                                   


6. 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.

7. Download File [Kembali]

HTML klik disini

- Rangkaian Simulasi  klik disini

- Gambar Simulasi  klik disini

- Video Demo  klik disini

- Listring Program  klik disini

- Datasheet:
     ARDUINO UNO klik disini
     LED   klik disini
    Switch   Klik disini
  















Tidak ada komentar:

Posting Komentar