Bab 3 Pengenalan Bahasa C
1. Pengenalan Board
Pada bagian ini, kita akan belajar mengenai board yang akan kita gunakan yaitu DOIT ESP32 DevKit v1 seperti pada Gambar 1. Kita akan menggunakan board berbasis ESP32 karena board ini memiliki peripheral yang cukup lengkap, sudah tersedia Wi-Fi dan Bluetooth, serta harganya yang cukup terjangkau.
Berikut ini merupakan spesifikasi ESP32 yang akan kita gunakan:
Jumlah CPU core: 2
Arsitektur CPU: 32-bit
Clock frequency: up to 240 MHz
SRAM: 320 KB
Flash memory: 4 MB
Wireless connectivity: Wi-Fi 802.11 b/g/n, Bluetooth 4.2
Peripheral: GPIO, Timer, PWM, UART, SPI, I2C, ADC, DAC, dll.
Pins: 30 atau 36 tergantung versi board
I/O voltage: 3.3 V
Gambar 2 menampilkan pin pada board DOIT ESP32 DevKit v1 (versi 30 pins). Pin-pin pada board ini memiliki tegangan kerja 3.3 V. Pin-pin tersebut dapat dikonfigurasi sebagai output, input, atau fungsi dari peripheral seperti UART, I2C, SPI, ADC, dll. Konfigurasi tersebut dilakukan di kode yang kita buat.
2. Struktur Program
Pada bagian ini, kita akan mempelajari struktur program Arduino. Dalam pemrograman Arduino, file kode C yang buat disebut juga “sketch”. Dalam pemrograman dasar C, kita mengenal fungsi main()
sebagai fungsi utama yang dipanggil, tetapi pada sketch Arduino terdiri dari dua fungsi utama yaitu setup()
dan loop()
seperti pada kode berikut ini.
Fungsi setup()
dipanggil hanya satu kali ketika board dinyalakan atau di-reset. Fungsi ini digunakan untuk inisialisasi variable, pin, library, dll. Fungsi loop()
, sesuai dengan namanya, fungsi ini akan dijalankan terus menerus sampai board dimatikan atau di-reset. Fungsi ini digunakan untuk membuat fungsionalitas dari program yang kita inginkan.
3. Tipe Data
Tipe data digunakan untuk deklarasi variable yang akan berisi data kita. Tipe data akan menentukan berapa banyak memori yang diperlukan dan bagaimana bit-bit yang tersimpan dalam memori tersebut akan diinterpretasikan.
Berikut ini merupakan tipe data yang biasa digunakan pada Arduino:
boolean (8 bit): logika true atau false.
byte (8 bit): unsigned number dari 0 sampai 255.
char (8 bit): signed number dari −128 sampai 127. Biasanya digunakan untuk menyimpan karakter ASCII.
unsigned char (8 bit): sama seperti tipe data 'byte'.
word (16 bit): unsigned number dari 0 sampai 65535
unsigned int (16 bit): sama seperti tipe data 'word'.
int (16 bit): signed number dari −32768 sampai 32767. Merupakan tipe data yang paling sering digunakan pada sketch Arduino.
unsigned long (32 bit): unsigned number dari 0 sampai 4.294.967.295. Biasanya digunakan untuk menyimpan nilai waktu dalam milliseconds dari fungsi millis().
long (32 bit): signed number dari −2.147.483.648 sampai 2.147.483.647.
float (32 bit): signed number dari −3.4028235×1038 sampai 3.4028235×1038.
Tipe signed dapat menyimpan angka positif dan negatif, tetapi tipe unsigned hanya bisa menyimpan angka positif.
4. Variable
Variable merupakan nama yang diberikan ke lokasi memori tempat menyimpan data kita. Variable kita buat dengan menentukan tipe datanya terlebih dahulu. Nama variable dapat terdiri dari huruf, angka, dan karakter underscore. Nama variable harus dimulai dari huruf atau underscore, tidak bisa dimulai dengan angka. Dalam bahasa C, huruf besar (kapital) dan huruf kecil itu dianggap berbeda (case sensitive).
Salah satu hal yang perlu dipahami saat membuat variable yaitu variable scope. Ada dua jenis variable scope yaitu local variable dan global variable. Local variable merupakan variable yang dideklarasikan di dalam sebuah fungsi. Variable tersebut hanya bisa digunakan di dalam fungsi tersebut. Contoh deklarasi local variable dapat dilihat pada kode berikut ini.
Global variable merupakan variable yang dideklarasikan di luar semua fungsi, biasanya di bagian atas program. Global variable dapat diakses dari semua fungsi. Contoh deklarasi global variable dapat dilihat pada kode berikut ini.
5. Operator
Operator merupakan simbol yang berfungsi untuk melakukan operasi matematika atau logika. Bahasa C memiliki banyak operator yang dapat dikelompokkan menjadi beberapa bagian:
Arithmetic operator
Comparison operator
Boolean operator
Bitwise operator
Compound operator
5.1. Arithmetic Operator
Arithmetic operator banyak digunakan untuk membuat perhitungan matematika. Asumsikan kita memiliki dua variable, a
bernilai 1
dan b
bernilai 2
, maka:
5.2. Comparison Operator
Comparison operator banyak digunakan untuk membuat kondisi pada if atau loop statement. Asumsikan kita memiliki dua variable, a
bernilai 1
dan b
bernilai 2
, maka:
5.3. Boolean Operator
Boolean operator banyak digunakan untuk membuat kondisi pada if atau loop statement. Asumsikan kita memiliki dua variable, a
bernilai 1
dan b
bernilai 2
, maka:
5.4. Bitwise Operator
Bitwise operator banyak digunakan untuk memanipulasi bit-bit dalam sebuah variable. Asumsikan kita memiliki dua variable, a
bernilai 6
dan b
bernilai 12
serta jumlah bit pada kedua variable tersebut adalah 8-bit, maka:
5.5. Compound Operator
Compound operator merupakan operator yang biasa digunakan untuk mempersingkat penulisan kode agar lebih ringkas. Asumsikan kita memiliki dua variable, a
bernilai 1
dan b
bernilai 2
, maka:
6. If Statement
Statement if
digunakan untuk membuat keputusan berdasarkan beberapa kondisi yang mungkin terjadi. Jika salah satu kondisi tersebut terjadi, maka kode untuk kondisi tersebut akan dijalankan.
6.1. if
Statement if
paling sederhana ditunjukan pada kode berikut ini. Jika expression
bernilai true
, maka kode di dalam blok tersebut akan dijalankan. Jika expression
bernilai false
, maka kode di dalam blok tersebut tidak akan dijalankan.
6.2. if...else
Statement if...else
ditunjukan pada kode berikut ini. Jika expression
bernilai true
, maka kode di dalam blok if
akan dijalankan. Sebaliknya, jika expression
bernilai false
, maka kode di dalam blok else
yang akan dijalankan.
6.3. if...else if...else
Statement if...else if...else
ditunjukan pada kode berikut ini. Terdapat blok untuk kondisi else if
. Blok else if
ini bisa terdapat lebih dari satu.
Jika
expression_1
bernilaitrue
, maka kode untuk blokexpression_1
tersebut akan dijalankan.Jika
expression_2
bernilaitrue
, maka kode untuk blokexpression_2
tersebut akan dijalankan.Jika
expression_1
danexpression_2
bernilaifalse
, maka kode untuk blokel
yang akan dijalankan.
7. Loop Statement
Loop statement berfungsi untuk melakukan perulangan dalam menjalankan suatu blok kode. Perulangan tersebut dijalankan selama kondisi bernilai true
. Jika kondisi sudah bernilai false
, maka perulangan akan dihentikan.
7.1. while
while
statement akan menjalankan kode di dalam blok tersebut terus-menerus sampai kondisi expression bernailai false
.
7.2. do...while
do...while
statement mirip seperti while
statement, tetapi pengecekan kondisi expression dilakukan di akhir setelah mejalankan kode blok satu kali. Sedangkan pada while
statement pengecekan kondisi expression dilakukan di awal sebelum mejalankan kode blok.
7.3. for
for
statement akan menjalankan kode blok sebanyak jumlah yang telah ditentukan. for
statement berbeda dengan while
dan do...while
statement, karena jumlah perulangannya telah diketahui dari awal.
8. Function
Function merupakan kode program yang dirancang untuk menyelesaikan suatu tugas tertentu. Function akan sangat berguna jika tugas tersebut perlu dilakukan berberapa kali di bagian kode yang berbeda, sehingga kita tidak perlu menuliskan kode tersebut berberapa kali. Kita hanya perlu menuliskan function tersebut satu kali, kemudian kita bisa panggil function tersebut berberapa kali di bagian kode yang berbeda.
Kode tersebut merupakan struktur dasar function pada pemrograman C yang terdiri dari:
function_name
: merupakan nama yang kita berikan untuk mengidentifikasi function tersebut.argument_1, argument_2, ...
: merupakan input dari function tersebut.return_type
: merupakan tipe data dari output function tersebut.
Di dalam kode blok tersebut berisi kode untuk melakukan suatu tugas. Misalkan fungsi untuk menghitung luas persegi panjang, maka input-nya adalah panjang dan lebar, sedangkan output-nya adalah luas.
Last updated