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 |
Pada percobaan 2 membahas
tentang komunikasi arduino dengan tipe SPI atau Serial Peripheral Interface.
Jenis komunikasi ini arduino master terhubung 4 pin ke arduino slave, yaitu
MOSI, MISO, SCLK dan SS (slave select). Kondisi rangkaian yang diberikan adalah
menambahkan resistor dengan nilai resistansi 1000 ohm sebelum LED.
Pada program arduino
Master. Dideklarasikan pin 7 untuk LED dan pin 2 untuk button, lalu
dideklarasikan juga variabel ‘butoonvalue’ dan ‘x’. lalu digunakan dungsi void
set up yang berfungsi untuk mengeksekusi program sekali saja. Didalamnya
terdapat pengaturan mode pin dimana pin untuk button berfungsi sebagai input
dan pin untuk LED sebagai output, lalu dideklarasikan SPI. Begin yang berfungsi
untuk memulai komunikasi SPI, digitalWrite untuk mengatur slaveselect berlogika
HIGH. Lalu digunakan void loop untuk mengeksekusi program secara berulang. Didalamnya
terdapat deklarasi variabel ‘Mastersend’ dan ‘Masterreceive’, lalu
dideklarasikan variabel ‘buttonvalue’ yang berisi pembacaan nilai dari button.
Lalu digunakan fungsi IF dimana jika nilai dari variabel ‘buttonvalue’
berlogika high, maka variabel ‘x’ sama dengan 1 dan jika variabel ‘buttonvalue’
tidak berlogika high maka variabel ‘x’ sama dengan 0. Lalu dideklarasikan
pembacaan digital untuk pin slave select yang berfungsi untuk memulai
komunikasi dengan arduino slave. Lalu dideklarasikan variabel ‘Mastersend’ yang
berisi variabel ‘x’. lalu dideklarasikan variabel ‘Masterreceive’ yang berisi
SPI.transfer(Mastersend) yang digunakan untuk mengirim nilai variabel
‘Mastersend’ ke arduino slave dan juga menerima nilai dari slave. Lalu
digunakan fungsi IF dimana jika nilai variabel ’Masterreceive’ sama dengan 1,
maka LED akan aktif, jika variabel ‘Masterreceive’ tidak sama dengan 1, maka
LED akan mati
Pada program arduino
Slave. Pertama dideklarasikan pin 7 untuk LED dan pin 2 untuk button. Lalu
dideklarasikan variabel ‘received’ bertipe data boolean, variabel
‘Slavereceived dan Slavesend’ bertipe data byte. Ketiga variabel tersebut
diatur sebagai memori Volatile. Lalu variabel ‘buttonvalue’ dan variabel ‘x’.
lalu digunakan fungsi void set up yang berfungsi untuk mengeksekusi program
sekali saja. Didalamnya terdapat pengaturan mode pin, pin untuk button
berfungsi sebagai input, pin untuk LED berfungsi sebagai output dan pin untuk
MISO sebagai output. Lalu dideklarasikan variabel ‘Slavereceived’ yang berisi
variabel ‘SPDR’ dan dideklarasikan variabel ‘received’ sebagai true. Lalu
digunakan void loop yang digunakan untuk mengeksekusi program secara berulang.
Didalamnya terdapat fungsi IF(Received) untuk mengatur logika LED on atau off
tergantung nilai yang diterima dari arduino master. Lalu dideklarasikan fungsi
IF dimana jika nilai variabel ‘Slavereceived’ bernilai 1, maka LED akan
menyala, dan jika variabel ‘Slavereceived’ tidak bernilai 1, maka LED akan
mati. Lalu dideklarasikan variabel ‘buttonvalue’ yang berisi pembacaan dari pin
untuk button. Lalu digunakan fungsi IF yang mana jika variabel ‘buttonvalue’
berlogika high, maka variabel x = 1, jika variabel ‘buttonvalue’ tidak
berlogika high, maka variabel x = 0. Lalu dideklarikan variabel ‘Slavesend’
yang berisi variabel x lalu dideklarasikan variabel ‘SPDR’ yang berisi variabel
‘Slavesend’
Ketika rangkaian
dijalankan, LED yang terhubung pada arduino slave akan menyala, jika button
yang terhubung ke arduino master ditekan, maka LED pada arduino master akan
meyala, sedangkan LED pada arduino slave akan mati
1. Pada Program "SPI.setClockDivider(SPI_CLOCK_DIV8);" apabila nilai 8 divariasikan menjadi 4, 16 , 32 berapa nilai clock yang dihasilkan oleh master? [Arduino Clock speed: 16Mhz]
2. Analisa pengaruh kecepatan pengiriman data berdasarkan nilai clock yang digunakan
Jawab :
1. (SPI_CLOCK_DIV4) = 16 / 4 = 4 MHz
(SPI_CLOCK_DIV16) = 16 / 16 = 1 MHz
(SPI_CLOCK_DIV32) = 16 / 32 = 0.5 MHz
2. Semakin kecil nilai DIV clock, maka proses pengiriman data akan semakin cepat. Misalnya (SPI_CLOCK_DIV8) = 16 / 8 = 4 MHz, apabila nilai DIV clock bernilai 8, maka clock speed bernilai 4MHz
0 komentar:
Posting Komentar