Tugas Pendahuluan Modul 3 (Percobaan 7)
1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan sesuai kondisi
- Rangkaian
- Prinsip Kerja
Pada rangkaian ini digunakan dua buahArduino Uno (Atmega328) yang masing-masing akan berperan sebagai Slave dan Masternya. Dimana Arduino yang berperan sebgai master akan terhubung dengan input berupa Seriral Monitor yang nanti akan memberikan opsi perintah, opsi perintah tersenut nantinya akan akan tersampaikan ke Arduino yang berperan sebagai Slave yang terhubung dengan Output berupa tigas buah LED berbeda warna.
Jenis komunikasi data yang digunakan oleh Arduino adalah I2C, Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang
membawa informasi data antara I2C dengan pengontrolnya.
- Listing Program
//slave
#include <Wire.h>
#define RED 9
#define GREEN 8 //deklarasi pin LED
#define BLUE 7
float x=0;
void setup(){
pinMode(RED,OUTPUT);
pinMode(GREEN,OUTPUT); // Mengatur pin LED sebagai output
pinMode(BLUE,OUTPUT);
Wire.begin(9); // Memulai komunikasi I2C dengan alamat slave 9
Wire.onReceive(receiveEvent); // Menetapkan fungsi receiveEvent() untuk menangani data yang diterima
}
void receiveEvent(int bytes){
x=Wire.read(); // Membaca data yang diterima dari master dan menyimpannya ke variabel x
}
void loop(){
//applying conditions
if (x=='R'){ // Nyalakan LED MERAH
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
digitalWrite(BLUE,LOW);
}
if (x == 'G'){ // Nyalakan LED HIJAU
digitalWrite(RED,LOW);
digitalWrite(GREEN,HIGH);
digitalWrite(BLUE,LOW);
}
if (x == 'B'){ // Nyalakan LED BIRU
digitalWrite(RED,LOW);
digitalWrite(GREEN,LOW);
digitalWrite(BLUE,HIGH);
}
if (x == '0'){ // Matikan semua LED
digitalWrite(RED,LOW);
digitalWrite(GREEN,LOW);
digitalWrite(BLUE,LOW);
}
if (x == 'F'){ // Nyalakan LED MERAH dan HIJAU
digitalWrite(RED,HIGH);
digitalWrite(GREEN,HIGH);
digitalWrite(BLUE,LOW);
}
if (x == 'L'){ // Nyalakan LED HIJAU dan BIRU
digitalWrite(RED,LOW);
digitalWrite(GREEN,HIGH);
digitalWrite(BLUE,HIGH);
}
if (x == 'M'){ // Nyalakan LED MERAH dan BIRU
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
digitalWrite(BLUE,HIGH);
}
if (x == 'H'){ // Nyalakan semua LED
digitalWrite(RED,HIGH);
digitalWrite(GREEN,HIGH);
digitalWrite(BLUE,HIGH);
}
}
//master
#include <Wire.h>
char incomingByte; //menyimpan byte data yang diterima dari Serial Monitor
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin(); //Menginisialisasi komunikasi I2C (Wire) pada Arduino
Serial.println("Welcome to my program");
// Print perintah untuk mengontrol lampu LED
Serial.println("For RED R");
Serial.println("For GREEN G");
Serial.println("For BLUE B");
Serial.println("For RED GREEN F");
Serial.println("For GREEN BLUE L");
Serial.println("For RED BLUE M");
Serial.println("All High H");
Serial.println("For all off just 0");
}
void loop() {
// put your main code here, to run repeatedly:
Wire.beginTransmission(9); //Memulai transmisi I2C ke alamat slave dengan alamat 9
if (Serial.available()){ // Jika ada data tersedia di Serial Monitor
while(Serial.available()>0){ // Selama masih ada data tersedia
incomingByte=Serial.read(); // Membaca data dari Serial Monitor
Wire.write(incomingByte); // Mengirim data ke perangkat slave melalui I2C
Serial.println(incomingByte); // Menampilkan data yang dikirim ke Serial Monitor
Wire.endTransmission(); // Mengakhiri transmisi I2C
}
}
}
Tanpa Kondisi
Komentar
Posting Komentar