TUGAS PENDAHULUAN 1
Percobaan 1 Kondisi 1
1. Rangkai semua komponen sesuai dengan kondisi yang dipilih
2. Buat program di aplikasi aduino 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]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
A. Gambar rangkaian sebelum disimulasikan
B. Gambar rangkaian setelah disimulasikan
C. Prinsip Kerja
Pada percobaan ini, rangkaian menggunakan komunikasi data UART untuk mentransfer data secara serial antara Arduino master dan Arduino slave. Pada Arduino master, terdapat dipswitch yang diatur dalam mode pull-down, dimana logika 1 menandakan aktif. Dipswitch ini berperan sebagai input untuk Arduino master. Setiap kali kondisi dipswitch berubah, Arduino master membaca status dipswitch menggunakan fungsi `digitalRead()` pada pin-pin yang sesuai dengan masing-masing dipswitch. Kemudian, dilakukan pengecekan jumlah dipswitch yang aktif dengan menghitung variabel `activeCount` yang merupakan jumlah dari status dipswitch yang aktif.
Apabila terdapat satu dipswitch yang aktif (`activeCount == 1`), maka Arduino master akan mengirimkan karakter 'A' melalui komunikasi serial. Jika terdapat empat atau lebih dipswitch yang aktif (`activeCount == 4`), maka Arduino master akan mengirimkan karakter 'B'. Untuk kondisi lainnya (`activeCount != 1 && activeCount != 4`), Arduino master mengirimkan karakter 'C'.
Pada Arduino slave, terdapat array pin LED yang akan diaktifkan sesuai dengan karakter yang diterima melalui komunikasi serial. Arduino slave selalu siap menerima data dengan memeriksa ketersediaan data pada Serial menggunakan `Serial.available()`. Jika ada data yang tersedia, Arduino slave membaca karakter yang diterima menggunakan `Serial.read()`. Jika karakter yang diterima adalah 'A', maka LED pertama akan dinyalakan. Jika karakter 'B' diterima, LED pertama, kedua, dan ketiga akan dinyalakan. Untuk karakter 'C', semua LED akan dimatikan.
4. Flowchart [Kembali]
A. Listing Program
// MASTER
#define DS1 9
#define DS2 8
#define DS3 7
#define DS4 6
#define DS5 5
#define DS6 4
#define DS7 3
#define DS8 2
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()
{
b1 = digitalRead(DS1);
b2 = digitalRead(DS2);
b3 = digitalRead(DS3);
b4 = digitalRead(DS4);
b5 = digitalRead(DS5);
b6 = digitalRead(DS6);
b7 = digitalRead(DS7);
b8 = digitalRead(DS8);
int activeCount = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8;
if (activeCount == 1)
{
Serial.write('A'); // Send 'A' when 1 dip switch is active
}
else if (activeCount == 4)
{
Serial.write('B'); // Send 'B' when 4 or more dip switches are active
}
else
{
Serial.write('C'); // Send 'C' when neither 'A' nor 'B'
}
delay(20);
}
// SLAVE
int led[] = {9, 8, 7, 6, 5, 4, 3, 2};
char message;
void setup()
{
Serial.begin(9600);
for (int i = 0; i < 8; i++)
{
pinMode(led[i], OUTPUT);
digitalWrite(led[i], LOW); // Initially turn off all LEDs
}
}
void loop()
{
if (Serial.available())
{
message = Serial.read();
if (message == 'A')
{
digitalWrite(led[0], HIGH); // Activate 1 LED for 'A' message
}
else if (message == 'B')
{
digitalWrite(led[0], HIGH);
digitalWrite(led[1], HIGH);
digitalWrite(led[2], HIGH); // Activate 3 LEDs for 'B' message
}
else if (message == 'C')
{
// Turn off all LEDs for 'C' message
for (int i = 0; i < 8; i++)
{
digitalWrite(led[i], LOW);
}
}
}
delay(20);
}
B. Flowchart
5. Kondisi [Kembali]
Percobaan 1 Kondisi 1:
Semua Switch dalam kondisi Pull-down, 1 switch mengaktifkan 1 led, sementara 4 switch mengaktifkan 3 led.
6. Video Simulasi [Kembali]
7. Download File [Kembali]
Download Rangkaian Simulasi klik disini
Download Rangkaian Simulasi klik disini
Download Html klik disini
Download Datasheet Arduino Uno disini
Download Video Simulasi klik disini
Tidak ada komentar:
Posting Komentar