Modul 3
Percobaan 2
1. Prosedur [Kembali]
Spesifikasi
3. 2 Digit 7-Segment
b. Digram Blok
3. Rangkaian Percobaan dan Prinsip Kerja [Kembali]
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]
8. Download File [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]
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
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);
5. Kondisi [Kembali]
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.
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