LA M3 Percobaan 2

 



Modul 3
Percobaan 2

1. Prosedur [Kembali]
1. Susunlah komponen sesuai dengan percobaan
2. Buatlah kode slave dan master menggunakan Arduino IDE.
3. Upload program yang telah disusun ke Arduino Uno.
4. Lakukan pengujian program pada rangkaian percobaan 
5. Selesai

2. Hardware dan Diagram Blok [Kembali]

A. Hardware

1. Dip-SW


Spesifikasi

2. Arduino Uno




Spesifikasi



3. 2 Digit 7-Segment



Spesifiikasi





b. Digram Blok




3. Rangkaian Percobaan dan Prinsip Kerja [Kembali]
A. Rangkaian Percobaan



B. Prinsip Kerja

Pada percobaan 2 terdiri dari dua Arduino yang terhubung melalui komunikasi SPI. Perangkat master terhubung dengan dipswitch, sementara perangkat slave terhubung dengan display tujuh segmen. Perangkat master menerima status dipswitch dan mengirimkan nilai tersebut ke perangkat slave. Perangkat slave menerima nilai dari perangkat master melalui SPI, lalu menampilkan karakter yang sesuai pada display tujuh segmen berdasarkan nilai yang diterima

Arduino master mengirimkan status dipswitch sebagai data ke arduino slave. Ketika dipswitch diaktifkan, jika dipswitch 1 aktif  maka akan menampilkan angka 2 dan jika dipswitch 2 akitf maka sevensegment akan menampilankan angka 3 begitu seterusnya, namun nilai awal adalah 1. 

4. Flowchart dan Listing program[Kembali]

A. Flowchart
Flowchart:


B. Listing Program

Code Master

#include //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);
Mastersend = x; Serial.println(Mastersend); SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave delay(1000); }


Code Slave

#include 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]); } } }


5. Kondisi [Kembali]

Percobaan 2 Komunikasi SPI Menggunakan Arduino

6. Video Demo [Kembali]




1. Bagaimana cara mengupload program ke arduino dengan komunikasi yang digunakan?
Jawab:
Percobaan 2 menggunakan komunikasi SPI, di mana komunikasi SPI untuk mengupload program ke arduino dilakukan secara langsung di mana code master di upload langsung kearduino masker dan code slave di upload langsung ke arduino slave tanpa memutuskan jumper antara arduino

2. Apa order bit, kecepatan clock yang digunakan pada percobaan ini, jelaskan menggunakan syntaks program yang digunakan?
Jawab:
Order bit adalah urutan pengiriman bit dalam sebuah byte atau pesan data. Pada komunikasi SPI, jika data order bit (DORD) diatur maka transmisi data dimulai dari LSB terlebih dahulu. Sedangkan jika tidak diatur maka transmisi data dimulai dari MSB terlebih dahulu. Kecepatan clock dalam komunikasi SPI ditentukan oleh master terlihat code SPI. SPIClockDivider(SPT_CLOCK_DIV8) yang mengatur  pembagian clock. Pada percobaan ini clock diatur menjadi 8, sehingga clock SPI akan diatur 16 MHz/8 = 2 MHz. Kecepatan clock akan mempengaruhi kecepatan transfer data.

3. Bandingkan dengan rangkaian TP?
Jawab:
Dari segi rangkaian tidak ada yang membedakan, namun yang membedakan, namun yang membedakan dari segi code dimana pada tugas pendahuluan setiap 2 dip switch aktif maka akan muncul angka berbeda pada digit ke 1, sedangkan 3 dip switch aktif maka akan muncul angka berbeda pada digit kedua.


8. Download File [Kembali]
Download HMTL klik disini
Download Program Master klik disini
Download Program Slave klik disini
Download Rangkaian  klik disiniwnl
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