M3 (TP2) percobaan 2 kondisi 4
1. Kondisi[Back]
Percobaan 2 kondisi 4
Ubah boud rate pada Slave menjadi 34500
2. Gambar Rangkaian Simulasi[Back]
Gambar Percobaan 2 kondisi 4
3. Video Simulasi[Back]
Video Percobaan 2 kondisi 4
4. Prinsip Kerja Rangkaian[Back]
Percobaan 2 kondisi 4
Pada rangkaian percobaan 2 kondisi 4 yang mana kondisi yang diberikan Ubah boud rate pada Slave menjadi 34500. Komponen yang ada pada rangkaian ini adalah Arduino uno yang terdiri atas slave dan master, lalu LED, Button dan resistor. Dimana master itu sebagai pusat pengirim data dan slave sendiri penerima/ pengirim data, dimana disini master dan slave itu saling terhubung dengan menyambungkan pin 11, 12 dan 13 nya. Saat rangkaian di jalankan LED tidak menyala karena nilai pada boud rate pada slave berbeda dengan boud rate pada master, hal ini membuat tidak seimbangnya kecepatan pengiriman data antara slave dan master oleh karena itu LED tidak menyala
listing program
MASTER
#include <SPI.h> //Deklarasi library SPI
void setup (void) {
Serial.begin(115200); //Set baud rate 115200
digitalWrite(SS, HIGH);
// disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop (void) {
char c;
digitalWrite(SS, LOW); //enable Slave Select
// send test string
for (const char * p = "Hello, world!\r" ; c = *p; p++)
{
SPI.transfer (c);
Serial.print(c);
}
digitalWrite(SS, HIGH); // disable Slave Select
delay(2000);
}
SLAVE
#include <SPI.h>
char buff [50];
volatile byte indx;
volatile boolean process;
void setup (void) {
Serial.begin (34500);
pinMode(MISO, OUTPUT); // have to send on master in so it set as output
SPCR |= _BV(SPE); // turn on SPI in slave mode
indx = 0; // buffer empty
process = false;
SPI.attachInterrupt(); // turn on interrupt
}
ISR (SPI_STC_vect) // SPI interrupt routine
{
byte c = SPDR; // read byte from SPI Data Register
if (indx < sizeof buff) {
buff [indx++] = c; // save data in the next index in the array buff
if (c == '\r') //check for the end of the word
process = true;
}
}
void loop (void) {
if (process) {
process = false; //reset the process
Serial.println (buff); //print the array on serial monitor
indx = 0; //reset button to zero
}
}
5. Link Download[Back]
Link Download HTML [disini]
Link Download Rangkaian [disini]
Link Download Video [disini]
Link Download Datasheet Resistor [disini]
Link Download Datasheet Button [disini]
Link Download Datasheet LED [disini]
Link Download Datasheet Arduino Uno [disini]
Link Download Library Arduino Uno [disini]
Tidak ada komentar:
Posting Komentar