Tugas Pendahuluan 1




Tugas Pendahuluan 1 Modul 3
(Percobaan 1 Kondisi 3 )

1. Prosedur
[Kembali]
  • 1. Rangkai semua komponen sesuai kondisi yang dipilih
    2. Buat program di aplikasi arduino IDE
    3. Setelah selesai masukkan program ke arduino di proteus
    4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi

2. Hardware dan Diagram Blok [Kembali]

Hardware :

 1. Arduino Uno

      2. LED

      4. Resistor
      5. Power Supply
      6. Ground
      7. Dipswitch

Diagram Blok:



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :






Prinsip Kerja :

 Program Arduino pertama (Arduino 1) bertujuan untuk memantau keadaan beberapa saklar dan mengirimkan statusnya melalui Serial. Pertama-tama, dalam `setup()`, program menginisialisasi komunikasi Serial dengan baud rate 9600 dan mengatur semua pin saklar sebagai input pull-up. Kemudian, terdapat fungsi `penjumlahan()` yang dijalankan di dalam loop untuk menghitung jumlah saklar yang aktif. Jumlah saklar aktif disimpan dalam variabel `sw_on`. Dalam loop `loop()`, program memeriksa jumlah saklar aktif dan menentukan status saat ini (`current_state`). Jika semua saklar aktif, status diatur sebagai 'A'. Jika ada lima saklar aktif, status diatur sebagai 'B'. Jika tidak ada saklar yang aktif, status diatur sebagai 'a'. Program kemudian memeriksa apakah status saat ini berbeda dari status sebelumnya (`previous_state`). Jika iya, program mengirimkan status tersebut melalui Serial dan memperbarui `previous_state` dengan status saat ini.

Program Arduino kedua (Arduino 2) digunakan untuk mengontrol rangkaian LED berdasarkan pesan yang diterima melalui Serial. Dalam `setup()`, program juga menginisialisasi komunikasi Serial dengan baud rate 9600 dan mengatur semua pin LED sebagai output. Di dalam loop `loop()`, program memeriksa apakah ada data yang tersedia di Serial. Jika ada, program membaca pesan yang diterima. Jika pesan yang diterima berbeda dari pesan sebelumnya (`previous_message`), program memproses pesan tersebut. Jika pesan adalah 'A', program mengaktifkan LED 2-4 dan mematikan LED 5-7. Jika pesan adalah 'B', program mengaktifkan LED 3-7 secara berurutan dengan memberikan jeda 200ms di antara setiap LED. Jika pesan adalah 'a', program mematikan semua LED. Setelah memproses pesan, program memperbarui `previous_message` dengan pesan yang baru.


4. Flowchart dan Listing Program [Kembali]

Flowchart :




Listing Program :

ARDUINO 1
int sw[] = {2, 3, 4, 5, 6, 7}; // Pin untuk switch
int i, sw_on; // Variabel untuk iterasi dan menyimpan jumlah switch aktif
char previous_state = '\0'; // Variabel untuk menyimpan status sebelumnya

void setup() {
  Serial.begin(9600); // Memulai komunikasi dengan baud rate 9600
  for (i = 0; i < 6; i++) {
    pinMode(sw[i], INPUT_PULLUP); // Mengatur semua switch sebagai input pull-up
  }
}

void penjumlahan() {
  sw_on = 0;
  for (i = 0; i < 6; i++) {
    sw_on += digitalRead(sw[i]); // Menghitung jumlah switch yang aktif
  }
}

void loop() {
  penjumlahan(); // Memanggil fungsi untuk menghitung jumlah switch yang aktif
  char current_state; // Variabel untuk menyimpan status saat ini
  if (sw_on == 6) { // Jika semua switch aktif
    current_state = 'A';
  } else if (sw_on == 5) { // Jika ada 5 switch aktif
    current_state = 'B';
  } else {
    current_state = 'a'; // Jika tidak ada switch aktif
  }

  if (current_state != previous_state) { // Jika status saat ini berbeda dari status sebelumnya
    Serial.write(current_state); // Mengirim status saat ini melalui Serial
    previous_state = current_state; // Memperbarui status sebelumnya dengan status saat ini
  }
}

ARDUINO 2
int led[] = {2, 3, 4, 5, 6, 7}; // Pin untuk LED
int i;
char previous_message = '\0'; // Variabel untuk menyimpan pesan sebelumnya dari Serial

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

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

5. Kondisi [Kembali]

Percobaan 1 Kondisi 3
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 klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet DIP Switch klik disini
























BAHAN PRESENTASI MATA KULIAH JURUSAN TEKNIK ELEKTRO