Laporan Akhir 1 uP dan uC (Modul 3)




Percobaan 1
 Komunikasi UART Menggunakan Arduino


1. Prosedur
[Kembali]

1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.

2. Buat program menggunakan Arduino IDE.

3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.

4. Saat Proses Penguploadan porgram, lepas pin rx tx pada arduino master dengan arduino slave

5. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.

6. Selesai

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno



2. Push Button



3. LED



Diagram Blok :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :


Prinsip Kerja : 

 Percobaan 3 merupakan rangkaian komunikasi UART dengan arduino. Pada percobaan ini ada 2 buah arduino yang digunakan. arduino pertama berfungsi sebagai pemberi perintah (misal disebut master) dan arduino kedua berfungsi sebagai  penerima/ pengeksekusi perintah (misal disebut slave). arduino master terhubung input berupa 8 buah push button. sedangkan pada arduino slave, terdapat output berupa 8 buah LED. untuk komunikasi UART pada arduino, pin RX pada arduino master terhubung pada pin Tx arduino slave, dan pin Tx arduino master terhubung ke pin Rx arduino slave. Pada kondisi awal, semua LED dalam keadaan ON. ketika salah satu push button ditekan, maka outputnya berupa salah satu lampu LED akan mati dan begitu seterusnya untuk setipa push button. Untuk power pada arduino, setiap arduino dihubungkan ke kabel USB laptop.

4. Flowchart dan Listing Program [Kembali]

Flowchart :

Master


Slave


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);
}

5. Video Demo [Kembali]



6. Kondisi [Kembali]

Percobaan 1 (Komunikasi UART Menggunakan Arduino - sesuai rangkaian modul)

7. Download File [Kembali]

HTML                                klik disini
Video Percobaan                klik disini
Listing Program                 klik disini
Datasheet Arduino             klik disini
Datasheet PushButton        klik disini
Datasheet LED                   klik disini

Tidak ada komentar:

Posting Komentar

Modul 4 Praktikum uP dan uC

  [ MENUJU AKHIR ] [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Perc...