Laporan Akhir 2 Modul 3 Percobaan 3


Percobaan III

Komunikasi I2C Menggunakan Arduino

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Variasikan kondisi keypad dan amati keluarannya pada LED
Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno
 
    2. Keypad

    3. LCD

    4. Kabel jumper

    5. Breadboard


Diagram Blok:
              



Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

     Pada rangkaian percobaan 3 kondisi 2 ini menggunakan dua arduino yaitu sebagai master dan slave. Dimana master bertanggung jawab sebagai pengirim data yang diinput dari keypad dan slave sebagai penerima data dan menampilkan pesan tersebut pada LCD. Kedua arduino berkomunikasi melalui I2C (Inter Integrated Circuit), yang memungkinkan perangkat mikrokontroler saling berkomunikasi secara digital melalui pin SDA dan pin SCL.
        Pada arduino master terhubung dengan inputan dari keypad untuk memasukkan karakter dimana karakter akan dikirimkam melalui jalur I2C ke slave. Dimana jika key 1 - 9 menampilkan karakter nomor 1-9 secara berurut di kolom LCD. Data dari arduino master diterima melalui jalur I2C dimana fungsi 'Wire.begin()' akan saling menghubungkan master dan slave secara otomatis. Pesan yang dikirim dari input keypad master akan ditampilkan pada LCD.
 
  • Arduino Master

  • Arduino Slave



Listing Program:
  • Arduino Master
//Master Arduino
#include <Keypad.h>
#include <Wire.h> 
 
const byte ROWS = 4;
const byte COLS = 3; 
 
char keys[ROWS][COLS] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'},
}; 
 
char rowPins[ROWS] = {9, 8, 7, 6};
char colPins[COLS] = {5, 4, 3};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
 Wire.begin(); // join i2c bus (address optional for master)
 
//byte x = 0;
void loop(){

 char key = keypad.getKey();

 if (key) {
 Wire.beginTransmission(4); // transmit to device #4
 Wire.write(key);
 Wire.endTransmission(); // stop transmitting
 }
}

  • Arduino Slave
 //Slave Arduino
#include <LiquidCrystal.h>
#include <Wire.h> 
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD 
 
void setup()
{
 lcd.begin(16, 2);
 Wire.begin(4); // join i2c bus with address #4
 Wire.onReceive(receiveEvent); // register event
 Serial.begin(9600); // start serial for output
}  
 
void loop()
{
 delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
 char c = Wire.read(); // receive byte as a character
 Serial.println(c); // print the character
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print(c);
 delay(100);
}

Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet lcd Klik disini

Laporan Akhir 1 Modul 3 Percobaan 1


Percobaan I

Komunikasi UART Menggunakan Arduino

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Variasikan kondisi switch dan amati keluarannya pada LED
Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno
 
    2. Dip Switch

    3. LED

    4. Kabel jumper

    5. Breadboard


Diagram Blok:
              


Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

    Pada rangkaian percobaan 1 ini menggunakan dua arduino yaitu sebagai master dan slave. Dimana master bertindak sebagai pengirim data dan slave sebagai penerima data dan pengendali led. Kedua arduino berkomunikasi melalui UART (Universal Asynchronous Receiver Transmitter), antarmuka komunikasi serial yang memungkinkan dua perangkat untuk berkomunikasi satu sama lain.
        Pada arduino master, data yang dikirimkan adalah representasi digital dari posisi switch. Dimana led akan menyala sesuai posisi switch yang diaktifkan, ketika switch 1 on maka led 1 menyala. Data dari arduino master dikirim melalui pin Tx (transmit) menuju pin Rx (receive) pada arduino slave dengan jalur komunikasi serial. Pada arduino slave, data yang diterima dari master melalui pin Rx diubah menjadi nilai digital 1 atau 0 untuk menghidupkan LED. Master mengirimkan instruksi digital melalui UART, dan slave menerjemahkan instruksi tersebut untuk menyalakan LED sesuai dengan pola yang telah ditentukan.
 
  • Arduino Master

  • Arduino Slave


Listing Program:
  • Arduino 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);

 // Hidupkan LED sesuai dengan tombol yang ditekan
 if (b8 == LOW)
 {
 Serial.write('8');
 }
 else if (b7 == LOW)
 {
 Serial.write('7');
 }
 else if (b6 == LOW)
 {
 Serial.write('6');
 }
 else if (b5 == LOW)
 {
 Serial.write('5');
 }
 else if (b4 == LOW)
 {
 Serial.write('4');
 }
 else if (b3 == LOW)
 {
 Serial.write('3');
 }
 else if (b2 == LOW)
 {
 Serial.write('2');
 }
 else if (b1 == LOW)
 {
 Serial.write('1');
 }
 delay(20);
}

  • Arduino Slave
 //SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;
void setup()
{
 Serial.begin(9600);
 for (int i = 0; i < 8; i++)
 {
 pinMode(led[i], OUTPUT);
 }
}
void loop()
{
 if (Serial.available())
{
 message = Serial.read();
 if (message == '1')
 {
 digitalWrite(led[0], 1);
 }
 else if (message == '2')
 {
 digitalWrite(led[1], 1);
 }
 else if (message == '3')
 {
 digitalWrite(led[2], 1);
 }
 else if (message == '4')
 {
 digitalWrite(led[3], 1);
 }
 else if (message == '5')
 {
 digitalWrite(led[4], 1);
 }
 else if (message == '6')
 {
 digitalWrite(led[5], 1);
 }
 else if (message == '7')
 {
 digitalWrite(led[6], 1);
 }
 else if (message == '8')
 {
 digitalWrite(led[7], 1);
 }
}
 delay(20);
 digitalWrite(led[0], 0);
 digitalWrite(led[1], 0);
 digitalWrite(led[2], 0);
 digitalWrite(led[3], 0);
 digitalWrite(led[4], 0);
 digitalWrite(led[5], 0);
 digitalWrite(led[6], 0);
 digitalWrite(led[7], 0);
}
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswitvh klik disini
Download Datasheet led Klik disini

LAPORAN AKHIR M4

MODUL 4 MIKROPROSESOR DAN MIKROKONTROLER [KEMBALI KE MENU SEBELUMNYA]   DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan ...