A. Universal Asynchronous Receiver Transmitter (UART)
Microcontroller ATmega328P |
Operating Voltage 5 V |
Input Voltage (recommended) 7 – 12 V |
Input Voltage (limit) 6 – 20 V |
Digital I/O Pins 14 (of which 6 provide PWM output) |
PWM Digital I/O Pins 6 |
Analog Input Pins 6 |
DC Current per I/O Pin 20 mA |
DC Current for 3.3V Pin 50 mA |
Flash Memory 32 KB of which 0.5 KB used by bootloader |
SRAM 2 KB |
EEPROM 1 KB |
Clock Speed 16 MHz |
Seperti yang dikatakan sebelumnya, nilai Resistor yang berbentuk Axial adalah diwakili oleh Warna-warna yang terdapat di tubuh (body) Resistor itu sendiri dalam bentuk Gelang. Umumnya terdapat 4 Gelang di tubuh Resistor, tetapi ada juga yang 5 Gelang.
Gelang warna Emas dan Perak biasanya terletak agak jauh dari gelang warna lainnya sebagai tanda gelang terakhir. Gelang Terakhirnya ini juga merupakan nilai toleransi pada nilai Resistor yang bersangkutan.
Tabel dibawah ini adalah warna-warna yang terdapat di Tubuh Resistor :
Masukkan angka langsung dari kode warna Gelang ke-1 (pertama)
Masukkan angka langsung dari kode warna Gelang ke-2
Masukkan angka langsung dari kode warna Gelang ke-3
Masukkan Jumlah nol dari kode warna Gelang ke-4 atau pangkatkan angka tersebut dengan 10 (10n)
Merupakan Toleransi dari nilai Resistor tersebut
Contoh :
Gelang ke 1 : Coklat = 1
Gelang ke 2 : Hitam = 0
Gelang ke 3 : Hijau = 5
Gelang ke 4 : Hijau = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
Gelang ke 5 : Perak = Toleransi 10%
Maka nilai Resistor tersebut adalah 105 * 105 = 10.500.000 Ohm atau 10,5 MOhm dengan toleransi 10%.
Contoh-contoh perhitungan lainnya :
Merah, Merah, Merah, Emas → 22 * 10² = 2.200 Ohm atau 2,2 Kilo Ohm dengan 5% toleransi
Kuning, Ungu, Orange, Perak → 47 * 10³ = 47.000 Ohm atau 47 Kilo Ohm dengan 10% toleransi
Cara menghitung Toleransi :
2.200 Ohm dengan Toleransi 5% =
2200 – 5% = 2.090
2200 + 5% = 2.310
ini artinya nilai Resistor tersebut akan berkisar antara 2.090 Ohm ~ 2.310 Ohm
2. Hubungkan jumper seperti rangkaian dibawah
3. Buatlah listing program yang telah ada pada modul
4. periksakan rangkaian kepada asisten yang mengawas
5. Hidupkan semua supply
6. Upload program dari laptop ke modul
7. Tekan tombol Reset
8. Amati percobaan, jika tidak sesuai perbaiki rangkaian atau program
9. Jika sesuai, maka selesai dan demokan pada asisten yang mengawas
10.Jelaskan prinsip kerja + program dan hubungan keduanya kepada asisten
11.Demokan ke pembimbing praktikum
12.Matikan supply
d. 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;
}
digitalWrite(SS, 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("Master buzzer
ON");
delay(5000);
}
else
{
digitalWrite(LED,LOW); //Sets pin 7 LOW
Serial.println("Master LED OFF");
digitalWrite(buzzer, LOW);
Serial.println("Master buzzeR
OFF");
}
}
// 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(buttonpin); // 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);
}
}
Rangkaian ini menggunakan 2 buah arduino
sebagai MASTER dan SLAVE, kemudian terdapat 2 buah LED, 1 buzzer, 4 resistor,
dan 2 pushbutton. Masing-masing pin 10, 11, 12, dan 13 pada arduino dihubungkan
ke pin yang sama, dimana pin 11 merupakan MOSI, pin 12 merupakan MISO, dan pin
13 merupakan SCK. Kemudian pada pin 7 di masing-masing arduino dihubungkan ke
LED, pin 2 dihubungkan ke push button.
Ketika pushbutton 1 (pushbutton yang
terhubung pada master) ditekan (berlogika 1), maka LED-BLUE (yang terhubung
pada slave) akan menyala dan memiliki tegangan keluaran sebesar 5 V. Ketika
pushbutton 2 (pushbutton yang terhubung pada slave) ditekan (berlogika 1), maka
LED-YELLOW (yang terhubung pada master) akan menyala dan memiliki tegangan
keluaran sebesar 5 V.
1. Apakah
komunikasi yang digunakan? Simplex, half duplex, atau full duplex?
Jawab:
Rangkaian pada percobaan 2 ini adalah
rangkaian SPI dengan komunikasi full duplex. Dimana full duplex merupakan
proses pengiriman data dari MASTER ke SLAVE dan SLAVE ke MASTER terjadi pada 1
waktu. Pada rangkaian ini data bertransmisi dari MASTER ke SLAVE melalui pin
MISO lalu tanpa diproses langsung ditransmisikan kembali ke MASTER melalui pin
MOSI
2. Jika serialbegin pada SLAVE diubah menjadi 9600 dan yang di MASTER tetap, apa yang terjadi?
Jawab:
Jika baudrate pada slave diubah menjadi
9600 dan yang di master tetap, rangkaian tetap berjalan sama seperti
sebelumnya. Baudrate 9600 dan 115200 ini merupakan kecepatan pengiriman data,
dimana 115200 ini merupakan kecepatan pengiriman data maksimal pada arduino
uno. Tetapi pada rangkaian tidak terlihat perbedaan jika baudratenya 9600
maupun 115200, dimana LED tetap hidup sebagaimana mestinya, hal ini dikarenakan
baudrate ini biasanya berpengaruh hanya pada saat proses uploading.
3. Jelaskan fungsi clockspeed (clockdivider) pada percobaan! Jika diubah jadi 16, apa yang terjadi?
Jawab:
Clockdivider adalah untuk membagi clock
pada komunikasi. Jika diganti 16, berarti mengatur clock SPI menjadi
seperenambelas frekuensi clock sistem, yaitu 16/16 = 1 Mhz. Dan jika diganti
menjadi 16, rangkaian masih bisa berjalan sebagaimana mestinya.
Tidak ada komentar:
Posting Komentar