Teknik Elektro

LA 2 SPI Modul 3

RAISHA ADINI_2110953023
LAPORAN AKHIR 2


LAPORAN AKHIR PRAKTIKUM
MODUL 3 PERCOBAAN 2
                KOMUNIKASI SPI MENGGUNAKAN ARDUINO


1. Prosedur
[Kembali]

  • Rangkai semua komponen sesuai kondisi yang dipilih
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino (Verify and Upload)
  • Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
  • Finish
2. Hardware dan diagram blok [Kembali]
   a. hardware
                                                                    
1. Dip-SW


Spesifikasi




2. Arduino Uno


Spesifikasi



3. 2 Digit 7-Segment








  b. Digram Blok




3. Rangkaian Percobaan dan Prinsip kerja [Kembali]

Rangkaian Percobaan 

                                       

Prinsip Kerja 

   Rangkaian terdiri dari dua perangkat Arduino yang terhubung melalui jalur SPI, termasuk SCK (Serial Clock), MISO (Master In Slave Out), MOSI (Master Out Slave In), dan SS (Slave Select). Perangkat master juga terhubung dengan dipswitch, sedangkan perangkat slave terhubung dengan display tujuh segmen. Rangkaian percobaan terdiri dari 2 arduino yakni arduino master dan arduino slave. Yang mana arduino master sebagai pengirim informasi yang disambungkan dengan dipswitch sebagai inputnya. Sedangkan arduino slave sebagai penerima informasi yang terhubung dengan seven segment sebagai outputnya.Seven segment terhubung pada slave pin I/O digital 2 sampai 9.Dipswitch  terhubung pada pin I/O digital 2 sampai 7 arduino master. 
Perangkat master memulai komunikasi dengan mengirimkan data berupa status dari dipswitch. Jika salah satu saklar pada dipswitch dalam posisi LOW, nilai yang sesuai akan dikirim melalui jalur MOSI ke perangkat slave setelah menurunkan sinyal SS. Perangkat slave menerima data tersebut melalui jalur MISO dan menanggapinya. Setelah menerima data, perangkat slave menampilkan karakter yang sesuai pada display tujuh segmen.
Prinsip kerja apabila switch dihidupkan maka akan menghitung nilai pada seven segment dari 0 sampai 9. Apabila semuanya off maka 0. Pada ada perangkat master, hasil input adalah status dipswitch. Jika salah satu saklar dipanjang dalam posisi LOW, nilai x akan diubah menjadi nilai pin saklar tersebut. Output dari perangkat master adalah nilai x yang dikirim ke perangkat slave. Pada perangkat slave, hasil input adalah nilai yang diterima dari perangkat master melalui komunikasi SPI. Hasil outputnya adalah karakter yang sesuai yang ditampilkan pada display tujuh segmen berdasarkan nilai yang diterima dari perangkat master.

4. FlowChart [Kembali]

a. Listing Program 

//Master
//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
//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]


Percobaan  2 Komunikasi SPI Menggunakan Arduino


6.Video Demo[Kembali]




7. Download File [Kembali]

Download HMTL klik disini
Download Program Master klik disini
Download Program Slave klik disini
Download Video Demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet DipSwitch klik disini
Download Datasheet 2 Digit 7-Segment klik disini

Tidak ada komentar:

Posting Komentar

Smart Smoking Room Encoder Decoder

KONTROL SMART SMOKING ROOM [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan ...