Minggu, 28 April 2024

LA 2 modul 3



MODUL 3
PERCOBAAN 4
1. Prosedur
[Kembali]

        1. Rangkai semua komponen sesuai kondisi yang dipilih
        2. Buat program di aplikasi arduino IDE
        3. Setelah selesai masukkan program ke arduino (Verify and Upload)
        4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
        5. Selesai

2. Hardware dan diagram blok [Kembali]
      a. Hardware





A. Alat  
1. Breadboard
B. Bahan                                                                    
1.  LCD 16 x 2
2. Arduino Uno
3.Keypad
4. Jumper

            b. Diagram Blok







3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

A. Gambar Rangkaian

   
B. PRINSIP KERJA
  
Pada percobaan 4, komponen utama yang digunakan adalah keypad sebagai input, arduino uno sebagai mikrokontroler, dan LCD 16 x 2 sebagai output. Terdapat 2 arduino uno yang digunakan pada rangkaian ini yang masing-masingnya bertindak sebagai arduino master dan arduino slave. Arduno master terhubung pada input dan bertanggung jawab untuk mengirim data, sementara arduino slave terhubung pada output dan bertanggung jawab untuk menerima data.
 
Percobaan 4 ini mensimulasikan komunikasi Universal Asynchronus Receiver Transmitter (UART), yaitu protokol pengiriman data secara serial dan asinkronus menggunakan pin Tx dan Rx dengan baudrate yang sama. Artinya, pada komunikasi UART data dikirim satu per satu, yaitu dengan urutan idle, start bit, LSB sampai MSB data, parity bit, dan stop bit. Pengiriman ini tidak bergantung pada siklus clock, sehingga digolongkan pada jenis komunikasi asinkronus. Untuk mengirim data ini, pada rangakain, pin Tx arduino master harus terhubung dengan pin Rx arduino slave, sementara pin Rx ardino master terhubung dengan pin Tx arduino slave, dengan syarat kedua pin ini dihubungkan setelah program terupload. Selain itu, UART merupakan komunikasi jenis full duplex, artinya dapat mengirim dan menerima data secara bersamaan.

Jika input diberikan atau keypad ditekan, maka sinyal input akan diteruskan ke arduino master untuk dikirim. Kemudian, arduino slave akan menerima sinyal tersebut dan meneruskannya pada output. Saat sebuah keypad ditekan, maka LCD akan menampilkan karakter yang sama dengan karakter yang ditekan pada keypad.  Kondisi ini diperoleh melalui program atau instruksi yang diberikan dan dijalankan pada arduino master dan arduino slave. 

    
4. FlowChart [Kembali]

a. Listing Program 

Master 

#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
// Array to represent keys on keypad
char hexaKeys[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};
// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(9600);
}
void loop()
{
char customKey = customKeypad.getKey();
if (customKey)
{
Serial.write(customKey);
}
delay(20);
}


Slave 


b. Flowchart








5. Video Demo [Kembali]




6. Kondisi [Kembali]

Percobaan 4 sesuai dengan modul 3

8. Download File [Kembali]
Download HMTL Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet lcd klik disini
Download Datasheet keypad klik disini


LA 1 Modul 3



MODUL 2
PERCOBAAN 1
1. Prosedur
[Kembali]

        1. Rangkai semua komponen sesuai kondisi yang dipilih
        2. Buat program di aplikasi arduino IDE
        3. Setelah selesai masukkan program ke arduino (Verify and Upload)
        4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
        5. Selesai

2. Hardware dan diagram blok [Kembali]
      a. Hardware

a. Hardware
1. Arduino uno
Spesifikasi Arduino Uno:




2. LCD

Spesifikasi LCD:



3. 
Keypad



4.   Kabel Jumper


            b. Digram Blok





3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

A. Gambar Rangkaian




                         
B. PRINSIP KERJA
   Dalam percobaan 3 ini, dua Arduino menggunakan protokol komunikasi I2C. Arduino master bertindak sebagai pengirim perintah, yang dihubungkan dengan input dari keypad yang terhubung. Sementara Arduino slave bertugas menerima perintah dan mengeksekusinya, menampilkan outputnya sehingga dihubungkan dengan LCD 16x2. Saat pengguna menekan tombol pada keypad, Arduino master mendeteksi input tersebut dan mengirimkan karakter yang sesuai melalui saluran komunikasi I2C. Proses dimulai dengan inisialisasi menggunakan fungsi Wire.begin(). Pada Arduino slave, LCD dikendalikan menggunakan library LiquidCrystal, dan Arduino tersebut bergabung dengan bus I2C dengan alamat 4. Ketika data diterima oleh Arduino slave, LCD membersihkan tampilan dan menampilkan karakter yang diterima dari Arduino master. Komunikasi ini terjadi berulang kali, memungkinkan tampilan LCD merespons setiap input yang diberikan melalui keypad pada Arduino master.
4. FlowChart [Kembali]

a. Listing Program 

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

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(1, 0);
 lcd.print(c);
 delay(100);
}
b. Flowchart




Arduino Master


Arduino Slave








5. Video Demo [Kembali]




6. Kondisi [Kembali]

Percobaan 3 modul 3

8. Download File [Kembali]

Download HMTL klik di sini
Download Video Demo Klik di sini
Download Datasheet ARDUINO UNO klik di sini
Download Datasheet LCD klik di sini
Datasheet keypad klik di sini



TP 2 Modul 3



MODUL 3
PERCOBAAN 2 KONDISI 2


1. Prosedur
[Kembali]
1. Rangkai semua komponen sesuai kondisi yang dipilih
2. Buat program di aplikasi arduino IDE
3. Setelah selesai masukkan program ke arduino di proteus
4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai

2. Hardware dan diagram blok [Kembali]
      a. hardware
                     



                                                  
1. 2 Arduino Uno (sebagai Master dan slave)
2. Keypad
3. LCD 16x2
            b. Digram Blok




3. Rangkaian Simulasi dan Prinsip kerja [Kembali]



                                                                Rangkaian sebelum disimulasi
                                        


Rangkaian setelah disimulasi

PRINSIP KERJA
Komponen utama pada rangkaian ialah keypad ( yaitu sebagai inputan) dan LCD 16x2 sebagai outputnya, serta pada rangkaian digunakan 2 arduino sebagai mikrokontroler yang akan menyimpan dan menjalankan program sehingga kondisi yang diinginkan dapat tercapai. dimana 2 arduino tersebut masing masing berperan sebagai arduino master yang dihubungkan ke inputan dan arduino slave yang dihubungkan ke outputannya. Dimana ketika menekan angka 1 pada keypad, maka pada LCD juga akan menampilkan angka 1, ketika menekan angka 2 pada keypad, maka pada LCD juga akan menampilkan angka 2, ketika menekan angka 3 pada keypad, maka pada LCD juga akan menampilkan angka 3, dan begitu seterusnya. 

4. FlowChart [Kembali]
a. Listing Program 
                                        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
 }
}


                                            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(1, 0);
 lcd.print(c);
 delay(100);
}
b. Flowchart



Arduino Master


Arduino Slave




5. Kondisi [Kembali]
Percobaan 3 Kondisi 1
Key 1-9 menampilkan karakter nomor 1-9 secara berurut di kolom kedua LCD
6. Video Simulasi [Kembali]




7. Download File [Kembali]

Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet keypad  klik disini
Download Datasheet LCD klik disini


TP 1 Modul 3



MODUL 3
PERCOBAAN 2 KONDISI 2


1. Prosedur
[Kembali]
1. Rangkai semua komponen sesuai kondisi yang dipilih
2. Buat program di aplikasi arduino IDE
3. Setelah selesai masukkan program ke arduino di proteus
4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai

2. Hardware dan diagram blok [Kembali]
      a. hardware
                     

                                                  
1. 2 Arduino Uno (sebagai Master dan slave)
2. Dip Switch 8
3. Dual Sevent Segment
            b. Digram Blok



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]


                                                                Rangkaian sebelum disimulasi
                                        


Rangkaian setelah disimulasi

PRINSIP KERJA
Komponen utama pada rangkaian ialah dipswitch ( yaitu sebagai inputan) dan dual sevent segment sebagai outputnya, serta pada rangkaian digunakan 2 arduino sebagai mikrokontroler yang akan menyimpan dan menjalankan program sehingga kondisi yang diinginkan dapat tercapai. dimana 2 arduino tersebut masing masing berperan sebagai arduino master yang dihubungkan ke inputan dan arduino slave yang dihubungkan ke outputannya. 

4. FlowChart [Kembali]
a. Listing Program 
                                        MASTER
#include <SPI.h>
int dip[] = {2, 3, 4, 5, 6, 7, 8, 9};
int dipvalue[] = {};
int dipCount = 0; // Variable to count active dip switches

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(dip[i], INPUT_PULLUP);
  }
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV8);
  digitalWrite(SS, HIGH);
}

void loop() {
  byte Mastersend = 0;
  for (int i = 0; i < 8; i++) {
    dipvalue[i] = digitalRead(dip[i]);
    if (dipvalue[i] == LOW) {
      dipCount++; // Increment dip switch count if active
    }
  }

  if (dipCount == 1) {
    Mastersend = 1; // Set Mastersend to 1 if only one dip switch is active
  } else if (dipCount == 4) {
    Mastersend = 4; // Set Mastersend to 4 if four dip switches are active
  }

  dipCount = 0; // Reset dip switch count for next iteration

  digitalWrite(SS, LOW);
  SPI.transfer(Mastersend);
  delay(100);
}



                                            SLAVE
#include <SPI.h>

#define a 9
#define b 8
#define c 7
#define d 6
#define e 5
#define f 4
#define g 3
#define dp 2
#define D1 A1
#define D2 A3

unsigned long previousMillisLED = 0; 
const int segmentPins[] = {a, b, c, d, e, f, g}; // Koneksi digit 1 ke pin 1, digit 2 ke pin 0

volatile boolean received = false;
volatile byte Slavereceived;

void setup() {
   unsigned long currentMillisLED = millis(); 
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  Serial.begin(9600);
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  SPCR |= _BV(SPE);
  SPI.attachInterrupt();
}

ISR(SPI_STC_vect) {
  Slavereceived = SPDR;
  received = true;
}

void displayCharacter(int digit, int digitPosition) {
  byte patterns[10][7] = {
    {0, 0, 0, 0, 0, 0, 1}, // 0
    {1, 0, 0, 1, 1, 1, 1}, // 1
    {0, 0, 1, 0, 0, 1, 0}, // 2
    {0, 0, 0, 0, 1, 1, 0}, // 3
    {1, 0, 0, 1, 1, 0, 0}, // 4 
    {0, 1, 0, 0, 1, 0, 0}, // 5 
    {0, 1, 0, 0, 0, 0, 0}, // 6
    {0, 0, 0, 1, 1, 1, 1}, // 7
    {0, 0, 0, 0, 0, 0, 0}, // 8
    {0, 0, 0, 0, 1, 0, 0}  // 9
  };

  // Write the pattern to the segment pins
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], patterns[digit][i]);
  }

  // Aktifkan digit yang sesuai
  if (digitPosition == D1) {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
  } else if (digitPosition == D2) {
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
  }

  delay(5); // Delay kecil untuk memastikan penampilan stabil
}

void loop() {
  if (received) {
    if (Slavereceived == 1) {
      displayCharacter(8, D1); // Menampilkan angka 1 hanya pada digit 1
      displayCharacter(0, D2); // Matikan digit 2
    } else if (Slavereceived == 4) {
      displayCharacter(4, D1); // Menampilkan angka 4 pada kedua digit
      displayCharacter(4, D2);
    }
    delay(1000);
    received = false;
  }
}
b. Flowchart


Arduino Master

Arduino Slave


5. Kondisi [Kembali]
Percobaan 2 Kondisi 2
Setiap 1 switch aktif muncul angka berbeda pada digit ke 1, setiap switch aktif muncul angka pada kedua digit
6. Video Simulasi [Kembali]





7. Download File [Kembali]

Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet dipswitch  klik disini
Download Datasheet dual sevent segment klik disini


Entri yang Diunggulkan

LA 2 modul 3

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan diagram blok 3. Rangkaian Simulasi dan P...