Jumat, 26 April 2024

LA 1




Percobaan 1

Percobaan I

UART - Button & LED

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.
5. Selesai

2. Hardware dan diagram blok [Kembali]
      1. Hardware

a. arduino uno


b. Dipswitch


c. LED 
d. Jumper
      2. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Rangkain Simulasi



Prinsip Kerja
    Dalam percobaan ini, terdapat dua Arduino yang masing-masing berperan sebagai master dan slave. Arduino master bertugas sebagai pengirim perintah, sementara Arduino slave berfungsi sebagai penerima dan pelaksana perintah. Arduino master terhubung dengan delapan push button sebagai inputnya, sedangkan Arduino slave memiliki delapan LED sebagai outputnya. Kedua Arduino tersebut terhubung melalui komunikasi UART, di mana pin TX pada Arduino master terhubung ke pin RX pada Arduino slave, dan sebaliknya, membentuk saluran komunikasi dua arah. Ketika sistem diinisialisasi, Arduino master mulai memantau status dari delapan push button yang terhubung. Setiap kali satu tombol ditekan, Arduino master mengirimkan sinyal data melalui saluran UART dengan kode yang sesuai untuk menunjukkan tombol mana yang ditekan. Arduino slave, yang terus-menerus memonitor port serialnya, menerima data yang dikirimkan oleh Arduino master. Begitu menerima data, Arduino slave memahami instruksi yang terkandung dalamnya dan meresponsnya dengan mengontrol keadaan LED yang sesuai. Misalnya, jika Arduino master mengirimkan kode yang menunjukkan bahwa tombol kedua ditekan, Arduino slave akan mematikan LED kedua. Proses ini berlanjut, memungkinkan pengguna untuk mengendalikan keadaan LED pada Arduino slave melalui tombol-tombol pada Arduino master, yang menciptakan interaksi antara kedua perangkat mikrokontroler tersebut.

4. FlowChart [Kembali]

a. Listing Program 
Master 

// Definisikan koneksi pin untuk tombol-tombol
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9

// Inisialisasi variabel boolean untuk status tombol
bool b1,b2,b3,b4,b5,b6,b7,b8;

void setup() 
 // Mulai komunikasi serial dengan kecepatan 9600 bit per detik
 Serial.begin(9600);
 
 // Setel pin-pin digital sebagai input
 pinMode(DS1, INPUT);
 pinMode(DS2, INPUT);
 pinMode(DS3, INPUT);
 pinMode(DS4, INPUT);
 pinMode(DS5, INPUT);
 pinMode(DS6, INPUT);
 pinMode(DS7, INPUT);
 pinMode(DS8, INPUT);
}

void loop()
{
 // Baca status dari setiap tombol
 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);
 
 // Periksa status dari setiap tombol dan kirim nomor yang sesuai melalui Serial
 // LOW berarti tombol ditekan untuk DS8 karena konfigurasi resistor pull-up
 if (b8 == HIGH) 
 {
  Serial.write('8'); // Kirim '8' melalui Serial jika tombol 8 ditekan
 }
 else if (b7 == HIGH) // Untuk tombol lain, HIGH berarti tombol ditekan
 {
  Serial.write('7'); // Kirim '7' melalui Serial jika tombol 7 ditekan
 }
 else if (b6 == HIGH)
 {
  Serial.write('6'); // Kirim '6' melalui Serial jika tombol 6 ditekan
 }
 else if (b5 == HIGH)
 {
  Serial.write('5'); // Kirim '5' melalui Serial jika tombol 5 ditekan
 }
 else if (b4 == HIGH)
 {
  Serial.write('4'); // Kirim '4' melalui Serial jika tombol 4 ditekan
 }
 else if (b3 == HIGH)
 {
  Serial.write('3'); // Kirim '3' melalui Serial jika tombol 3 ditekan
 }
 else if (b2 == HIGH)
 {
  Serial.write('2'); // Kirim '2' melalui Serial jika tombol 2 ditekan
 }
 else if (b1 == HIGH)
 {
  Serial.write('1'); // Kirim '1' melalui Serial jika tombol 1 ditekan
 }
 
 delay(20); // Tunda sebentar untuk debouncing dan mencegah pembacaan berulang
}

Slave

// Definisi array untuk menyimpan nomor pin LED
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message; // Variabel untuk menyimpan pesan yang diterima

void setup() 
 Serial.begin(9600); // Memulai komunikasi serial dengan kecepatan 9600 bits per detik
 
 // Melakukan iterasi untuk setiap LED dan mengatur sebagai OUTPUT
 for (int i = 0; i < 8; i++)
 {
  pinMode(led[i], OUTPUT);
 }
}

void loop()
{
 if (Serial.available()) // Periksa apakah ada data yang tersedia untuk dibaca dari serial
{
 message = Serial.read(); // Membaca karakter yang diterima dari serial
 
 // Mengecek pesan yang diterima dan menyalakan LED yang sesuai
 if (message == '1')
 {
  digitalWrite(led[0], 1); // Menyalakan LED 1
 }
 else if (message == '2')
 {
  digitalWrite(led[1], 1); // Menyalakan LED 2
 }
 else if (message == '3')
 {
  digitalWrite(led[2], 1); // Menyalakan LED 3
 }
 else if (message == '4')
 {
  digitalWrite(led[3], 1); // Menyalakan LED 4
 }
 else if (message == '5')
 {
  digitalWrite(led[4], 1); // Menyalakan LED 5
 }
 else if (message == '6')
 {
  digitalWrite(led[5], 1); // Menyalakan LED 6
 }
 else if (message == '7')
 {
  digitalWrite(led[6], 1); // Menyalakan LED 7
 }
 else if (message == '8')
 {
  digitalWrite(led[7], 1); // Menyalakan LED 8
 }
}
delay(20); // Tunda sebentar

 // Mematikan semua LED setelah tunda
 digitalWrite(led[0], LOW);
 digitalWrite(led[1], LOW);
 digitalWrite(led[2], LOW);
 digitalWrite(led[3], LOW);
 digitalWrite(led[4], LOW);
 digitalWrite(led[5], LOW);
 digitalWrite(led[6], LOW);
 digitalWrite(led[7], LOW);
}


b. Flowchart

Master

Slave


5. Kondisi [Kembali]

Kondisi  : Percobaan 1 Sesuai modul. Ketika inputan Push button aktif maka salah satu LED akan tidak aktif

6. Video Simulasi [Kembali]




7. Download File [Kembali]

Download HTML Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Listing Code Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswitch  klik disini
Download Datasheet LED klik disini




















Tidak ada komentar:

Posting Komentar