Академический Документы
Профессиональный Документы
Культура Документы
Mahasiswa dapat memahami, menjelaskan dan membedakan GPIO dari Arduino Uno.
2.2. TUJUAN
Bagian ini memberikan informasi mengenai perbedaan dari masing-masing GPIO
yang ada dalam Arduino Uno.
2.3. ARDUINO UNO
Dalam diskusi sehari-hari dan di forum internet, mikrokontroller sering dikenal
dengan sebutan C, uC atau MCU. Terjemahan bebas dari pengertian tersebut, bisa dikatakan
bahwa mikrokontroller adalah komputer yang berukuran mikro dalam satu chip IC
(integrated circuit) yang terdiri dari processor, memory dan antramuka yang bisa di program.
Jadi disebut komputer mikro karena dalam IC atau chip mikrokontroller terdiri dari CPU,
memory dan I/O yang bisa kita kontrol dengan memprogramnya. I/O juga sering disebut
dengan GPIO (General Purpose Input Output Pins) yang berarti: pin yang bisa kita program
sebagai input atau output sesuai dengan kebutuhan.
2017
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD
7
6
5
4
3
2
1
0
PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO
AREF
13
12
11
10
9
8
dapat melakukan simulasi rangkaian dimana hasil simulasi tersebut mendekati hasil yang
sebenarnya, sehingga Proteus ini sangat cocok digunakan dalam perancangan mikrokontroler
berbasiskan Arduino Uno.
DUINO1
ARDUINO UNO R3
DIGITAL (~PWM)
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
1121
ATMEGA328P-PU
microcontrolandos.blogspot.com
A0
A1
A2
A3
A4
A5
RESET
ANALOG IN
2017
ATmega328 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD
dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan sebagai
input/output atau difungsikan sebagai peripheral lainnya.
PORTB
PORTB merupakan jalur data 8 bit yang dapat difungsikan sebagai input/output. Selain
itu PORTB juga dapat memiliki fungsi alternatif seperti berikut :
ICP1 (PB0), berfungsi sebagai Timer Counter 1 input capture pin.
OC1A (PB1), OC1B (PB2) dan OC2 (PB3) dapat difungsikan sebagai PWM
(Pulse Width Modulation).
MOSI (PB3), MISO (PB4), SCK (PB5), SS (PB2) merupakan jalur komunikasi
SPI.
TOSC1 (PB6), TOSC2 (PB7) dapat difungsikan sebagai sumber clock external
untuk timer.
XTAL1 (PB6) dan XTAL2 (PB7) merupakan sumber clock utama
mikrokontroler.
PORTC
PORTC merupakan jalur data 7 bit yang dapat difungsikan sebagai input/output digital.
Fungsi alternatif PORTC antara lain sebagai berikut :
2017
ADC6 channel (PC0, PC1, PC2, PC3, PC4, PC5) dengan resolusi sebesar 10 bit.
ADC dapat digunakan untuk mengubah input yang berupa tegangan analog
menjadi data digital.
I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C
digunakan untuk komunikasi dengan sensor atau device lain yang memiliki
komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck.
PORTD
PORTD merupakan jalur data 8 bit yang masing-masing pin-nya juga dapat difungsikan
sebagai input/output. Sama seperti PORTB dan PORTC, PORTD juga memiliki fungsi
alternatif dibawah ini :
USART (TXD dan RXD) merupakan jalur komunikasi serial dengan level sinyal
TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD
kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial.
Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi
hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan
pada saat program berjalan kemudian terjadi interupsi hardware/software maka
program utama akan berhenti dan akan menjalankan program interupsi.
XCK dapat difungsikan sebagai sumber external clock untuk USART, namun kita
juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan
external clock.
T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.
AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.
2.
Fitur Atmega328
2017
2017
6 pin input analog (0 5), pin ini sangat berguna untuk membaca tegangan yang
dihasilkan oleh sensor analog, seperti sensor suhu. Program adapat membaca nilai
sebuah pin input antara 0 1023, dimana hal itu mewakili nilai tegangan 0 5 volt.
Tanpa melakukan konfigurasi apapun, begitu sebuah board Arduino Uno dikeluarkan
dari kotak pembungkusnya ia dapat langsung disambungkan ke sebuah komputer melalui
kabel USB. Selain berfungsi sebagai penghubung untuk pertukaran data, kabel USB ini juga
akan mengalirkan arus DC 5 volt kepada board Arduino Uno sehingga praktis tidak
diperlukan sumber daya dari luar. Saat mendapat suplai daya, lampu LED indikator daya
pada board Arduino Uno akan menyala menandakan bahwa ia siap bekerja.
2017
Blinking LED
/*
Judul Program
: Blinking LED
Tanggal Pembuatan : 14 Februari 2016
Nama Programmer
: Sutono, M.Kom.
*/
/*
pin 13 Arduino, digunakan untuk mengontrol LED
pinLED berlogika HIGH
menunda waktu sekita 500ms
pinLED berlogika LOW
*/
const int pinLED=13;
void setup()
{
// put your setup code here, to run once:
pinMode(pinLED,OUTPUT);
}
void loop()
{
/*
put your main code here, to run repeatedly
pinLED berlogika HIGH
*/
digitalWrite(pinLED,HIGH);
// menunda waktu sekitar 500ms
delay(500);
digitalWrite(pinLED,LOW);
// menunda waktu sekitar 500ms
delay(500);
}
2017
pinMode(PIN, SET)
Fungsi pinMode() digunakan untuk menginisialisasi sebuah pin Arduino dan
menentukan pin tersebut apakah akan digunakan sebagai INPUT atau sebagai
OUTPUT. Nilai SET dapat diisi INPUT atau OUTPUT tergantung dari kebutuhan.
Sedangkan nilai PIN adalah nomor pin pada Arduino Uno yang akan diset sebagai
INPUT atau sebagai OUTPUT.
Contoh: pinMode(13, OUTPUT) artinya kita menentukan bahwa pin digital 13 pada
Arduino Uno difungsikan sebagai pin OUTPUT.
digitalWrite(PIN, VAL)
Fungsi digitalWrite() digunakan untuk menuliskan nilai secara digital pada suatu pin
Arduino. Nilai VAL dapat berupa HIGH (ON) atau LOW (OFF) dan nilai PIN adalah
nomor pin pada Arduino Uno yang akan diset.
Contoh: digitalWrite(13, HIGH) artinya pin digital 13 diset pada kondisi menyala.
digitalRead(PIN)
Fungsi digitalRead() digunakan untuk membaca nilai input (masukan) yang diberikan
ke Arduino Uno. Nilai yang dibaca oleh Arduino melalui fungsi digitalRead()
tergantung pada voltase yang diberikan: 0 1,5V (logika LOW) dan 3 5V (logika
HIGH).
Contoh: digitalRead(13) artinya Arduino Uno akan membaca nilai input yang diberikan
melalui pin digital 13, hasilnya HIGH atau LOW.
2017
analogWrite(PIN, VAL)
Fungsi analogWrite() adalah fungsi yang digunakan untuk mengirimkan output nilai
berupa angka pada sebuah komponen yang terhubung dengan pin tersebut, misalnya
LED. Pengguna dapat mengatur seberapa terang cahaya dari lampu LED saat menyala
tergantung dari nilai yang diberikan oleh Arduino Uno.
Fungsi ini akan berguna ketika kita menghubungkan Arduino Uno dengan aktuator,
dimana nilai yang dikirimkan seringkali berupa analog (0 1023).
Contoh: analogWrite(13, 1023) artinya Arduino Uno akan mengirimkan nilai output
maksimal pada pin 13 Arduino.
analogRead(PIN)
Fungsi analogRead() mirip dengan fungsi digitalRead(), yaitu membaca nilai input
pada suatu pin Arduino Uno. Bedanya adalah fungsi analogRead() akan menghasilkan
nilai input dari 0 1023 (0 - 5 volt).
Contoh: analogRead(0) artinya Arduino Uno akan membaca nilai input yang diberikan
olah sensor kepada Arduino Uno melalui pin Analog 0, hasilnya pembacaan Arduino
Uno berupa nilai 0 1023.
delay(TIME)
fungsi delay() digunakan untuk memberikan jeda waktu. Nilai TIME adalah waktu
lamanya jeda dalam satuan ms (milisekon), dimana 1 detik setara dengan 1000
milisekon (ms)
contoh: delay(1000) artinya Arduino Uno akan melakukan jeda selama 1 detik sebelum
melanjutkan instruksi berikutnya.
Serial.available()
Fungsi Serial.available() digunakan untuk mengecek apakah ada input data dari
perangkat hardware yang dihubungkan ke serial port, misalnya PC atau aktuator.
Fungsi ini akan menghasilkan 1 apabila ada input dan 0 bila tidak ada input.
Serial.read()
Fungsi Serial.read() berfungsi membaca karakter pada serial port. Karakter yang
dibaca akan disimpan dalam bentuk ASCII, misalnya karakter 0 memiliki nilai ASCII
48.
Serial.print() / Serial.println()
Fungsi Serial.print() / Serial.println() digunakan untuk menuliskan suatu kalimat ke
serial monitor, tetapi tidak mengirimkan data apapun, akan tetapi hanya digunakan
untuk memberikan teks visual pada pengguna. Serial.print(Teks) digunakan untuk
2017
Serial.write(VAL)
Fungsi Serial.write() digunakan untuk mengirimkan data dari Arduino Uno ke PC atau
aktuator dengan ukuran 1 byte.
10
2017
: Blinking LED
: 14 Februari 2016
: Sutono, M.Kom.
/*
pin 13 Arduino, digunakan untuk mengontrol LED
pinLED berlogika HIGH
menunda waktu sekita 500ms
pinLED berlogika LOW
*/
const int pinLED=13;
void setup()
{
// put your setup code here, to run once:
pinMode(pinLED,OUTPUT);
}
void loop()
{
/*
put your main code here, to run repeatedly
pinLED berlogika HIGH
*/
digitalWrite(pinLED,HIGH);
// menunda waktu sekitar 500ms
delay(500);
digitalWrite(pinLED,LOW);
// menunda waktu sekitar 500ms
11
2017
Simpan programnya kemudian klik Verify. Pastikan tidak ada error. Perhatikan baris di
bagian bawah muncul keterangan lokasi program yang sudah di compile. Silahkan di
blok kemudian copy (Ctrl + C).
12
2017
DIGITAL (~PWM)
DUINO1
ARDUINO UNO R3
13
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD
7
6
5
4
3
2
1
0
PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO
AREF
13
12
11
10
9
8
13
Silahkan dicoba. Klik Play dan amati hasilnya, LED akan menyala secara bergantian
bergantian.
1121
ATMEGA328P-PU
R1
microcontrolandos.blogspot.com
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
220R
D1
LED-BIBY
GND
A0
A1
A2
A3
A4
A5
RESET
ANALOG IN
13