Kamis, 02 Mei 2024

Laporan Akhir 1




Percobaan 2
Komunikasi SPI Menggunakan Arduino.

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]
      1. Hardware

      2. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]


PRINSIP KERJA
    saat program dijalankan dan masuk ke komponen arduino MASTER. Selanjutnya, program terus berjalan dalam loop utama, pada saat awal jalannya rangkaian arduino master akan menerima inputan dari dipswitch lalu akan mengirimkannya ke arduino slave. Setelah arduino slave menerima sinyal dari master lalu 7segment akan mendeteksi pin berapa yang sedang berlogika low pada seven segment sehingga 7segment akan menampilkan sesuai inputan yang diberikan pada arduino.

4. FlowChart [Kembali]

a. Listing Program 
//Master Arduino
#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
 Serial.begin(9600); //Starts Serial Communication at Baud Rate 115200
 for(int i = 0; i < 8; i++){
 pinMode(dip[i], INPUT_PULLUP);
 }
 SPI.begin(); //Begins the SPI commnuication
 SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz)
 digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with
slave)
}
void loop(void){
 byte Mastersend;
 int x = 1;
 for(int i = 0; i < 8; i++){
 dipvalue[i] = digitalRead(dip[i]);
 if(dipvalue[i] == LOW){
 x = dip[i];
 }
 }
 digitalWrite(SS, LOW); //Starts communication with Slave connected to master
 Mastersend = x;
 Serial.println(Mastersend);
 SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
 delay(1000);
}

//Slave Arduino:
#include<SPI.h>
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2};
volatile boolean received = false;
volatile byte Slavereceived;
int index;
void setup(){
 Serial.begin(9600);
 for (int i = 0; i < 8; i++) {
 pinMode(segmentPins[i], OUTPUT);
 }
 SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
 SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation
}
ISR (SPI_STC_vect){ //Inerrrput routine function
 Slavereceived = SPDR; // Value received from master if store in variable slavereceived
 received = true; //Sets received as True
}
void loop(){
 Serial.println(Slavereceived);
 if(received){//Logic to SET LED ON OR OFF depending upon the value recerived from master
 displayCharacter(Slavereceived);
 delay(1000);
 }
}
void displayCharacter(int ch) {
 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
 };
if ((ch >= 0 && ch <= 9)) {
 // Get the digit index (0-9) from the character
 int index = ch;
 // Write the pattern to the segment pins
 for (int i = 0; i < 7; i++) {
 digitalWrite(segmentPins[i], patterns[index][i]);
 }
 }
}

b. Flowchart

5. Kondisi [Kembali]
Kondisi  : Percobaan 2 Sesuai modul

6. Video Simulasi [Kembali]

7. Analisa dan Pembahasan [Kembali]



8. Download File [Kembali]
Download HTML Klik disini
Download Video Simulasi Klik disini
Datasheet Arduino klik disini
Datasheet 7segment klik disini

Laporan Akhir 2




Percobaan 4
Komunikasi UART

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]
      1. Hardware

      2. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

PRINSIP KERJA
    Pada percobaan 4 ini arduino sebagai kontroler dimana arduino master menerima inputan dari keypad dimana nanti outputnya akan dikirimlan ke arduino slave dan akan ditampilkan pada LCD. Disini untuk kondisinya diatur pada program arduno yang nanti akan diupload ke komponen arduino agar rangkaian bisa dijalankan.
Sesuai dengan program saat diberikan saat digit 1 pada keypad ditekan maka akan menampilkan tulisan "Tombol : 1" pada LCD dan seterusnya sesuai dengan digit yang ditekan pada keypad.

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', '#'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {8, 9 , 10};
// 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
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
char message;
void setup()
{
 Serial.begin(9600);
 lcd.begin(16, 2);
}
void loop()
{
 lcd.setCursor(0, 0);
 lcd.print("Tombol :");
 if (Serial.available())
{
 message = Serial.read();
 if (message)
 {
 lcd.print(message);
 }
}
}

b. Flowchart

5. Kondisi [Kembali]
Kondisi  : Percobaan 4 Sesuai modul

6. Video Simulasi [Kembali]


7. Analisa dan Pembahasan [Kembali]

8. Download File [Kembali]
Download HTML Klik disini
Download Video Simulasi Klik disini
Datasheet Arduino klik disini
Datasheet Keypad 3x4 klik disini
Library LCD klik disini

Entri yang Diunggulkan

UTS Soal 3

  [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan Percobaan a. Prose...