Percobaan I
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]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian Simulasi :
Pada percobaan pertama ini, dilakukan implementasi komunikasi UART antara dua modul Arduino. Modul pertama bertindak sebagai pengirim instruksi, sementara modul kedua berperan sebagai penerima dan pelaksana instruksi. Modul pengirim dilengkapi dengan delapan tombol pemicu sebagai input, sedangkan modul penerima memiliki delapan LED sebagai output. Koneksi antara keduanya dilakukan dengan menghubungkan pin RX pada modul pengirim ke pin TX pada modul penerima, dan sebaliknya, pin TX modul pengirim terhubung ke pin RX modul penerima. Pada awalnya, semua LED pada modul penerima menyala. Namun, ketika salah satu tombol pemicu ditekan pada modul pengirim, satu di antara LED pada modul penerima akan mati, dan proses tersebut berulang setiap kali tombol pemicu ditekan. Kedua modul Arduino ini diberi daya melalui kabel USB yang terhubung ke laptop untuk menjaga konsistensi daya selama percobaan.
Flowchart :
Master
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 tombolbool 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 LEDint 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);}
Flowchart :
Master
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);
}
Percobaan 1 (Komunikasi UART Menggunakan Arduino - sesuai rangkaian modul)
- HTML klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- Datasheet Arduino klik disini
- Datasheet PushButton klik disini
- Datasheet LED klik disini
- 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