Tugas Pendahuluan Modul 3 (Percobaan 7)


Aplikasi I/O Sederhana untuk Kontrol Greenhouse 

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.


  • Flowchart






  • 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
 
 }
 }
}

4. Kondisi [Kembali]

Tanpa Kondisi




Komentar