Laporan Akhir 1 Modul 3




PERCOBAAN 3
KOMUNIKASI I2C MENGGUNAKAN ARDUINO

1. Prosedur
[Kembali]
1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
2. Buat program menggunakan Arduino IDE.
3. Transfer program yang telah dibuat ke Arduino yang ada di Proteus.
4. Uji coba program di simulasi sesuai dengan kondisi yang diinginkan.
5. Proses selesai setelah uji coba berhasil dilakukan.

2. Hardware dan Diagram Blok [Kembali]

a. Hardware



b. diagram blok


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

A. Rangkaian Simulasi



B. Prinsip Kerja

MASTER
Arduino master berfungsi untuk membaca input yang diberikan oleh keypad kemudian menerjemahkan input tersebut menjadi sebuah pesan sesuai dengan kondisi yang diberikan. berdasarkan kondisi, key A- D menampilkan huruf A- D secara berturut- turut. ketika key 1, 2, dan 3, ditekan, maka inputan tersebut akan diterjemahkan menjadi pesan "A". Jika key 4, 5, 6 ditekan, maka inputan tersebut akan ditulisan sebagai pesan "B". Ketika tombol yang ditekan adalah 7, 8, 9 maka inputan tersebut akan diterjemahkan menjadi pesan "C" sedangkan ketika input yang diberikan selain yang ditulisakn sbeelumnya, maka diterjemahkan menjadi pesan "D". Kemudian pesan tersebut akan dikirimkan oleh arduino master ke arduino slave melalui komunikasi I2C.

SLAVE

Arduino slvae berfungsi untuk menerima pesan yang dikirimkan oeh arduino master. Arduino salve dihubungkan dengan LCD sebagai output untuk menampilkan instruksi yang dibawa oelh pesan. Berdasarkan kondisi, huruf akan ditempilkan akan mengalami blinking pada kolom pertama. Ketika pesan yang diterima adalah A, maka LCD akan menampilkan huruf "A", ketika pesan yang diterima adalah B, maka LCD akan menampilkan huruf "B", ketika pesan yang diterima adalah C, maka LCD akan menampilkan huruf "C", sedangkan ketika pesan yang diterima adalah D, maka LCD akan menampilkan huruf "D". Pesan tersebut diterima oleh arduino slave melalui komunikasi I2C.



4. Flowcharth dan Listing Program [Kembali]

a. Flowcharth

Master


Slave



b. Listing Program

Master:

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

void loop() {
  char key = keypad.getKey();
  if (key) {
    char letter;
    if (key == '1' || key == '2' || key == '3') {
      letter = 'A';
    } else if (key == '4' || key == '5' || key == '6') {
      letter = 'B';
    } else if (key == '7' || key == '8' || key == '9') {
      letter = 'C';
    } else {
      letter = 'D';
    }
    Wire.beginTransmission(4); // transmit to device #4
    Wire.write(letter);
    Wire.endTransmission(); // stop transmitting
    delay(100); // Added delay for stability
  }
}

Slave:

#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD
char receivedLetter;
bool letterReceived = false;

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() {
  if (letterReceived) {
    for (int i = 0; i < 5; i++) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(receivedLetter);
      delay(300); // Wait for 300ms
      lcd.clear(); // Clear LCD
      delay(300); // Wait for another 300ms
    }
    letterReceived = false; // Reset letterReceived flag
  }
}

void receiveEvent(int howMany) {
  receivedLetter = Wire.read(); // Read the received character
  letterReceived = true; // Set the flag to indicate letter received
}


5. Kondisi [Kembali]

Percobaan 3 kondisi 5


5. Video Simulasi [Kembali]

                                         


7. Download File [Kembali]

Download HMTL Klik disini
Download Program Klik disini
Download Video Percobaan Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Keypad  klik disini
Download Datasheet LCD klik disini








Laporan Akhir 2 Modul 3




PERCOBAAN 1
KOMUNIKASI UART MENGGUNAKAN ARDUINO

1. Prosedur
[Kembali]

 1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.

2. Buat program menggunakan Arduino IDE.

3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.

4. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.

5. Selesai

2. Hardware dan Diagram Blok [Kembali]

Hardware:


Blok Diagram :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi:
                                             

Prinsip Kerja:

Pada percobaan ini digunakan dua buah arduino yang mana dihubungkan melalui komunikasi dengan jenis UART, kedua arduino mempunyai peran masing- masing. Arduino master berfungsi menerima input dari button dan menerjemahkannya menjadi pesan- pesan tertentu. arduino slave berfungsi menerima pesan dari arduino master dan mengontrol LED sesuai dengan pesan yang diterima tersebut. Pada komunikasi UART, kedua arduino dihubungkan melalui pin Tx dan Rx dari masing- masing arduino, pin Tx pada arduino master dihubungkan dengan pin Rx pada arduino slave, sedangkan pin Rx pada arduino master dihubungkan dengan pin Tx pada arduino slave sehingga pada hubungan UART terbentuk komunikasi dua arah. Contohnya, ketika button pertama ditekan, maka arduino master akan menerjemahkannya sebagai pesan atau data "1" kemudian dikirimkan kepada arduino slave, ketika arduino slave menerima pesan tersebut, maka arduino slave akan  mengaktifkan LED pada pin 2 (led pertama) begitu juga dengan kondisi lainnya yang dihubungkan antara input, arduino master, arduino slave, dan LED. 


4. Flowchart dan Listing Program [Kembali]

Flowchart :



Listing Program :

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

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()
{
  bool b8 = digitalRead(DS8);
  bool b7 = digitalRead(DS7);
  bool b6 = digitalRead(DS6);
  bool b5 = digitalRead(DS5);
  bool b4 = digitalRead(DS4);
  bool b3 = digitalRead(DS3);
  bool b2 = digitalRead(DS2);
  bool 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
// 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); // moved delay inside the if block
    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);
  }
}

5. Kondisi [Kembali]

Percobaan 1 pada Modul 3

6. Video Demo [Kembali]]



7. Download File [Kembali]

Download HTML                   klik disini
Download Video Percobaan    klik disini
Download Listing Program     klik disini
Download datasheet arudino   klik disini
Download Datasheet Button   klik disini
Download Datasheet LED      klik disini


MODUL 4 PRATIKUM uP dan uC

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI     1. Pendahuluan     2. Tujuan     3. Alat dan Bahan     4. Dasar Teori     5. Percob...