Laporan Akhir 2 Modul 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 master dan arduino slave
    • Pilih tombol yang ingin ditekan dan amati keluarannya pada LCD



Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno

    2. Keypad


    3. LCD


    4. Kabel jumper

    5. Breadboard


   


Diagram Blok:


  •         Prinsip Kerja:

         Dalam percobaan 3 kondisi 2, digunakan dua Arduino yang berperan sebagai master dan slave. Arduino master bertugas mengirim data yang dimasukkan melalui keypad, sementara Arduino slave bertugas menerima data tersebut dan menampilkannya di LCD. Komunikasi antar kedua Arduino dilakukan melalui protokol I2C (Inter Integrated Circuit), yang memfasilitasi komunikasi digital antara mikrokontroler melalui pin SDA dan SCL.

    Pada Arduino master, karakter yang dimasukkan dari keypad dikirim ke Arduino slave melalui I2C. Saat tombol 1 hingga 9 pada keypad ditekan, karakter tersebut akan ditampilkan berurutan sebagai angka 1 hingga 9 pada LCD. Arduino master dan slave terhubung secara otomatis melalui fungsi 'Wire.begin()', dan setiap pesan yang dikirimkan dari keypad pada master akan ditampilkan pada LCD oleh slave.
     
Flowchart:
    Master

        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);
}



᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Download Datasheet ARDUINO UNO   klik disini
᭒ Download Datasheet LCD   klik disini
᭒ Donwload Datasheet Keypad   Klik disini












 


Laporan Akhir 1 Modul 3


Percobaan 1

Komunikasi UART Menggunakan Arduino


1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program master dan slave ke arduino
  • Amati keluarannya



Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno

    2. DIP Switch

    3. LED



    4. Kabel jumper

    5. Breadboard


   


Diagram Blok:



  •         Pada percobaan ini, dua Arduino saling berkomunikasi menggunakan UART, dimana dipswitch berfungsi sebagai input dan LED sebagai output. Saat dipswitch ditekan, yang berperan sebagai pulldown, Arduino master menerima perintah dan kemudian mengirimkannya ke Arduino slave melalui jalur komunikasi serial dari pin Tx (transmit) ke pin Rx (receive). Arduino slave kemudian mengonversi data yang diterima dari pin Rx menjadi sinyal digital (1 atau 0) untuk mengaktifkan LED. Instruksi digital dikirim oleh master melalui UART dan diinterpretasikan oleh slave untuk menyalakan LED sesuai dengan pola yang ditetapkan.
     
Flowchart:
        Master
         Slave

Listing Program:

//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); } //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); }

6. Kondisi [Kembali]

    Kondisi percobaan 1 sesuai modul 3

7. Download File [Kembali]

᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Datasheet Arduino ↠ klik disini
᭒ Datasheets Motor Stepper ↠ klik disini
᭒ Datasheets Push Button ↠ klik disini
᭒ Datasheest ULN2003A ↠ klik disini