LAPORAN AKHIR I
1. Komponen
[kembali]
arduino
|
2. Rangkaian
Simulasi [kembali]
Prinsip
kerja:
Kondisi:
Tambahkan Buzzer sebagai input. Sehingga input yang tersedia adalah LED dan
Buzzer (percobaan 2). Pada percobaan, komponen yang digunakan terdiri dari dua
buah arduino yang berperan sebagai master dan slave, lalu ada buzzer dan led.
Pada rangkaian ini digunakan komunikasi full duplex karena kedua output akan
hidup secara bersamaan. Pada listing program, arduino master diberikan input
berupa led dan buzzer dengan kecepatan SPI 2Mhz, pada program diberikan kondisi
dimana jika dibaca high maka x akan 1 lalu jika tidak maka x akan 2, jika
kondisi master 1, maka akan membuat led on dan slave akan terhubung. Namun,
jika kondisinya berbeda maka led off.
3. Flowchart
[kembali]
4. Listing
Program [kembali]
#include<SPI.h> //Library for SPI
#define LED 7
#define button 2
#define buzzer 4
int buttonvalue;
int x;
void setup ()
{
Serial.begin(115200);
//Starts Serial Communication at Baud Rate 115200
pinMode(button,INPUT);
//Sets pin 2 as input
pinMode(LED,OUTPUT);
//Sets pin 7 as Output
pinMode(buzzer, OUTPUT); // Sets pin 7 as Output
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()
{
byte
Mastersend,Mastereceive;
buttonvalue =
digitalRead(button); //Reads the status
of the pin 2
if(buttonvalue
== HIGH) //Logic for
Setting x value (To be sent to slave) depending upon input from pin 2
{
x = 1;
}
else
{
x = 0;
}
LOW); //Starts
communication with Slave connected to master
Mastersend =
x;
Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to
slave also receives value from slave
if(Mastereceive
== 1) //Logic for
setting the LED output depending upon value received from slave
{
digitalWrite(LED,HIGH);
Serial.println("Master LED ON");
digitalWrite(buzzer, HIGH);
Serial.println(" ");
delay(5000);
}
else
{
digitalWrite(LED,LOW);
//Sets pin 7 LOW
Serial.println("Master LED OFF");
digitalWrite(buzzer, LOW);
Serial.println("Master buzzeR OFF");
}
delay(50);
}
// SLAVE PROGRAM
#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()
{
Serial.begin(9600);
pinMode(buttonpin,INPUT);
// Setting pin 2 as INPUT
pinMode(LEDpin,OUTPUT);
// Setting pin 7 as OUTPUT
pinMode(MISO,OUTPUT);
//Sets MISO as OUTPUT (Have to Send data to Master IN
SPCR |=
_BV(SPE); //Turn on
SPI in Slave Mode
received =
false;
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()
{ if(received) //Logic to SET LED
ON OR OFF depending upon the value recerived from master
{
if
(Slavereceived==1)
{
digitalWrite(LEDpin,HIGH);
Serial.println("Slave LED ON");
}else
{
digitalWrite(LEDpin,LOW); //Sets pin 7 as LOW LED OFF
Serial.println("Slave LED OFF");
}
buttonvalue = digitalRead(
in); // Reads the status of the
pin 2
if
(buttonvalue == HIGH) //Logic
to set the value of x to send to master
{
x=1;
}else
{
x=0;
}
Slavesend=x;
SPDR =
Slavesend;
//Sends the x value to master via SPDR
delay(500);
}
}
5. Video
[kembali]
6. Kondisi [kembali]
Percobaan
2
1.
Apakah komunikasi yang digunakan simple, half, dan fullduplex
Jawab:
Pada
percobaan yang tekah dilakukan, metode komunikasi yang digunakan adalah full duplex
karena ada 2 output yang aktif dengan waktu yang bersamaan. Hal ini dikarenakan
pada full duplex kedua belah pihak (arduino) akan saling berbagi informasi
dalam waktu yang sama.
2.
Jika serial pada slave akan diubah menjadi 9600 dan yang dimaster tetap maka
apa yang terjadi pada program
Jawab:
Pada
percobaan, jika serial begin diubah maka tidak ada perubahan yang terjadi pada
output yang dihasilkan. Dikarenakan nilai serial begin digunakan untuk
menyatakan kecepatan data yang dikirim.
3.
Jelaskan fungsi clock soeed atau clock devider pada percobaan, jika diubah ke
16 maka apa yang terjadi
Jawab:
Pada
percobaan, clock speed dan clock devider digunakan untuk menyatakan instruksi
dan kalkulasi tingkat rendah. Jika nilainya diubah ke 16 maka kecepatan data
akan semakin cepat.
7. Link
Download [kembali]
HTML: disini
File rangkaian: disini
Listing program: disini
Librabry Arduino: disini
Datasheet buzzer: disini
Datasheet LED:
disini
Video: disini
Tidak ada komentar:
Posting Komentar