Tugas Pendahuluan 1 Modul 3
(Percobaan 1 Kondisi 3 )
- 1. Rangkai semua komponen sesuai kondisi yang dipilih2. Buat program di aplikasi arduino IDE3. Setelah selesai masukkan program ke arduino di proteus4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
2. Hardware dan Diagram Blok
[Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Program Arduino pertama (Arduino 1) bertujuan untuk memantau keadaan beberapa saklar dan mengirimkan statusnya melalui Serial. Pertama-tama, dalam `setup()`, program menginisialisasi komunikasi Serial dengan baud rate 9600 dan mengatur semua pin saklar sebagai input pull-up. Kemudian, terdapat fungsi `penjumlahan()` yang dijalankan di dalam loop untuk menghitung jumlah saklar yang aktif. Jumlah saklar aktif disimpan dalam variabel `sw_on`. Dalam loop `loop()`, program memeriksa jumlah saklar aktif dan menentukan status saat ini (`current_state`). Jika semua saklar aktif, status diatur sebagai 'A'. Jika ada lima saklar aktif, status diatur sebagai 'B'. Jika tidak ada saklar yang aktif, status diatur sebagai 'a'. Program kemudian memeriksa apakah status saat ini berbeda dari status sebelumnya (`previous_state`). Jika iya, program mengirimkan status tersebut melalui Serial dan memperbarui `previous_state` dengan status saat ini.
Program Arduino kedua (Arduino 2) digunakan untuk mengontrol rangkaian LED berdasarkan pesan yang diterima melalui Serial. Dalam `setup()`, program juga menginisialisasi komunikasi Serial dengan baud rate 9600 dan mengatur semua pin LED sebagai output. Di dalam loop `loop()`, program memeriksa apakah ada data yang tersedia di Serial. Jika ada, program membaca pesan yang diterima. Jika pesan yang diterima berbeda dari pesan sebelumnya (`previous_message`), program memproses pesan tersebut. Jika pesan adalah 'A', program mengaktifkan LED 2-4 dan mematikan LED 5-7. Jika pesan adalah 'B', program mengaktifkan LED 3-7 secara berurutan dengan memberikan jeda 200ms di antara setiap LED. Jika pesan adalah 'a', program mematikan semua LED. Setelah memproses pesan, program memperbarui `previous_message` dengan pesan yang baru.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
Listing Program :
ARDUINO 1
int sw[] = {2, 3, 4, 5, 6, 7}; // Pin untuk switch
int i, sw_on; // Variabel untuk iterasi dan menyimpan jumlah switch aktif
char previous_state = '\0'; // Variabel untuk menyimpan status sebelumnya
void setup() {
Serial.begin(9600); // Memulai komunikasi dengan baud rate 9600
for (i = 0; i < 6; i++) {
pinMode(sw[i], INPUT_PULLUP); // Mengatur semua switch sebagai input pull-up
}
}
void penjumlahan() {
sw_on = 0;
for (i = 0; i < 6; i++) {
sw_on += digitalRead(sw[i]); // Menghitung jumlah switch yang aktif
}
}
void loop() {
penjumlahan(); // Memanggil fungsi untuk menghitung jumlah switch yang aktif
char current_state; // Variabel untuk menyimpan status saat ini
if (sw_on == 6) { // Jika semua switch aktif
current_state = 'A';
} else if (sw_on == 5) { // Jika ada 5 switch aktif
current_state = 'B';
} else {
current_state = 'a'; // Jika tidak ada switch aktif
}
if (current_state != previous_state) { // Jika status saat ini berbeda dari status sebelumnya
Serial.write(current_state); // Mengirim status saat ini melalui Serial
previous_state = current_state; // Memperbarui status sebelumnya dengan status saat ini
}
}
ARDUINO 2
int led[] = {2, 3, 4, 5, 6, 7}; // Pin untuk LED
int i;
char previous_message = '\0'; // Variabel untuk menyimpan pesan sebelumnya dari Serial
void setup() {
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
for (i = 0; i < 6; i++) {
pinMode(led[i], OUTPUT); // Mengatur pin LED sebagai output
}
}
void loop() {
if (Serial.available()) { // Memeriksa apakah ada data yang tersedia di Serial
char message = Serial.read(); // Membaca pesan dari Serial
if (message != previous_message) { // Memeriksa apakah pesan yang diterima berbeda dari sebelumnya
previous_message = message; // Memperbarui previous_message dengan pesan yang baru
if (message == 'A') { // Jika pesan adalah 'A', aktifkan LED 2-4 dan matikan LED 5-7
for (i = 0; i < 3; i++) {
digitalWrite(led[i], HIGH); // Mengaktifkan semua LED dari 2-4
}
for (i = 3; i < 6; i++) {
digitalWrite(led[i], LOW); // Mematikan LED dari 5-7
}
} else if (message == 'B') { // Jika pesan adalah 'B', aktifkan LED 3-7 secara berurutan
for (i = 1; i < 6; i++) {
digitalWrite(led[i], HIGH); // Mengaktifkan running LED dari 3-7
delay(200); // Memberi jeda 200ms
digitalWrite(led[i], LOW); // Mematikan LED setelah jeda
}
} else if (message == 'a') { // Jika pesan adalah 'a', matikan semua LED
for (i = 0; i < 6; i++) {
digitalWrite(led[i], LOW); // Mematikan semua LED
}
}
}
}
}
Percobaan 1 Kondisi 3
Semua Switch dalam kondisi Pull-up, semua switch mengaktifkan 3 led sementara 5 switch mengaktifkan running led dari led kedua hingga ke enam
6. Video Simulasi
[Kembali]
7. Download File
[Kembali]
HTML klik disini
File Rangkaian klik disini
Video Percobaan klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet DIP Switch klik disini