Tugas Pendahuluan 1 Modul 3
(Percobaan 1 Kondisi 4)
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.
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]
Hardware :
1. Arduino Uno
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian Simulasi
Prinsip Kerja:
Dalam percobaan ini, daya menggunakan dip switch pull up sebagai input. Saya juga menggunakan LED sebagai output. Dua modul Arduino digunakan, di mana Arduino pertama bertindak sebagai master dan Arduino kedua bertindak sebagai slave.
Sebagai MASTER:
Arduino master bertanggung jawab untuk memantau status masukan dari dipswitch dan mengirim pesan ke Arduino slave sesuai dengan kondisi yang terdeteksi. Ada delapan tombol switch yang terhubung ke pin input Arduino master, di mana delapan tombol dalam keadaan pull-up. Hal ini memungkinkan setiap tombol switch untuk menentukan logika 1 atau 0 pada pin inputnya. Arduino master secara terus-menerus memeriksa status tombol menggunakan fungsi `digitalRead()` pada setiap pin input. Jika status tombol memenuhi persyaratan untuk mengaktifkan running LED (satu tombol pull-up), Arduino master akan mengirimkan pesan '1' melalui komunikasi serial. Sedangkan jika status tombol memenuhi persyaratan untuk mengaktifkan blinking LED (tiga tombol pull-up), Arduino master akan mengirimkan pesan '3' melalui komunikasi serial.
Sebagai SLAVE:
Pada sisi Arduino slave, tugasnya adalah menerima pesan yang dikirim oleh Arduino master dan mengontrol LED sesuai dengan pesan yang diterima. Ada delapan LED yang terhubung ke pin output Arduino slave yang akan dikendalikan berdasarkan pesan yang diterima. Arduino slave akan terus memantau komunikasi serial untuk menerima pesan baru dari Arduino master. Ketika pesan '1' diterima, Arduino slave akan mengaktifkan running LED dengan mengatur LED untuk menyala dan mematikan secara bergantian. Sebaliknya, ketika pesan '3' diterima, Arduino slave akan mengaktifkan blinking LED dengan membuat LED berkedip secara bergantian antara nyala dan mati. Dengan cara ini, Arduino master dan slave dapat berinteraksi dan mengendalikan LED sesuai dengan input dari tombol yang ditekan pada Arduino master, memberikan tanggapan melalui LED.
4. Flowchart dan Listing Program [Kembali]
Flowchart
MASTER
Listing Program:
MASTER
//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
bool b1, b2, b3, b4, b5, b6, b7, b8;
void setup()
{
Serial.begin(9600);
pinMode(DS1, INPUT_PULLUP);
pinMode(DS2, INPUT_PULLUP);
pinMode(DS3, INPUT_PULLUP);
pinMode(DS4, INPUT_PULLUP);
pinMode(DS5, INPUT_PULLUP);
pinMode(DS6, INPUT_PULLUP);
pinMode(DS7, INPUT_PULLUP);
pinMode(DS8, INPUT_PULLUP);
}
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);
// Menghitung jumlah button yang ditekan
int pressedCount = 0;
pressedCount = b8 + b7 + b6 + b5 + b4 + b3 + b2 + b1;
if (pressedCount == 7){
Serial.write('1');
}
else if (pressedCount == 5){
Serial.write('3');
}
else{
Serial.write('0');
}
delay(20);
}
SLAVE
//SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup()
{
Serial.begin(9600);
for (int i = 0; i < 8; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
char l = 0;
char message[3] = {'0', '0', '0'};
while (l < 4) {
if (Serial.available()) {
message[l] = Serial.read();
l += 1;
}
}
if (message[0] == '3') {
for (int i = 3; i <= 7; i++) {
digitalWrite(led[i], 0); // Menyalakan LED saat ini
}
digitalWrite(led[0], 1);
digitalWrite(led[1], 1);
digitalWrite(led[2], 1);
delay(500);
digitalWrite(led[0], 0);
digitalWrite(led[1], 0);
digitalWrite(led[2], 0);
delay(500);
}
if (message[1] == '1')
{
for (int i = 0; i <= 7; i++) {
digitalWrite(led[i], 1); // Menyalakan LED saat ini
delay(500); // Tunggu 500 ms
digitalWrite(led[i], 0); // Matikan LED saat ini sebelum pindah ke LED berikutnya
}
}
if (message[2] == '0') {
for (int i = 0; i <= 7; i++) {
digitalWrite(led[i], 0); // Menyalakan LED saat ini
}
}
}
5. Kondisi [Kembali]
Percobaan 1 Kondisi 4
Semua switch dalam kondisi pull-up, 1 swicth mengaktifkan running led dari led 1 hingga 8, sementara 3 switch aktif mengaktifkan blinkin led pada 3 led
6. Video Simulasi [Kembali]
Datasheet LED Download
Datahseet resistor Download
Datasheet Dipswitch Download
Tidak ada komentar: