f1
i*5RTIXAN
BAB 1. PENGENALAN PEMROGRAMAN KOMPUTER
1.1 Tujuan
Bagian ini akan membahas dasar – dasar komponen dari komputer meliputi
hardware (perangkat keras) dan software (perangkat lunak). Kami juga akan
menyertakan gambaran global tentang bahasa pemrograman dan sirkulasi
pemrograman. Akan dibahas pula pada akhir pembahasan ini mengenai sistem dan
konversi numerik.
Pada akhir pembahasan, diharapkan pembaca dapat :
• Mengindentifikasi perbedaan komponen pada komputer
• Mengetahui tentang bahasa pemrograman komputer dan kategorinya
• Mengetahui alur kerja pembuatan program dan mengaplikasikannya pada
pemecahan masalah
• Mengetahui tentang sistem numerik dan metode konversinya.
1.2 Pendahuluan
Kata komputer berasal dari bahasa Latin yaitu Computare yang artinya
menghitung. Dalam bahasa Inggris disebut to compute. Secara definisi komputer
diterjemahkan sebagai sekumpulan alat elektronik yang saling bekerja sama, dapat
menerima data (input), mengolah data (proses) dan memberikan informasi
(output) serta terkoordinasi dibawah kontrol program yang tersimpan di
memorinya. Jadi cara kerja komputer dapat kita gambarkan sebagai berikut :
1.3.1 HARDWARE
a. Primary Memory
Dipergunakan untuk menyimpan data dan instruksi dari program yang sedang
dijalankan. Biasa juga disebut sebagai RAM. Karakteristik dari memori primer
adalah :
o Volatil (informasi ada selama komputer bekerja. Ketika komputer
dipadamkan, informasi yang disimpannya juga hilang)
o Berkecepatan tinggi
o Akses random (acak)
b. Secondary Memory
Dipergunakan untuk menyimpan data atau program biner secara permanen.
Karakteristik dari memori sekunder adalah
o Non volatil atau persisten
o Kecepatan relatif rendah (dibandingkan memori primer)
o Akses random atau sekuensial
Contoh memori sekunder : floppy, harddisk, CD ROM, magnetic tape, optical
disk, dll. Dari seluruh contoh tersebut, yang memiliki mekanisme akses sekuensial
adalah magnetic tape.
1.3.1.3 Input Dan Output Device
1.3.2 Software
4. Program Paket
Merupakan program yang dikembangkan untuk kebutuhan umum, seperti:
o Pengolah kata /editor naskah : Wordstar, MS Word, Word Perfect, AmiPro
o Pengolah angka / lembar kerja : Lotus123, MS Excell, QuattroPro, dll
o Presentasi : MS PowerPoint
o Desain grafis : CorelDraw, PhotoShop
5. Compiler.
Komputer hanya memahami satu bahasa, yaitu bahasa mesin. Bahasa mesin
adalah terdiri dari nilai 0 dan 1. Sangatlah tidak praktis dan efisien bagi
manusia untuk membuat program yang terdiri dari nilai 0 dan 1, maka
dicarilah suatu cara untuk menterjemahkan sebuah bahasa yang dipahami oleh
manusia menjadi bahasa mesin. Dengan tujuan inilah, diciptakan compiler.
”Buatlah sebuah program yang akan menampilkan berapa kali sebuah nama
tampil pada sebuah daftar”
1.5.2 Analisa Permasalahan
Contoh masalah :
Menampilkan jumlah kemunculan sebuah nama pada daftar
Flowchart adalah representasi grafis dari langkah – langkah yang harus diikuti
dalam menyelesaikan suatu permasalahan yang terdiri atas sekumpulan simbol,
dimana masing – masing simbol merepresentasikan kegiatan tertentu. Flowchart
diawali dengan penerimaan input dan diakhiri dengan penampilan output. Sebuah
flowchart pada umumnya tidak menampilkan instruksi bahasa pemrograman,
namun menetapkan konsep solusi dalam bahasa manusia ataupun notasi
matematis. Berikut ini akan dibahas tentang simbol – simbol yang digunakan
dalam menyusun flowchart, kegiatan yang diwakili serta aturan yang diterapkan
dalam penggunaan simbol tersebut :
Gambar 3. Tabel simbol flowchart
Bilangan dapat disajikan dalam beberapa cara. Cara penyajiannya tergantung pada
Basis (BASE) bilangan tersebut. Terdapat 4 cara utama dalam penyajian bilangan.
Bilangan dalam bentuk biner adalah bilangan berbasis 2. Ini menyatakan bahwa
bilangan yang terdapat dalam sistem ini hanya 0 dan 1. Berikut ini contoh
penulisan dari bilangan biner :
11111102
10112
Bilangan dalam sistem heksadesimal adalah sistem bilangan berbasis 16. Sistem
ini hanya memperbolehkan penggunaan bilangan dalam skala 0 – 9, dan
menggunaan huruf A – F, atau a – f karena perbedaan kapital huruf tidak memiliki
efek apapun. Berikut ini contoh penulisan bilangan pada sistem heksadesimal :
7E16
1.6.5 Konversi
Untuk mengubah angka desimal menjadi angka biner digunakan metode pembagian
dengan angka 2 sambil memperhatikan sisanya. Ambil hasil bagi dari proses
pembagian sebelumnya, dan bagi kembali bilangan tersebut dengan angka 2. Ulangi
langkah – langkah tersebut hingga hasil bagi akhir bernilai 0 atau 1. Kemudian susun
nilai – nilai sisa dimulai dari nilai sisa terakhir sehingga diperoleh bentuk biner dari
angka bilangan tersebut.
Dengan menuliskan nilai sisa mulai dari bawah ke atas, didapatkan angka biner
11111102.
Angka desimal 205 diperoleh dari penjumlahan angka yang di arsir. Setiap biner
yang bernilai 1 akan mengalami perhitungan, sedangkan yang bernilai 0 tidak
akan dihitung karena hanya akan menghasilkan nilai 0.
Untuk mengubah bilangan biner ke oktal, kita pilah bilangan tersebut menjadi 3
bit bilangan biner dari kanan ke kiri. Tabel berikut ini menunjukkan representasi
bilangan biner terhadap bilangan oktal :
2.1 Tujuan
2.2 Pendahuluan
Mikrokontroler Arduino adalah pengendali mikro single board yang bersifat open
source, diturunkan dari Wiring platform, yang dirancang untuk memudahkan
penggunaan elektronik pada berbagai bidang. Hardwarenya menggunakan
prosesor Atmel AVR dan softwarenya memakai bahasa pemrograman khusus.
Arduino berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di
Institute Ivrea, Italia pada tahun 2005, lalu dikembangkan oleh Massimo Banzi
dan David Cuartielles yang diberi nama Arduin of Ivrea. Lalu berganti nama
menjadi Arduino yang dalam bahasa Italia berarti “teman yang berani” yang
dipakai hingga saat ini.
Arduino sudah mulai berkembang dari waktu kewaktu kaena arduino merupakan
perangkat open source yang setiap orang dapat dengan bebas mengakses dan
memodifikasi sesuai keinginan pengguna. Arduino sudah mulai mengembangkan
beberapa modul yang dapat digunakan sebagai penunjang fungsi dalam membuat
beberapa project. Seperti gambar diatas tidak hanya memproduksi perangkat
pengontrol saja tapi vendor ini sudah mulai memproduksi beberapa jenis sensor
yang dapat berintegrasi dengannya.
2.3 Bagian-bagian Pemrograman Arduino
2. Pin A0 – pin A5
Pin A0 – pin A5 adalah pin analog, artinya pin ini dapat menerima dan
mengeluarkan data data analog. Pin A0 – pin A5 terhubung ke ADC (analog to
digital converter). Board arduino uno menggunakan mikrokontroller ATMega 328
yang mempunyai 2 macam konfigurasi ADC yaitu ADC 8 bit dan ADC 12 bit.
Pin analog ini dapat mengolah tegangan analog dari tegangan 0 V hingga 5 V.
Selain dapat digunakan untuk data analog, pin ini juga dapat difungsikan sebagai
pin input/output digital.
3. Pin Utilitas
Pin utilitas terdiri dari :
1. Pin V input; untuk input tegangan DC 5 V
2. Pin V output 5V; pin ini mengeluarkan tegangan 5V
3. Pin V output 3,3 V; pin ini mengeluarkan tegangan 3,3 V
4. Pin Ground (-)
5. Pin Aref ; pin ini untuk memberikan tegangan referensi eksternal pada
ADC.
6. Pin reset; pin ini untuk reset mikrokontroller.
4. Terminal USB
Terminal USB digunakan untuk menghubungkan board arduino dengan komputer,
terminal ini digunakan untuk memprogram mikrokontroller dan juga dapat
digunakan untuk komunikasi mikrokontroller dengan komputer (serial
komunikasi).
6. Tombol reset
Tombol reset digunakan untuk mereset mikrokontroller.
7. Terminal Header ISP
Terminal Header ISP digunakan untuk pemograman boatloader mikrokontroller.
Supaya mikrokontroller atmega328 dapat bekerja pada board arduino, maka
atmega328 harus diisi dengan program boatloader terlebih dahulu. Pada saat kita
membeli board arduino, board telah dilengkapi dengan sebuah IC atmega328 yang
telah diisi dengan program boatloader, tetapi jika kita hendak mengganti IC
atmega 328 dengan yang baru, maka IC tersebut terlebih dahulu harus diisi
dengan program boatloader dengan menggunakan terminal header ISP yang
dihubungkan ke downloader lain.
void setup()
{ pinMode(lampu1, OUTPUT);}
void loop()
{ digitalWrite(lampu1, HIGH);
delay(1000);
digitalWrite(lampu1, LOW);
delay(1000);
}
Penjelasan program :
#include<AVR/io.h>
int tombol1 = 3;
char lampu1 = 0;
Bagian ini merupakan deklarasi awal yang menyatakan variabel “lampu1” adalah
pin no3 board arduino Uno dan menambahkan file io.h ke program.
void setup()
{ pinMode(lampu1, OUTPUT);}
Bagian ini mengatur variabel “lampu1” atau pin3 sebagai pin output. Karena pin
no 3 adalah pin digital dan diatur sebagai pin output, maka pin ini hanya dapat
mengeluarkan tegangan 5V ketika HIGH dan tegangan 0V ketika LOW.
void loop()
{ digitalWrite(lampu1, HIGH);
delay(1000);
digitalWrite(lampu1, LOW);
delay(1000);
}
Bagian ini adalah program utama yang akan dijalankan berulang-ulang oleh
mikrokontroller. Pertama-tama mikrokontroller akan mengeluarkan tegangan 5V
(logika HIGH) pada pin3 (lampu1), kemudian menahan nyala lampu selama 1000
ms, setelah itu lampu akan dimatikan selama 1000ms, dan berulang kembali.
Gambar berikut ini menunnjukan contoh penulisan sketch pada IDE program
Arduino
Semua pin pada Arduino, baik pin digital maupun pin analog, dapat digunakan
sebagai pin digital. Digital berarti sinyal yang dikirimkan/diterima bernilai 1 atau
0, on atau off, HIGH atau LOW, ada atau tidak ada sinyal. Berbeda dengan sinyal
analog yang nilainya bersifat kontinyu, yakni nilai antara 0 dan 1
dipertimbangkan. Pin digital berarti pin dapat menerima/mengirim sinyal digital.
Secara umum pin pada Arduino dapat dikonfigurasi ke dalam dua mode, yaitu
mode input dan output. Mode input berarti mengeset pin agar dapat digunakan
untuk menerima masukan sinyal. Mode output berarti mengeset pin agar dapat
mengirimkan sinyal.
Untuk mengeset mode pin, kita gunakan fungsi pinMode(). Fungsi ini biasanya
dipanggil di dalam fungsi setup(). fungsi ini memerlukan dua parameter,
pinMode([nomorPin], [mode]). Parameter pertama diisi oleh nomor pin, dan
parameter kedua diisi oleh konstanta INPUT atau OUTPUT, sesuai dengan
mode yang ingin kita gunakan. Sebagai contoh, lihat pada kode berikut.
void setup()
{
pinMode(1, INPUT); // set pin 1 sebagai pin input
pinMode(2, OUTPUT); // set pin 2 sebagai pin
output
}
Pada dasarnya semua pin yang ada pada Arduino (ATMega) berada pada mode
input secara default. Jadi ketika kita ingin menggunakan suatu pin sebagai input,
maka kita tidak mesti menuliskan pinMode(nomorPin, INPUT);.
Untuk menerima input digital yang masuk ke pin, kita gunakan fungsi
digitalRead(nomorPin). Fungsi ini menerima satu parameter, yaitu nomor pin
mana yang akan dibaca nilai inputnya. Fungsi ini akan mengembalikan nilai 1 dan
0, atau HIGH dan LOW (HIGH adalah konstanta dengan nilai 1 dan LOW adalah
konstanta dengan nilai 0). Supaya lebih paham, silakan coba contoh berikut.
Skenarionya adalah kita akan menghubungkan pushbutton ke pin 2 dan
menyalakan LED yang ada pada board Arduino Uno ketika pushbutton tersebut
ditekan.
Bahan-bahan yang diperlukan untuk percobaan ini diantaranya:
Arduino Uno board
Kabel jumper
1 buah resistor 10K ohm
Breadboard
Pushbutton/switch
Buat rangkaian seperti
berikut:
Gambar 2.4. Rangkaian Pushbutton
Pada gambar di atas, kita menghubungkan salahsatu satu kaki pushbutton ke pin 2
(kabel biru) dan GND (kabel hitam), dan menghubungkan kaki pin yang lain ke
5V (kabel merah) pada Arduino. Kaki pin yang terhubung ke GND harus
melalui pull-down resistor. Pada saat button terbuka (tidak ditekan), maka kedua
kaki button tidak terhubung sehingga pin 2 akan terhubung dengan GND dan nilai
yang dibaca pin 2 adalah LOW. Ketika button ditekan, maka kedua kaki pin akan
terhubung, menghubungkan pin 2 dengan 5V sehingga nilai yang diterima pin
adalah HIGH.
Sekarang kita tuliskan program untuk membaca nilai pin 2 dan menyalakan LED
pada Arduino ketika pin 2 bernilai HIGH. LED pada Arduino Uno terhubung
dengan pin 13, maka untuk menyalakan LED tersebut, kita akan memberikan
sinyal digital HIGH pada pin 13. Kalo Kamu menggunakan board yang lain, cari
tau pin mana yang digunakan untuk LED pada board tersebut.
// kita buat variabel untuk nomor pin supaya lebih mudah
merujuknya const int pinButton = 2;
const int pinLed = 13;
void setup() {
// set mode input pada pin untuk button, ga
wajib pinMode(pinButton, INPUT);
void loop() {
// baca nilai pin untuk button
nilaiButton = digitalRead(pinButton);
// cek apakah button ditekan
if (nilaiButton == HIGH) {
// nyalakan LED
digitalWrite(pinLed, HIGH);
Rangkaiannya sama seperti percobaan pertama, dan kita hanya menambah LED
saja. LED atau Light Emitting Diode memiliki dua buah kaki yakni anoda (+) dan
katoda (-). Biasanya kaki anoda atau positif dibuat lebih panjang daripada kaki
negatif agar mudah dikenali. Kaki positif dihubungkan dengan pin 3 melalui
resistor 220 ohm. Kaki negatif dihubungkan dengan GND. Kesalahan pemasangan
posisi kaki membuat LED tidak menyala dan pemasangan LED tanpa
menggunakan resistor kemungkinan besar akan membuat LED kelebihan
arus yang menyebabkan LED terbakar dan rusak.
Sekarang kita akan menulis program supaya LED mengedipkan cahaya ketika
pushbutton ditekan dan mati ketika pushbutton
dilepas. const int pinButton = 2;
const int pinLed = 3;
void setup() {
// set mode input pada pin untuk button, ga
wajib pinMode(pinButton, INPUT);
void loop() {
// baca nilai pin untuk button
nilaiButton = digitalRead(pinButton);
Pin analog pada Arduino (dan mikrokontroller lain pada umumnya) dapat
digunakan untuk input dan output digital. Hanya saja pin analog memiliki fitur
untuk dapat mengubah sinyal analog yang masuk menjadi nilai digital yang
mudah diukur. Pin digital hanya dapat mengenali sinyal 0 volt sebagai nilai LOW
dan 5 volt sebagai nilai HIGH. Sedangkan Pin analog dapat mengenali sinyal pada
rentang nilai voltase tersebut. Hal ini sangat berguna ketika kita hendak mengukur
sesuatu dari sensor dan menggunakan nilai masukan tersebut untuk keperluan lain.
Pin analog ini terhubung dengan converter pada mikrokontroller yang dikenal
dengan istilah analog-to-digital converter (disingkat ADC atau A/D). Converter
ini mengubah nilai analog berbentuk sinyal voltase ke dalam bentuk digital/angka
supaya nilai analog ini dapat digunakan dengan lebih mudah dan aplikatif. Pada
Arduino (mikrokontroller ATMega) converter ini memiliki resolusi 10 bit,
artinya nilai hasil konversi berkisar dari 0 hingga 1023. Pada Arduino UNO, pin
analog ditandai dengan label A0 sampai A5. Pada board lainnya, pin-pin yang
diberi tanda A, Analog, ADC adalah pin analog.
Fungsi yang kita gunakan untuk membaca nilai analog pada Arduino adalah
analogRead([nomorPin]). Pada contoh kasus berikut, kita akan menghubungkan
potensiometer pada pin analog A5 dan hasil konversi nilai analog akan
kita lihat pada jendela Serial Monitor pada Arduino IDE.
Adapun bahan-bahan yang diperlukan untuk percobaan ini diantaranya:
Arduino Uno board
Kabel jumper
Potensiometer
Breadboard
Buatlah rangkaian seperti berikut:
void setup()
{
Serial.begin(9600); // setup koneksi serial
}
void loop() {
val = analogRead(pinPot); // baca nilai analog dari
potensiometer
Serial.println(val); // kirim nilai val ke koneksi
serial
delay(100); // beri jeda hingga pengulangan
selanjutnya
}
Upload kode program. Pastikan Kamu sudah mengeset board dengan Arduino
Uno dan memilih port yang sesuai dengan koneksi USBmu. Setelah proses upload
berhasil, buka jendela Serial Monitor dengan memilih menu Tools > Serial
Monitor atau mengklik tombol Serial Monitor yang ada di sebelah kanan atas
jendela Arduino IDE. Kamu dapat mengamati nilai analog yang masuk dan
melihat perubahannya sambil memutar-mutar kenop potensiometer.
Kita dapat mengirimkan sinyal HIGH dan LOW atau on dan off pada Arduino
untuk menyalakan dan mematikan sesuatu menggunakan digitalWrite().
Bagaimana kalo kita ingin mengaktifkan sesuatu dengan kekuatan tertentu dan
bisa diubah-ubah sesuai keperluan, seperti misalnya mengatur intensitas cahaya
LED atau mengatur kecepatan putaran motor? Dalam hal ini kita punya analog
output. Analog output pada Arduino berarti kita mengirimkan sinyal analog
dengan intensitas yang ditentukan sesuai kebutuhan.
Analog input dihasilkan oleh teknik yang dikenal dengan istilah PWM atau Pulse
Width Modulation. PWM memanipulasi keluaran digital sedemikian rupa
sehingga menghasilkan sinyal analog. Mikrokontroler mengeset output digital ke
HIGH dan LOW bergantian dengan porsi waktu tertentu untuk setiap nilai
keluarannya. Durasi waktu untuk nilai HIGH disebut pulse width atau panjang
pulsa. Variasi nilai output analog didapatkan dari perubahan panjang pulsa yang
diberikan pada satu periode waktu dan dilakukan berulang-ulang. Untuk lebih
jelasnya perhatikan ilustrasi berikut:Kondisi HIGH adalah kondisi ketika sinyal
berada di atas grafik (5V) dan LOW adalah ketika sinyal berada di bawah (0V).
Duty cycle adalah persentasi panjang pulsa HIGH dalam satu periode sinyal.
Ketika duty cyclenya 0% atau sinyal LOW penuh, maka nilai analog yang
dikeluarkan adalah 0V atau setara dengan GND. Ketika duty cyclenya 100% atau
sinyal HIGH penuh maka sinyal yang dikeluarkan adalaah 5V.
Untuk mengatur nilai duty cycle, kita gunakan fungsi analogWrite([nomorPin],
[nilai]). Nilai pada parameter kedia berkisar antara 0 hingga 255. Bila kita hendak
mengeset duty cycle ke 0%, maka kita set nilai parameter ke 0, dan untuk duty
cycle 100%, maka kita set nilai parameter ke 255. Jadi bila misalkan kita hendak
mengeset duty cycle ke 50%, berarti nilai yang harus kita set adalah 127 (50% x
255).
Sebenarnya berdasarkan konsep PWM di atas, kita dapat mensimulasikan PWM
pada semua pin digital. Tapi khusus penggunaan fungsi digitalWrite() kita hanya
bisa menggunakannya pada pin-pin PWM. Seperti pada Arduino Uno, pin yang
dapat menggunakan fungsi ini hanya pin 3, 5, 6, 9, 10 dan 11. Biasanya pin PWM
disimbolkan dengan karakter '~'.
Demikian sekilas tentang teori PWM. Supaya lebih paham tentang analog output,
kita coba implementasikan ke dalam rangkaian.
Bahan-bahan yang diperlukan untuk percobaan berikut diantaranya;
Arduino Uno board
Breadboard
kabel jumper
LED
Resistor 220 ohm
void setup(){}
void loop() {
// buat iterasi dari 0 sampai 255 dengan kelipatan
5 for (int nilai = 0; nilai <= 255; nilai += 5) {
// set nilai analog menggunakan iterasi di atas
analogWrite(pinLed, nilai);
delay(30);
}
// buat iterasi mundur dari 255 ke 0 dengan kelipatan 5
for (int nilai = 255; nilai >= 0; nilai -= 5) {
// set nilai analog menggunakan iterasi di atas
analogWrite(pinLed, nilai);
// beri jeda waktu 3 milidetik
delay(30);
}
}
Upload program. Bila program berhasil diupload, Kamu akan melihat LED
menyala perlahan dari redup ke terang lalu kemudian meredup hingga mati.
Begitu seterusnya.
BAB 3. PENUTUP
3.1 Kesimpulan
3.2 Saran
Tantang dan asah diri anda dengan membuat berbagai macam project sederhana
maupun kompleks, karena dengan melakukan itu kita dapat terus mengasah
algoritma menjadi semakin baik.
DAFTAR PUSTAKA