DHEA AMANDA ASTUTI

Contoh Pemrograman Modul LDR

Halo, selamat datang di Bony3D!

Modul LDR adalah komponen elektronika yang berfungsi sebagai pendeteksi cahaya yang akurat. Modul ini banyak digunakan dalam aplikasi rumah tangga maupun area umum seperti alarm, lampu tidur, penerang jalan umum, dan berbagai alat elektronik yang membutuhkan spesifikasi cahaya untuk on dan off-nya. Dengan semua manfaatnya, bagaimana cara kita memprogram modul ini agar bisa bekerja semestinya? Artikel ini akan membahas tuntas tentang bagaimana sih cara memprogram modul LDR. Yuk kita mulai!
Perhatikan kode pemrograman berikut:

void setup()

{

Serial.begin(9600);

}

void loop()

{

unsigned int AnalogValue;

AnalogValue = analogRead(A0);

Serial.println(AnalogValue);

}

Masukkan kode pemrograman diatas kedalam software arduino IDE dan lihat hasilnya pada menu serial monitor. Serial monitor akan menunjukkan hasil angka yang didapat dari perubahan masukan cahaya ke modul sensor LDR. Nilai di serial monitor akan semakin besar jika cahaya terdeteksi redup dan sebaliknya nilai akan menurun seiring cahaya meningkat. Perhatikan gambar dibawah:
Gambar 1. Nilai pada Serial Monitor
Komponen yang biasa digunakan untuk proyek ini, diantaranya:
1. Board arduino, bisa menggunakan berbagai jenis board-nya seperti arduino uno, arduino mega, arduino nano, arduino mikro, dan lain sebagainya. Fungsi dari board ini adalah untuk menyimpan kode pemrograman yang dibuat dari software arduino IDE dan diaplikasikan pada komponen yang terhubung dengan pin board arduino.
2. LED atau light emiting diode yaitu komponen yang mampu mengubah energi listrik menjadi energi cahaya. Fungsi LED dari proyek ini sebagai penentu atau indikator berjalan atau tidaknya program. Tanpa LED, seorang programmer akan kesulitan menentukan terang redupnya cahaya berdasarkan nilai resistansi sensor LDR.
3. Resistor ialah komponen elektronika yang berfungsi sebagai pengontrol arus listrik dengan cara memberi hambatan pada arus yang dilewatinya sehingga beban berada pada ambang batas normal. Tanpa menggunakan resistor, beban akan aktif dengan deteksi cahaya terang yang mengakibatkan kerusakan sementara sampai permanen yaitu terbakar. Penggunaan resistor harus disesuaikan dengan kebutuhan, karena semakin besar nilai resistansi, semakin besar hambatan yang diberikan dan semakin kecil nilai resistansi, semakin kecil juga hambatan yang disalurkan.
4. Breadboard yaitu komponen yang digunakan untuk menghubungkan semua komponen elektronika yang akan disambungkan ke board arduino. Breadboard memiliki 3 bagian, bagian atas dan bawah untuk sisi positif dan negatif yang lubangnya saling terhubung secara horizontal. Bagian tengah berisikan lubang-lubang yang terhubung secara vertikal digunakan untuk menghubungkan komponen elektronika.
5. Kabel jumper ialah kabel dengan memiliki 3 spesifikasi. Male to male, male to female, dan female to female. Setiap jenisnya digunakan untuk kondisi yang berbeda sesuai kebutuhan.
Setelah mengetahui komponen yang diperlukan serta contoh kode diatas, yuk perhatikan skema penghubungan board arduino dengan modul LDR!
Gambar 2. Skema Modul LDR dan Arduino
Selain kode pemrograman diatas yang berfungsi untuk mengetahui nilai resistansi modul LDR, ada juga kode pemrograman yang berfungsi untuk hanya mengetahui apakah hasil dari identifikasi cahaya modul LDR bernilai 0 atau 1? 0 berarti redup dan 1 berarti terang. Perhatikan kode berikut:
// Declare your LDR sensor out pin connected Arduino pin “D3” 
 int LDRSensor = 2;

void setup()
 {
  //Initialize Sensor (pin3) as an INPUT.
  pinMode (LDRSensor, INPUT);
  //Define baud rate for serial communication
  Serial.begin (9600);
 }
 
void loop()
 {
  //Read Digital output value from sensor using digitalRead()function
  int Sensordata = digitalRead (LDRSensor);
  //Print the sensor value on your serial monitor window
  Serial.print("Sensor value:");
  Serial.println(Sensordata);
  //Delay for 1 second to get clear output on the serial monitor
  delay(1000);
 }
Hasil dari kode pemrograman diatas, jika dilihat pada serial monitor akan tampil seperti ini:
Gambar 3. Serial Monitor High dan Low
Dengan menggabungkan semua komponen yang dibutuhkan proyek ini, skema yang dibuat seperti ini:
Gambar 4. Skema Proyek Modul LDR
Hasil yang didapatkan dari proyek ini adalah jika cahaya lingkungan terdeteksi terang maka nilai resistansi menurun atau dalam hal ini adalah 0 atau low. Ketika cahaya terdeteksi redup maka nilai resistansi akan meningkat (1 atau high). Kode pemrograman pada proyek ini berbeda karena menggunakan 2 LED, perhatikan program dibawah:
// Nyatakan pin keluar sensor LDR Anda terhubung pin Arduino “D2” 
 int LDRSensor = 2; 
 // Nyatakan pin LED Hijau dan Merah Anda terhubung dengan pin Arduino “D5 dan D4” 
 int LED1 = 5; 
 int LED2 = 4; 
 
void setup() 
 { 
  //Inisialisasi Sensor (pin3) sebagai INPUT. 
  pinMode (LDRSensor, INPUT); 
  //Inisialisasi LED sebagai 
  pinMode OUTPUT (LED1, OUTPUT); 
  pinMode (LED2, KELUARAN); 
  //Menetapkan baud rate untuk komunikasi serial 
  Serial.begin (9600); 
 } 
 
void loop() 
 { 
   //Baca nilai keluaran digital dari sensor menggunakan digitalRead()function 
   int Sensordata = digitalRead (LDRSensor); 
   //Cetak nilai sensor pada jendela monitor serial Anda 
   Serial.print("Nilai sensor:"); 
   Serial.println(Sensordata); 
 // saat sensor LDR mendeteksi cahaya 
 if (Sensordata == 0) 
  { 
   digitalWrite(LED1, HIGH); // LED hijau menyala 
   digitalWrite(LED2, RENDAH); // LED merah mati 
  } 
 
 else if (Sensordata == 1) 
  { 
   digitalWrite(LED1, LOW); // LED hijau matikan 
   digitalWrite(LED2, HIGH); // LED merah menyala 
  } 
 }
Setelah cukup memahami mengenai apa itu modul LDR dan contoh pemrogramannya, harapannya dapat berguna bagi para calon programmer untuk melalukan proyek kedepannya.
Terima kasih telah meluangkan waktunya untuk membaca artikel ini, sehat-sehat semuanya, sampai jumpa!
Referensi:
Admin. (2020, 1 Agustus). Menghubungkan Sensor LDR dengan Arduino Kode Arduino Sensor LDR untuk Output Digital. https://www.electroduino.com/ldr-sensor-module-with-arduino-ldr-sensor-arduino-code/.
Mybotic. Antarmuka Modul Sensor LDR dengan Arduino. https://www.instructables.com/LDR-Sensor-Module-Users-Manual-V10/.
Gambar 1. Sumber: Mybotic. Antarmuka Modul Sensor LDR dengan Arduino. https://www.instructables.com/LDR-Sensor-Module-Users-Manual-V10/.
Gambar 2, 3, dan 4. Sumber: Admin. (2020, 1 Agustus). Menghubungkan Sensor LDR dengan Arduino Kode Arduino Sensor LDR untuk Output Digital. https://www.electroduino.com/ldr-sensor-module-with-arduino-ldr-sensor-arduino-code/.

Apa Itu Modul LDR?

Halo, selamat datang di Bony3D!

Jika LDR adalah komponen tunggal untuk mengontrol beban dengan spesifikasi identifikasi cahaya, maka modul LDR adalah komponen dengan tujuan yang sama namun perbedaannya pada peletakan LDR. Modul LDR adalah komponen yang di dalamnya terdapat sensor LDR sedangkan LDR tidak terdapat modul di dalamnya. Jika bisa dibilang, modul LDR adalah seri lengkapnya dari LDR. Lalu apa sih sebenarnya modul LDR itu? Saya akan membahas dalam artikel ini, yuk disimak!
Selain memiliki fungsi sebagai pendeteksi cahaya seperti LDR, modul LDR lebih teliti dalam mendeteksi cahaya sehingga sangat berguna untuk mengaktifkan dan menonaktifkan fungsi pada proyek arduino dibandingkan komponen tunggal LDR. Nilai resistansi pada modul LDR berubah sesuai kondisi cahaya, prinsipnya sama dengan sensor LDR yaitu ketika cahaya terang maka nilai resistansinya turun dan sebaliknya ketika cahaya redup maka nilai resistansinya meningkat.
Gambar 1. Modul Sensor LDR & LDR
Gambar diatas menunjukkan perbedaan fisik antara LDR dengan modul sensor LDR. Sekarang sudah tahu perbedaannya bukan? Selanjutnya mari perhatikan pin apa saja yang terdapat dalam modul ini:
Gambar 2. Pin Modul Sensor LDR
Berikut penjelasan rinci mengenai pin tersebut:
1. Pin VCC yang dihubungkan melalui kabel jumper male to female ke board arduino VCC di tegangan 3,3V sampai 5V sesuai board arduino yang digunakan.
2. Pin GND yang dihubungkan melalui kabel jumper male to female ke board arduino GND.
3. Pin DO atau digital output, seperti namanya yaitu pin dengan keluaran nilai digital yang memiliki indikasi meningkatnya nilai ketika cahaya redup dan menurunnya nilai ketika cahaya terang.
4. Pin AO atau analog output, seperti namanya yaitu pin dengan keluaran nilai analog yang memiliki indikasi sama yaitu nilai akan menurun ketika cahaya dideteksi terang serta meningkatnya nilai ketika cahaya dideteksi redup.

Sensor LDR memiliki 2 indikator LED, yaitu:
1. Indikator PWR-LED untuk daya.
2. Indikator DO-LED untuk status lampu pada digital output.
Prinsip kerja dari modul sensor LDR ialah bergantung pada pencahayaan. Jika cahaya terang maka nilai resistansi akan menurun dan sebaliknya ketika cahaya redup maka nilai resistansi akan meningkat, seperti yang ditunjukkan pada grafik berikut:
Gambar 3. Modul Sensor LDR
Jika kita ingat kembali, ada 2 pin output pada modul LDR, pertama digital output dan kedua analog output.
1. Pin digital output memiliki potensiometer yang difungsikan untuk mengatur sensitivitas cahaya. Jika nilai yang dihasilkan diatas ambang batas cahaya (terang) maka pin keluaran ada di posisi 0 dan DO-LED menyala serta jika nilai yang dihasilkan dibawah ambang batas cahaya (redup) maka pin keluaran ada di posisi 1 dan DO-LED mati.
2. Pin analog output akan menghasilkan nilai resistansi yang rendah jika cahaya terdeteksi terang dan saat cahaya redup maka nilai resistansi akan meningkat.
Karena modul sensor LDR memiliki 2 output yaitu digital dan analog maka dasar penghubungan kabelnya pun berbeda sesuai kebutuhan, jika hanya menggunakan digital output saja maka skemanya seperti ini:
Gambar 4. Pin DO
Berikut skema jika menggunakan output analog saja, kebalikan dari skema sebelumnya:
Gambar 5. Pin AO
Terakhir ada skema penghubungan kabel AO dan DO yaitu:
Gambar 6. Pin AO dan DO
Lalu apa sih sebenarnya yang ada didalam modul LDR ini? Yuk kita lihat!
Gambar 7. Skema Modul LDR
Dari skema diatas kita bisa mengetahui bahwa ada beberapa ciri dari modul LDR.
1. Menggunakan sensor resistansi fotosensitif yang sensitif.
2. Sinyal keluaran komparator bersih, bentuk gelombang yang baik dan memiliki kemampuan mengalirkan arus listrik sebesar 15mA.
3. Modul LDR dilengkapi dengan potensiometer yang digunakan untuk mengatur pendeteksian cahaya.
4. Modul LDR dapat bekerja pada tegangan arduino yakni 3,3V sampai 5V.
5. Output Modul LDR berupa analog dan digital.
6. Modul LDR memiliki lubang baut yang tetap untuk memudahkan pemasangan.
7. Modul LDR menggunakan komparator LM393 tegangan lebar.
Sekian artikel hari ini, selanjutnya Saya akan membahas contoh pemrograman dari modul LDR.
Ditunggu ya!
Referensi:
Admin. (2023, 27 November). Cara Menggunakan Modul Sensor LDR dengan Arduino. https://how2electronics.com/how-to-use-ldr-sensor-module-with-arduino/.
Arduino Modul LDR. https://arduinogetstarted.com/tutorials/arduino-ldr-module.
Gambar 1. Sumber: Admin. (2023, 27 November). Cara Menggunakan Modul Sensor LDR dengan Arduino. https://how2electronics.com/how-to-use-ldr-sensor-module-with-arduino/.
Gambar 2. Sumber: Arduino Modul LDR. https://arduinogetstarted.com/tutorials/arduino-ldr-module.
Gambar 3. Sumber: Admin. (2023, 27 November). Cara Menggunakan Modul Sensor LDR dengan Arduino. https://how2electronics.com/how-to-use-ldr-sensor-module-with-arduino/.
Gambar 4, 5, dan 6. Sumber: Arduino Modul LDR. https://arduinogetstarted.com/tutorials/arduino-ldr-module.
Gambar 7. Sumber: Admin. (2023, 27 November). Cara Menggunakan Modul Sensor LDR dengan Arduino. https://how2electronics.com/how-to-use-ldr-sensor-module-with-arduino/.

Contoh Pemrograman LDR

Halo, selamat datang di Bony3D!

LDR adalah sensor cahaya yang mana sering digunakan pada lampu tidur, alarm, juga penerangan jalan. Memanfaatkan sensitivitasnya terhadap cahaya, membuatnya memiliki nilai resistansi berubah setiap waktu. Saat pagi datang, sensor akan memiliki nilai resistansi yang kecil hingga memadamkan cahaya lampu jika diaplikasikan pada lampu. Saat malam tiba, sensor akan menambah nilai resistansinya yang membuat lampu menyala terang benderang. Lantas, bagaimana sih cara seorang programmer memanfaatkan LDR dengan segala fungsinya? Artikel ini menunjukkan contoh pemrograman sensor LDR atau resistor variabel ini. Yuk disimak!
Langkah pertama yang harus dilakukan sebelum memprogram LDR yakni menyiapkan komponen yang diperlukan sesuai proyek yang akan dibuat. Umumnya apapun proyeknya pasti dibutuhkan breadboard. Apa itu?
Gambar 1. Breadboard
Breadboard sering digunakan dalam proyek elektronika karena tanpanya komponen harus dihubungkan dengan papan PCB dengan solder. Bagi programmer yang hanya ingin proyek percobaan pasti menggunakan breadboard untuk mengetahui terlebih dahulu hasilnya berjalan atau tidak. Seperti pada gambar, breadboard memiliki beberapa lubang yang dipisahkan dengan 3 strip. strip pertama dan ketiga ialah positif negatif dan strip kedua yang berada di tengah digunakan untuk menghubungkan berbagai komponen elektronika yang ingin dipakai dengan ketentuan setiap lubang vertikal saling terhubung sedangkan pada strip satu dan tiga, lubang horizontal yang saling terhubung.
Komponen kedua yang sering digunakan dalam pemrograman LDR ialah resistor. Resistor dalam rangkaian digunakan sebagai pengontrol arus dengan cara memberikan hambatan kepada arus yang mengalir.
Komponen ketiga yaitu LED atau light emiting diode yang biasa digunakan dalam proyek LDR karena hubungannya sangat erat. LED dalam proyek ini digunakan sebagai indikator berjalan atau tidaknya proyek LED. Seperti pada prinsipnya, LED akan menyala jika nilai resistansi LDR tinggi dan LED akan mati jika nilai resistansi LDR rendah. Untuk mengetahui perubahan nilai resistansi, kita bisa loh menggunakan fitur serial monitor pada software arduino IDE!
Komponen keempat ialah kabel jumper. Fungsi kabel jumper ialah sebagai penghubung antara komponen dan board arduino. Kabel jumper ada 3 jenis, yaitu male to male, male to female, dan female to female.
Komponen terakhir ialah board arduino. Saya menggunakan board arduino uno R3 dan untuk board yang lain tentu bisa digunakan sesuai kebutuhan. Board arduino berfungsi sebagai penyimpan kode dan otak untuk menjalankan komponen sesuai rancangan kode yang sudah dibuat. Spesifikasi board arduino berbeda setiap jenisnya, oleh karena itu gunakanlah sesuai dengan kebutuhan proyekmu ya!
Jika semua komponen sudah disiapkan, selanjutnya siapkanlah software-nya. Software yang paling sering dipakai untuk membuat kode pemrograman arduino adalah dengan nama yang sama yaitu software arduino IDE. Software ini bisa diunduh secara gratis dengan fungsi membuat, mengedit, mengupload program kode ke board arduino untuk selanjutnya dijalankan pada komponen yang akan digunakan.
Selanjutnya, bagaimana dengan pemrograman LDR? Kode pemrograman LDR disesuaikan dengan output yang ingin dihasilkan. Saya akan memberikan contoh bagaimana cara memprogram LDR menggunakan software arduino IDE:
//Program untuk mengontrol nyala LED dengan input dari nilai LDR

int Led = 10; //deklarasi LED pada pin 10 Arduino
int LDR = A5; //deklarasi LDR pada pin A5 Arduino
void setup()
{
pinMode(Led, OUTPUT); //deklarasi LED sebagai output
}
void loop()
{
int cahaya = analogRead(LDR); //membaca nilai ADC LDR
//jika nilai ADC > 800 maka
if (cahaya > 800)
{
digitalWrite(Led, HIGH); // LED menyala
}
else //atau
{
digitalWrite(Led, LOW); // LED mati
}
}
Kode diatas digunakan untuk mengontrol LED dengan spesifikasi identifikasi cahaya. Ketika cahaya redup maka LED akan aktif dan disaat cahaya terang maka LED akan non-aktif. Lantas apa saja arti beberapa fungsi yang terdapat dalam kode? Yuk kita bahas!
1. Pin A5 digunakan untuk membaca sensor LDR.
2. Serial.begin(9600) digunakan untuk menunjukkan baud rate antara arduino dengan komputer yang bertujuan untuk komunikasi dengan nilai sebesar 9600bps.
3. PinMode (Led, Output) digunakan untuk mengatur Led yang dalam proyek ini ada di pin 10 sebagai output pada board arduino.

Selain fungsi diatas, ada juga beberapa fungsi yang sering digunakan dalam pemrograman LDR, diantaranya:
1. SensorValue digunakan sebagai variabel untuk penyimpanan nilai yang didapat dari sensor LDR.
2. SensorPin digunakan untuk membaca baris pertama data dari LDR.
3. Serial.Println (SensorValue) digunakan untuk mencetak nilai yang sudah didapat pada baris kedua dari void loop yang dikirimkan ke serial monitor.

Data LDR kemudian diubah menjadi nilai tegangan dan disimpan dalam variabel tegangan. Selanjutnya, nilai variabel tegangan dibandingkan. Jika nilai kurang dari sama dengan 1 maka LED akan terhubung ke pin 10 dan lampu akan menyala serta jika nilai lebih dari 1 maka LED yang sudah terhubung ke pin 10 sebelumnya akan dimatikan.

Jika sudah paham dalam pembuatan kode, yuk kita buat rangkaiannya! Bagaimana susunannya? Perhatikan skema rangkaian berikut:
Gambar 2. Skema Rangkaian LDR
Sekian pembahasan artikel hari ini, sampai jumpa!
Referensi:
Muh, Roghib. (2018, 2 Oktober). Program Light Dependent Resistor (LDR). https://mikrokontroler.mipa.ugm.ac.id/2018/10/02/program-light-dependant-resistorldr/.
De, Dewa. (2019, 30 November). Cara Program Sensor LDR Modul Arduino. https://teknisibali.com/cara-program-sensor-ldr-modul-arduino/.
Gambar 1. Sumber: Irpah. Cara Menggunakan Breadboard dalam Rangkaian Elektronik. https://praktekotodidak.com/fungsi-breadboard-dalam-rangkaian-elektronik/.
Gambar 2. Sumber: Muh, Roghib. (2018, 2 Oktober). Program Light Dependent Resistor (LDR). https://mikrokontroler.mipa.ugm.ac.id/2018/10/02/program-light-dependant-resistorldr/.

Apa Itu LDR?

Halo, selamat datang di Bony3D!

LDR adalah singkatan dari light dependent resistor. Seperti yang kita ketahui bahwa resistor adalah komponen elektronika yang berfungsi sebagai pemberi hambatan bagi aliran listrik, tanpa ada resistor maka beban akan tidak terkontrol arus listriknya. Biasanya proyek resistor selalu dibarengi dengan LED seperti yang sudah Saya bahas pada artikel sebelumnya. Berbeda dengan resistor pada umumnya yang sudah memiliki nilai resistansi pasti, LDR bisa berubah sewaktu-waktu nilai resistansinya. Kenapa? Hal ini yang akan Saya bahas pada artikel mengenai LDR kali ini. Yuk kita mulai!
Gambar 1. LDR
LDR terbuat dari bahan cadium sulfida yang bersumber dari serbuk keramik. Cadium sulfida biasa disebut photoconductive yang artinya konduktivitasnya bergantung pada intensitas cahaya. Oleh karena itu, LDR sering disebut sebagai sensor cahaya, karena resistor ini sangat peka terhadap cahaya. Nilai resistansinya berubah sesuai keadaan cahaya. Menarik bukan?
Karena kemampuannya yang peka terhadap cahaya, sensor ini sering diaplikasikan pada lampu alarm yang akan menyala jika cahaya pagi hari, diaplikasikan juga pada lampu tidur yang akan menyala ketika malam hari, dan penggunaan pada penerangan jalan umum yang akan mati-nyala otomatis sesuai keadaan cahaya. Pagi hari, lampu akan redup. Siang hari, lampu akan mati. Sore hari lampu akan redup dan malam hari, lampu bersinar terang.
LDR memiliki 2 elektroda di permukaannya. Apa fungsi dari kedua elektroda ini?
Saat cahaya redup, elektron yang dihasilkan dari 2 elektroda ini berjumlah 8. Akibatnya, LDR akan menjadi sensor dengan tipe konduktor kurang baik sehingga menghasilkan nilai resistansi yang besar.
Saat cahaya terang, elektron yang dihasilkan dari 2 elektroda ini berjumlah sangat banyak. Akibatnya, LDR akan menjadi sensor dengan tipe konduktor yang sangat baik sehingga menghasilkan nilai resistansi yang kecil.
Secara umum, saat cahaya redup, nilai yang dihasilkan dari LDR ialah sebesar 200K ohm dan sebaliknya disaat cahaya terang, nilai yang dihasilkan LDR ialah 500 ohm. Hal ini menunjukkan bahwa semakin sedikit cahaya terdeteksi maka semakin besar nilai resistansinya serta arus listrik akan semakin terhambat karena perlu diingat bahwa LDR adalah resistor jadi fungsinya sebagai pengontrol arus listrik dengan cara memberi hambatan kepada arus listrik. Sebaliknya, semakin banyak cahaya terdeteksi maka semakin turun nilai resistansinya. Ini merupakan prinsip kerja dari LDR yakni resistor yang memiliki nilai resistansi yang tidak tetap atau sering disebut resistor variabel karena nilainya dapat berubah sesuai kondisi. Kondisi yang dimaksud dalam LDR adalah cahaya.
LDR memiliki spesifikasi, diantaranya:
1. Daya yang dapat disuplai sebesar 3,3V sampai 5V yang dapat dengan mudah diakses di board arduino.
2. LDR memiliki keluaran terbalik.
3. LDR memiliki keluaran digital dan keluaran analog dalam bentuk bilangan biner sesuai bahasa komputer yakni 1 dan 0.
4. LDR sudah termasuk di dalamnya komparator IC LM393.
5. LDR memiliki sensitivitas yang dapat diatur.
Jadi itulah sekilas mengenai apa itu LDR, fungsi, cara kerja, dan spesifikasinya. Artikel selanjutnya, Saya akan membahas bagaimana contoh program pada sensor LDR ini. Ditunggu ya!
Sampai jumpa:)
Referensi
Aris, Prastyo, Elga. (2022, 15 November). Sensor Cahaya LDR : Pengertian dan Cara Kerjanya. https://www.arduinoindonesia.id/2022/11/sensor-cahaya-ldr-pengertian-dan-cara-kerjanya.html.
Politeknik Negeri Sriwijaya. http://eprints.polsri.ac.id/10334/3/FILE%20III.pdf.
Gambar 1. Sumber: Eko, Prasetya, Rudy. Penggunaan Sensor Cahaya. https://rudyekoprasetya.wordpress.com/2020/03/24/penggunaan-sensor-cahaya/.

Contoh Kasus LED pada Arduino IDE

Halo, selamat datang di Bony3D!

Setelah mengetahui apa itu arduino, fungsinya, jenisnya, dan spesifikasinya, yuk kita praktikkan papan arduino dengan menggunakan software arduino IDE. Komponen yang akan Saya gunakan adalah LED. LED merupakan singkatan dari light emiting diode yaitu komponen semikonduktor yang mampu mengubah energi listrik menjadi energi cahaya. LED memiliki 2 buah kaki. Kaki yang lebih panjang dan memiliki bendera kecil ialah kaki positif dan sebaliknya, kaki yang ukurannya lebih pendek serta memiliki bendera yang lebih besar ialah kaki negatif. Kesalahan umum yang masih sering terjadi yaitu kesalahan penyambungan kaki negatif dan positif LED. Akibatnya bisa sampai merusak komponen dalam LED loh, kawan! Penggunaan LED juga harus disertakan dengan resistor. Resistor berfungsi sebagai pengendali arus listrik dengan memberikan hambatan pada aliran listrik. Apa yang akan terjadi jika pemasangan LED tanpa resistor? LED akan mengubah listrik menjadi cahaya dan hasilnya cahaya akan sangat terang, hal ini akan membuat LED panas dan lama-lama bisa terbakar. Sangat bahaya bukan? Penggunaan resistor juga harus disesuaikan dengan LED ya! Karena jika menggunakan LED yang terlalu besar nilai hambatannya maka LED akan menghasilkan cahaya redup dan jika menggunakan resistor yang terlalu kecil nilai hambatnya maka LED akan menyala lebih terang dari biasanya dan menghasilkan panas di dalam komponen LED tersebut.

Jika sudah paham apa itu LED dan resistor, maka selanjutnya Saya akan masuk di pembahasan inti yaitu contoh kasus. Contoh kasus pertama, Saya akan mencoba menyalakan LED berurutan dari kanan ke kiri. Perhatikan kode berikut:
Gambar 1. LED Aktif dari Kanan ke Kiri
Kasus di atas, Saya menggunakan 3 buah LED yang dihubungkan ke pin 8, 9, dan 10 pada board arduino IDE. Saya memberikan jeda sebanyak 500 untuk setiap 1 lampu yang menyala. Low berarti mati dan high berarti nyala. Kode pertama, Saya menyalakan pin 10, kode ke-2 di pin 9 dan terakhir di pin 8. Kode ini akan terus berputar sampai tidak adanya sumber di catu daya.

Kasus kedua, Saya akan menjalankan LED secara bersamaan. Bagaimana kodingannya? Perhatikan gambar berikut:
Gambar 2. LED Aktif Bersamaan
Pin yang Saya gunakan adalah pin 8, 9, 10, 11, dan 12. Semua pin, Saya set high untuk mengaktifkan LED dan tidak memberinya jeda karena proyek yang dibuat untuk terus menyalakan LED tanpa henti.

Kasus ketiga, Saya akan menyalakan LED 1 per 1. Proyek contoh kasus yang Saya buat, disusun berdasarkan yang paling sederhana sampai yang kompleks. Yuk perhatikan kodenya!
Gambar 3. LED Aktif 1 per 1
Saya menggunakan 3 buah LED dan mengatur agar LED menyala 1 per 1. Kodenya cukup mudah karena kita hanya mengubah status high pada LED yang ingin kita nyalakan. Kode pertama hanya di pin 8, kode kedua Saya atur untuk pin 8 dan 9, kode ketiga, semua LED saya nyalakan dengan mengatur high, dan kode terakhir saya mematikan LED dengan mengubah statusnya menjadi low.

Kasus keempat, Saya akan menyalakan LED dengan dikontrol oleh komponen potensiometer. Potensiometer adalah resistor variabel jadi kita dapat mengatur resistor ini dengan memutarnya ke kanan dan ke kiri. Biasanya untuk kasus LED, potensiometer digunakan untuk mengontrol kecerahan lampu dan kedipan lampu. Sebagai contoh, putaran ke kanan untuk kedipan cepat dan mengatur kecerahan lampu yang semakin terang sedangkan putaran ke kiri digunakan untuk kedipan lambat serta mengatur kecerahan lampu yang semakin redup. Kode di bawah ini merupakan contoh pengontrolan LED dengan potensiometer.
Gambar 4. LED dan Potensiometer
Kasus terakhir, Saya akan mencoba menyalakan LED dengan sensor cahaya LDR. LDR adalah sensor untuk mendeteksi adanya cahaya. Biasanya digunakan untuk rumah pintar pada lampu. Ketika malam, lampu menyala dan ketika pagi hari lampu mati secara otomatis. Sensor ini sering digunakan untuk beberapa alat elektronika untuk menyalakan dan mematikan otomatis dan pastinya membuat pekerjaan menjad lebih efektif.
Gambar 5. LED dan LDR
Sekian artikel mengenai praktikum LED dengan software arduino IDE. Harapannya bisa membantu teman-teman dalam lebih memahami arduino dan aplikasinya.
Terima kasih telah membaca, sampai jumpa!
Referensi
Gambar 1 sampai 5. Sumber: Dokumentasi Pribadi.

Spesifikasi Arduino UNO R3

Halo, selamat datang di Bony3D!

Arduino uno R3 adalah board mikrokontroller berbasis ATmega328P. Uno R3 memiliki 14 pin digital yang dapat digunakan sebagai input ataupun output dan 6 di antaranya dapat digunakan sebagai PWM serta memiliki 6 pin analog yang digunakan sebagai input. Uno R3 dilengkapi dengan resonator berbahan keramik dengan kekuatan 16 MHz dan untuk mengaktifkannya maka gunakanlah koneksi USB yang sudah terpasang dengan arduino uno R3. Uno R3 juga dilengkapi dengan tombol reset dan header ISCP. Spesifikasi di atas sudah cukup lengkap bagi programmer, tentunya disesuaikan lagi dengan kebutuhan koding masing-masing proyek.

Ukuran berat arduino uno R3 sekitar 25 gram, lebar 53,4 mm, dan panjang 68,6 mm. Uno R3 memiliki 2 prosesor yaitu prosesor utama dan prosesor serial USB. Prosesor utama ialah ATmega328P dengan kekuatan 16 MHz dan prosesor serial USB ialah ATmega1602 dengan kekuatan yang sama yaitu 16 MHz.

Tegangan on-off arduino uno R3 sebesar 5V, tegangan masukan atau nominal sebesar 7V sampai 12V, dan arus DC per pin on-off sebesar 20 mA. Uno R3 memiliki pin LED bawaan sejumlah 13 pin, pin on-off digital sejumlah 14 pin, pin masukan analog sejumlah 8 pin, dan pin PWM sejumlah 6 pin yang didapat dari pin digital input ataupun output. Uno R3 dilengkapi dengan 4 pelindung relai, pelindung motor rev 3, pelindung ethernet rev 2, dan pelindung gerak 9 sumbu. Uno R3 juga dilengkapi dengan konektor colokan barel yang berfungsi baik dengan baterai standar 9V.

Library arduino uno R3 ada 3, di antaranya:
1. Kabel untuk I2c/TWI.
2. SPI digunakan jika arduino sebagai pengontrolnya.
3. Servo digunakan untuk mengontrol motor servo.

Arduno uno R3 selain dapat diakses di software arduino IDE, dapat diakses juga di arduino CLI dan penyunting web. Chip pada uno R3 dapat diganti untuk memulai dari awal dengan harga yang cukup tinggi. Bagaimana dengan eepromnya? Yuk kita bahas!

Eeprom adalah memori yang memiliki nilai dan akan disimpan juga tidak terhapus meskipun board arduino dimatikan, pada uno R3, jumlah eeprom sebanyak 1 KB memori. Seorang programmer tidak perlu install ulang untuk library eeprom karena library eeprom sudah terpasang otomatis yang pastinya disesuaikan dengan board-nya. Berikut daftar board arduino yang memiliki eeprom:
1. Arduino uno R4 minimal
2. Wifi arduino uno R4
3. Arduino uno rev 3
4. Arduino uno wifi rev 2
5. Arduino mega 2560 rev 3
6. Arduino nano
7. Arduino mikro
8. Arduino leornardo

Pertama eeprom clear yaitu fungsi untuk mengatur semua byte ke 0 dan menyimpan informasi baru. Seperti yang sudah diketahui bahwa arduino uno memiliki 1 KB memori eeprom dan contoh lainnya adalah arduino mega yang memiliki 4 KB memori eeprom. Perhatikan gambar berikut:
Gambar 1. EEPROM Clear
Kedua, eeprom CRC yang berfungsi untuk mengetahui apakah data telah berubah atau rusak. Gambar di bawah menunjukkan cara mengetahui jumlah CRC pada eeprom serta melihat cara kerja eeprom sebagai array. Hal yang perlu diingat yaitu setiap perubahan pada CRC maka data yang disimpan juga mengalami perubahan. Perhatikan contoh kode berikut:

#include <Arduino.h>
#include <EEPROM.h>
void setup() {

//Start serial

Serial.begin(9600);
while (!Serial) {
}
//Print length of data to run CRC on.
Serial.print("EEPROM length: ");
Serial.println(EEPROM.length());
//Print the result of calling eeprom_crc()
Serial.print("CRC32 of EEPROM data: 0x");
Serial.println(eeprom_crc(), HEX);
Serial.print("\n\nDone!");
}
void loop() {
/* Empty loop */
}
unsigned long eeprom_crc(void) { c
onst unsigned long crc_table[16] = {
0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac,
0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c,
0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
};
unsigned long crc = ~0L; f
or (int index = 0 ; index < EEPROM.length() ; ++index) {
crc = crc_table[(crc ^ EEPROM[index]) & 0x0f] ^ (crc >> 4);
crc = crc_table[(crc ^ (EEPROM[index] >> 4)) & 0x0f] ^ (crc >> 4);
crc = ~crc;
}
return crc;
}
Ketiga, eeprom get ialah fungsi yang bertujuan menunjukkan cara beda untuk membaca dan menulis yang bekerja pada byte tunggal. Perhatikan kode berikut:

#include <EEPROM.h>
void setup() {
float f = 0.00f; //Variable to store data read from EEPROM.
int eeAddress = 0; //EEPROM address to start reading from
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Read float from EEPROM: ");
//Get the float data from the EEPROM at position 'eeAddress'
EEPROM.get(eeAddress, f);
Serial.println(f, 3); //This may print 'ovf, nan' if the data inside the EEPROM is not a valid float.
secondTest(); //Run the next test.
}
struct MyObject {
float field1;
byte field2;
char name[10];
};
void secondTest() {
int eeAddress = sizeof(float); //Move address to the next byte after float 'f'.
MyObject customVar; //Variable to store custom object read from EEPROM.
EEPROM.get(eeAddress, customVar);
Serial.println("Read custom object from EEPROM: ");
Serial.println(customVar.field1);
Serial.println(customVar.field2);
Serial.println(customVar.name);
}
void loop() {
/* Empty loop */
}
Keempat, eeprom iterasi yang sering digunakan untuk menelusuri seluruh ruang memori eeprom. Fungsi ini tidak bisa berjalan sendiri tapi digunakan sebagai sumber aplikasi di tempat lain.

#include <EEPROM.h>
void setup() {
for (int index = 0 ; index < EEPROM.length() ; index++) {
//Add one to each cell in the EEPROM
EEPROM[ index ] += 1;
}
int index = 0;
while (index < EEPROM.length()) {
//Add one to each cell in the EEPROM
EEPROM[ index ] += 1;
index++;
}
int idx = 0; //Used 'idx' to avoid name conflict with 'index' above.
do {
//Add one to each cell in the EEPROM
EEPROM[ idx ] += 1;
idx++;
} while (idx < EEPROM.length());
} //End of setup function.
void loop() {}
Kelima, ada fungsi eeprom put yaitu fungsi untuk mengetahui jumlah byte yang tertera terkait tipe data atau struktur khusus variabel yang akan ditulis.

#include <EEPROM.h>
struct MyObject {
float field1;
byte field2;
char name[10];

};
void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
float f = 123.456f; //Variable to store in EEPROM.
int eeAddress = 0; //Location we want the data to be put.
//One simple call, with the address first and the object second.
EEPROM.put(eeAddress, f);
Serial.println("Written float data type!");
//Data to store.
MyObject customVar = {
3.14f,
65,
"Working!"
};
eeAddress += sizeof(float); //Move address to the next byte after float 'f'.
EEPROM.put(eeAddress, customVar);
Serial.print("Written custom data type! \n\nView the example sketch eeprom_get to see how you can retrieve the values!");
}
void loop() {
/* Empty loop */
}
Keenam, ada fungsi eeprom read yang berfungsi untuk mencetak nilai ke jendela serial pada aplikasi arduino IDE dan aplikasi sejenis.
Gambar 2. EEPROM Read
Ketujuh ada fungsi eeprom update yang digunakan untuk menghemat waktu eksekusi dan menghindari penulisan ulang yang sama. Sebagai informasi, setiap penulisan pada arduino membutuhkan waktu 3,3 ms dan eeprom juga memiliki batas jumlah siklus per lokasi yaitu sebesar 100.000.
Gambar 3. EEPROM Update
Terakhir yaitu fungsi eeprom write yang digunakan untuk menyimpan nilai agar tetap berada di eeprom walaupun board dimatikan dan sewaktu-waktu bisa diambil kembali oleh sketsa lain. Perhatikan contoh berikut:
Gambar 4. EEPROM Write
Referensi:
(2024, 29 Januari). Panduan untuk EEPROM. https://docs.arduino.cc/learn/programming/eeprom-guide/.
https://docs.arduino.cc/hardware/uno-rev3/
Gambar 1 sampai 8. Sumber: Dokumentasi Pribadi.

Input dan Output Arduino IDE

Halo, selamat datang di Bony3D!

Arduino memiliki 2 pin yaitu pin digital dan pin analog. Pin analog yaitu pin yang memiliki nilai antara 0 dan 1 sehingga sinyalnya akan terus-menerus (kontinu). Pin digital ialah pin yang memiliki 2 nilai yaitu 0 dan 1, high atau low, on atau off sehingga sinyalnya bisa dikonfigurasi menjadi 2 keadaan: sinyal yang dikirimkan (output) dan sinyal yang diterima (input).

Fungsi pin digital arduino ialah sebagai berikut:
1. Masukan pin untuk membaca keadaan pin atau biasa disebut dengan input
2. Masukan pin sebagai keluaran untuk menggerakkan beban disebut dengan output.
Kapan pin akan menjadi input dan output? Ketika pin menerima sinyal maka disebut sebagai input dan ketika pin mengirimkan sinyal biasa disebut output.
3. Masukan pin untuk fungsi kembali seperti komunikasi serial dan PWM (pulse wide modulation).

Berikut gambaran sederhana mengenai pin arduino:
Gambar 1. Pin Arduino
Beberapa pin arduino memiliki fungsi sebagai PWM seperti yang tertera pada gambar dan 2 pin di kanan atas digunakan untuk komunikasi serial.

Setelah mengetahui fungsi pin pada arduino, selanjutnya kita pahami bagaimana mengatur mode pin sebagai input ataupun output.

Untuk mengatur mode, para programmer biasanya menggunakan fungsi berikut: pinMode() dan disimpan dalam fungsi setup(). Fungsi pinMode() memerlukan 2 parameter yakni nomor pin dan konstanta seperti pada fungsinya yaitu:

pinMode([nomorPin], [mode])

Pengaturan input dan output disesuaikan dengan mode yang ingin dipakai. Semisal ingin menjadikan LED output dan pushbutton sebagai input. Perhatikan contoh sederhana pengaturan pinMode berikut:

void setup()
{
pinMode(1, INPUT); //set pin 1 sebagai input
pinMode(2, OUTPUT); //set pin 2 sebagai output
}

digitalRead(nomorPin) ialah fungsi yang digunakan untuk menerima input digital yang masuk ke pin arduino. Fungsi ini hanya menerima 1 parameter yaitu nomor pin yang dibaca melalui pin input. Fungsi ini juga akan mengembalikan nilai 1 dan 0. Perhatikan contoh kode berikut:
Gambar 2. Contoh Kasus 1
Kode di atas akan menyalakan LED dengan kontrol dari pushbutton. Saya menghubungkan salah satu kaki pushbutton ke pin 4 dan GND, sedangkan kaki lainnya Saya hubungkan ke tegangan 5V pada arduino. Sebagai syarat, kaki yang terhubung ke GND harus melewati pull down resistor.

Apa yang akan terjadi?
Ketika pushbutton tidak ditekan maka kedua kaki pushbutton tidak terhubung dan selanjutnya pin 4 yang akan terhubung ke GND. Sehingga menghasilkan keluaran 0 atau lampu LED dalam keadaan off.
Ketika pushbutton ditekan maka kedua kaki pushbutton terhubung yang mengakibatkan pin 4 terhubung ke tegangan 5V dan nilai keluarannya adalah 1 atau dikatakan lampu LED menyala.

Setelah kita mengetahui tentang input atau masukan pada arduino, yuk kita pahami lebih dalam mengenai output-nya!

Fungsi yang dipakai dalam digital output yaitu: digitalWrite(nomorPin, nilaiDigital)
Biasanya fungsi tersebut digunakan jika sudah ada pin sebelumnya yang di set ke mode output. Set nilai digunakan untuk mengatur nilai seperti jika diatur untuk bernilai 1 atau menyala maka dihubungkan dengan pin 5V atau 3,3V disesuaikan spesifikasi arduino yang dimiliki. Jika diatur untuk bernilai 0 atau off maka dihubungkan ke pin GND

Perhatikan contoh berikut:
Gambar 3. Contoh Kasus 2
Kode di atas merupakan kode pemrograman dari kontrol 1 pushbutton untuk 2 LED. Prinsip yang digunakan sama, yaitu mengatur pin untuk button juga LED. Hal yang perlu diingat yaitu penamaan dari 2 LED haruslah berbeda karena jika sama, maka hanya ada 1 LED yang bisa dikontrol.

Terima kasih telah membaca:)
Referensi:
Haryanto, Toni. (2016, 7 Januari). Digital Input Output pada Arduino. https://www.codepolitan.com/blog/digital-input-output-pada-arduino/.
2022, 2 Februari). Pin Masukan dan Keluaran Arduino. https://startingelectronics.org/beginners/arduino-tutorial-for-beginners/arduino-input-and-output-pins/.
Gambar 1. Sumber: https://startingelectronics.org/beginners/arduino-tutorial-for-beginners/arduino-input-and-output-pins/.
Gambar 2 dan 3. Sumber: Dokumentasi Pribadi.

Mengenal Arduino IDE

Gambar 1. Aplikasi Arduino IDE
Halo, selamat datang di Bony3D!

Arduino biasa disebut sebagai otak robot karena dapat menyimpan kode yang kemudian kode tersebut dikirimkan ke komponen yang akan dijalankan melalui aplikasi arduino IDE. IDE adalah singkatan dari integrated development enviroenment. Arduino IDE adalah software yang berisi sketch pemrograman, fungsinya adalah untuk mengembangkan dan memprogram mikrokontroller arduino dengan cara membuat, mengedit, dan upload program. Mikrokontroller pada arduino ada beberapa jenis, di antaranya: arduino uno, arduino nano, arduino mega, genio, mappi32, node MCU dan lain sebagainya. Aplikasi arduino IDE bisa digunakan untuk windows, Mac Os, dan linux secara gratis. Arduino IDE dibuat dengan bahasa java, namun dilengkapi juga dengan bahasa C dan C++ untuk lebih memudahkan para programmer.

Sketch ialah kode pemrograman yang ditulis dalam aplikasi arduino IDE. Setiap sketch yang disimpan akan memiliki ekstansi file (.ino.). Cara penulisan sketch yang paling dasar ada 2, pertama void setup dan kedua void loop. Yuk kita bahas!

1. Void setup(){}
Sketch ini berfungsi untuk menjalankan kode pemrograman yang berada di dalam kurung kurawal {} dan diulang sebanyak 1 kali.
2. Void loop(){}
Sketch ini berfungsi untuk menjalankan kode pemrograman yang berada di dalam kurung kurawal {} dan diulang terus (loop) sampai batas tidak terhubung ke catu daya. Void loop hanya bisa dijalankan setelah void setup.

Bagaimana dengan syntak arduino IDE? Ada 4 kode yang selalu digunakan dalam aplikasi ini, perhatikan uraian berikut:
1. // (komentar 1 baris)
Digunakan untuk membuat komentar pada 1 baris kode tertentu.
2. /**/ (komentar 2 baris)
Digunakan untuk menulis komentar pada beberapa baris kode.
3. {} (kurung kurawal)
Digunakan untuk mendefinisikan kapan blok kode program akan dimulai dan berakhir. Kurung kurawal juga sering digunakan pada fungsi dan perulangan.
4. ; (titik koma)
Digunakan untuk mengakhiri kode pemrograman. Konsekuensinya ketika tidak menggunakan, maka program tidak bisa berjalan.

Gambar 2. Fitur Aplikasi Arduino IDE
Fitur yang ada pada aplikasi ini di antaranya: verify, upload, new, open, save, dan serial monitor. Berikut rinciannya:
1. Verify
Verify digunakan untuk verifikasi atau pengecekan apakah kode pemrograman yang dibuat sudah sesuai syarat bahasa pemrograman atau belum? Jika belum, maka akan muncul error dan ada keterangan di bagian baris mana kode yang perlu diperbaiki. Jika benar, maka tertulis "done compiling" yang berarti selesai verifikasi. Sebelum pengecekan berjalan, biasanya programmer diminta untuk membuat nama dari sketch yang dibuat.
2. Upload
Upload digunakan untuk mengirimkan sketch program ke board arduino untuk selanjutnya dijalankan pada komponen.
3. New
New digunakan untuk membuat sketch baru.
4. Open
Open digunakan untuk membuka proyek yang sudah dibuat sebelumnya. Saat membuka file, akan muncul semua file proyek yang pernah dibuat.
5. Save
Save digunakan untuk menyimpan kode yang dibuat yang selanjutnya akan ada penamaan file sketch saat proses verifikasi.
6. Serial Monitor
Serial monitor digunakan untuk menampilkan data yang sesuai dengan kode yang sudah dibuat sebelumnya dan yang sedang di jalankan ke board arduino.

Setelah mengetahui fitur-fitur arduino IDE, yuk kita lihat menu-menunya!
Gambar 3. Menu Aplikasi Arduino IDE
1. File
Ada beberapa sub-menu pada menu utama file ini, di antaranya:
a. New, untuk membuat sketch baru (ctrl+N).
b. Open, untuk membuka proyek yang sudah dibuat sebelumnya (ctrl+O).
c. Open recent, digunakan untuk mempersingkat waktu dalam membuka file proyek yang diinginkan.
d. Sketchbook, digunakan untuk menunjukkan hirarki sketch yang ingin dibuat dan juga struktur foldernya.
e. Example, digunakan untuk melihat contoh-contoh kode pemrograman yang sudah disediakan aplikasi ini.
f. Close, digunakan untuk menutup sketch program atau aplikasi arduino IDE (ctrl+C).
g. Save, digunakan untuk menyimpan sketch yang telah dibuat (ctrl+S).
h. Save as, digunakan untuk menyimpan sketch dengan nama lain. Save as sangat berguna jika ingin menjalan proyek namun ragu kode yang benar seperti apa, maka bisa menggunakan penyimpanan kode dengan kode 1, kode 2, dan kode 3 sesuai kebutuhan dengan tanpa harus kehilangan kode sebelumnya (ctrl+shift+S).
i. Page setup, digunakan untuk mengatur tampilan halaman ketika akan dicetak (ctrl+shift+P).
j. Print, digunakan untuk mencetak sketch di percetakan.
k. Preferences, digunakan untuk menambah library pada aplikasi.
l. Quit, digunakan untuk opsi keluar pada aplikasi arduino IDE.

2. Edit
Ada beberapa sub-menu pada menu utama file ini, di antaranya:
a. Undo/ redo, digunakan untuk mengembalikan sketch ke tampilan sebelumnya dan atau sesudahnya.
b. Cut, digunakan untuk memotong sketch.
c. Copy, digunakan untuk menggandakan sketch.
d. Paste, digunakan untuk menyalin sketch.
e. Select all, digunakan untuk memilih semua sketch yang sedang dibuka.
f. Comment dan uncomment, digunakan untuk memberi komentar dan atau menghilangkan komentar.
g. Increase/ decrease indent, digunakan untuk menambah dan atau mengurangi baris kode.
h. Find, digunakan untuk mencari karakter atau variabel.
i. Find text, digunakan untuk mencari teks.
j. Find previous, digunakan untuk mencari data sebelumnya.

3. Sketch
Ada beberapa sub-menu pada menu utama file ini, di antaranya:
a. Verify/ compile, digunakan untuk mengecek program apakah sudah sesuai aturan bahasa yang dipilih atau belum.
b. Upload, digunakan untuk mengirimkan kode program dari software arduino IDE ke board arduino lalu dijalankan ke komponen yang bersangkutan.
c. Upload using programmer
d. Export compiled binary
e. Show sketch folder, digunakan untuk menampilkan sketch proyek yang sudah dibuat sebelumnya. Semua sketch akan muncul pada sub-menu ini.
f. Include library, digunakan untuk memasukkan atau menambah library ke software arduino IDE.
g. Add file, digunakan untuk menambahkan file ke dalam sketch.

4. Tools
Ada beberapa sub-menu pada menu utama file ini, di antaranya:
a. Auto format
b. Archive sketch, digunakan untuk mengarsipkan sketch yang dibuat.
c. Fix encoding & reload
d. Serial monitor, digunakan untuk menampilkan data yang sedang berjalan pada komponen di board arduino.
e. Board, bisa memilih sesuai kebutuhan, ada arduino uno, arduino nano, arduino mega, dan lain sebagainya.
f. Port, disesuaikan dengan board yang digunakan. Jika saya menggunakan arduino uno maka port-nya adalah COM-6.
g. Programmer
h. Burn bootleader

Bagian terakhir, Saya akan jelaskan bagaimana cara memakai aplikasi arduino IDE
Pertama, install aplikasi arduino IDE yang tersedia secara gratis di sumber pencarian.
Kedua, buka aplikasi dengan klik 2 kali pada logo.
Ketiga, pilih jenis board sesuai kebutuhan. Board Arduino ada berbagai jenis, seperti: arduino uno, arduino nano, arduino mega, dan lain sebagainya.
Keempat, buat proyek dengan klik "new" lalu cek dengan "verify" dan jika sudah benar kode pemrogramannya klik "upload". Jangan lupa ya untuk menamai file proyek dengan spesifik, karena semua proyek akan tampil saat membuka menu "open". Pembuatan proyek bisa menggunakan bahasa C atau C++ disesuaikan kebutuhan.
Kelima, Anda sudah berhasil menggunakan arduino IDE 🙂

Lantas, apa saja kelebihan dan kekurangan arduino IDE?

Kelebihannya: Arduino IDE dapat diunduh secara gratis, penggunaannya sangat mudah meskipun bagi pemula, memiliki kompabilitas yang baik, dan memiliki banyak library serta contoh kode program yang sangat lengkap.
Kekurangannya: setiap board arduino memiliki kapasitas memori yang berbeda jadi harus cermat memilihnya dan disesuaikan dengan kebutuhan ya:)

see you!
Referensi:
Tafifah, Erin. (2021, 8 Oktober). Mengenal Perangkat Lunak Arduino IDE. https://www.kmtech.id/post/mengenal-perangkat-lunak-arduino-ide.
Evan, Felicia. (2023, 4 Mei). Programming IoT dengan Arduino IDE. https://sis.binus.ac.id/2023/05/04/programming-iot-dengan-arduio-ide/.
Gambar 1, 2, dan 3. Sumber: Dokumentasi Pribadi.

Tipe Data VOID

Halo, selamat datang di Bony3D!

Tipe data void ialah tipe data kosong atau tidak memiliki kembalian. Void digunakan untuk fungsi yang akan kembali secara normal, namun tidak memberi nilai hasil pada pemanggilnya. Void juga digunakan pada kasus untuk menyatakan "tidak ada" dan untuk kasus di mana seorang programmer tidak harus mengembalikan apa pun. Lantas, apakah sama antara angka 0 dengan tipe data void? 0 tidak sama dengan void, karena 0 masih tetap memiliki nilai sedangkan void tidak ada nilai.

Sebagai contoh, ketika Amanda memiliki 3 potong ayam goreng dan sudah habis dimakannya. Maka ayam goreng habis disebut sebagai 0 dan jika Amanda pergi ke kasir ingin memesan bebek bakar, kemudian pihak resto tidak menyediakannya maka ke- tidak sediaan atau tidak ada disebut dengan void.

Void jarang digunakan dalam pembuatan variabel. Sebaliknya, lebih sering digunakan pada nilai kembalian sebuah fungsi. Fungsi pada void digunakan untuk melakukan tugas, kontrol, dan kembali ke pemanggil dengan tidak mengembalikan nilai. Seorang programmer tidak perlu lagi menggunakan fungsi "return" karena tidak ada nilai yang harus dikembalikan oleh void. Faktanya, tanpa menggunakan "return" kontrol akan kembali ke pemanggil secara otomatis di akhir fungsi. Adanya tipe data void, memudahkan para programmer untuk lebih mudah dalam membuat program dan memahami kode program yang dibuat oleh orang lain. 1 hal penting yang perlu diketahui ialah: void hanya bisa digunakan untuk pernyataan yang berdiri sendiri.

Perhatian sintaks berikut:

void main(){
//...
}

sintaks tersebut mengartikan bahwa fungsi main() tidak akan mengembalikan nilai apa pun. Void biasanya digunakan dalam 3 kondisi berikut:
1. Fungsi kembali sebagai batal
Definisi dari fungsi ini ialah fungsi yang tidak mengembalikan nilai apa pun atau disebut "mengembalikan batal". Fungsi ini memiliki tipe kembalian sebagai "batal". Sebagai contoh: void exit (int status);
2. Argumen fungsi sebagai batal
Argumen berarti pernyataan, di mana dalam fungsi batal didefinisikan sebagai pernyataan yang tidak menerima parameter apa pun. Fungsi tanpa parameter dapat menerima kekosongan. Sebagai contoh: int rand(void);
3. Petunjuk untuk membatalkan
Pointer bertipe void memasuki objek namun bukan termasuk tipenya. Sebagai contoh fungsi alokasi memori:
void*malloc (size_t size); digunakan untuk mengembalikan pointer ke void yang dapat ditransmisikan ke tipe data apa pun.

Lalu, apa saja persamaan fungsi pengembalian nilai dengan fungsi void?
1. Keduanya memerlukan definisi fungsi yaitu header dan badan fungsi.
2. Penempatan definisi bisa sesudah atau pun sebelum fungsi main().
3. Daftar parameter formal boleh kosong meskipun tanda kurung () harus tetap ditulis.
4. Daftar parameter aktual dapat menggunakan variabel dengan catatan (type, order, dan number) harus sesuai.

Setelah mengetahui persamaannya, yuk kita bahas perbedaan antara keduanya!
1. Fungsi kosong tidak memenuhi nilai kembalian.
2. Header fungsi menggunakan kata kunci "void".
3. Fungsi panggilan untuk membatalkan adalah pernyataan yang berdiri sendiri.
4. Panggilan untuk membatalkan fungsi yaitu dengan mengosongkan daftar parameter formal.

Bagian terakhir, Saya akan memberikan 2 contoh kasus.
Pertama, bagaimana cara mencetak keluaran tanpa tambahan nilai? Yuk perhatikan kodenya!
Gambar 1. Mencetak Keluaran tanpa Kembalian Nilai
Contoh di atas, Saya menggunakan tipe data void sebagai fungsi untuk mencetak keluaran atau output dengan tanpa harus mengembalikan nilai.

Kedua, bagaimana cara menjalankan tugas tanpa kembalian nilai? Lihat kode berikut:
Gambar 2. Menjalankan Tugas tanpa Kembalian Nilai
Contoh kedua saya menggunakan void sebagai fungsi untuk menghitung luas persegi seta mencetak hasil keluaran tanpa harus mengembalikan nilai.

Terima kasih telah membaca, sampai jumpa!
Referensi:
Muhardian, Ahmad. (2019, 18 Mei). Mengenal Variabel, Tipe Data, Konstanta. https://www.petanikode.com/c-variabel/.
Busbee, Leroy, Kenneth & Braunschweig, Dave. Tipe Data Void. https://press.rebus.community/programmingfundamentals/chapter/void-data-type/.
(2020, 1 Februari). Tipe Data di C- Penjelasan Integer, Floating Point, dan Void. https://www.freecodecamp.org/news/data-types-in-c-integer-floating-point-and-void-explained/.
N, Sigit. (2023, 23 Februari). Fungsi Kata "Void" dalam Pemrograman C++: Penjelasan dan Contoh-contoh Sederhana. https://pemburukode.com/pengertian-void-di-c-plus-plus/.
https://www.cs.fsu.edu/~cop3014p/lectures/ch7/index.html.
Gambar 1 dan 2. Sumber: Dokumentasi Pribadi.

Tipe Data DOUBLE

Halo, selamat datang di Bony3D!

Double merupakan pilihan terbaik bagi para programmer karena cocok untuk mengelola bilangan real dengan akurasi presisi ganda. Selain itu, double juga dapat bekerja pada algoritma matematika rumit atau operasi numerik umum. Tapi, apa itu double? Bagaimana deklarasinya? Apa saja kegunaannya? serta apa saja hal yang perlu di perhatian jika ingin menggunakan tipe data ini? Pada artikel, Saya akan menjawab semua pertanyaan Anda mengenai hal itu. Yuk kita bahas bersama!
Double termasuk dalam salah satu tipe data yang fungsinya hampir sama dengan float, yaitu menyatakan bilangan pecahan atau real maupun eksponensial. Beberapa karakteristik double, di antaranya:
- Double memiliki tingkat ketelitian ganda.
- Double memiliki ruang penyimpanan 64 bit.
- Double dapat menghitung secara matematis dengan lebih cepat dibandingkan float.
- Double lebih sering dipakai karena hasil perhitungan yang lebih akurat.
- Double memiliki presisi hingga 15 tempat digit desimal.
- Double memiliki ukuran penyimpanan memori sebesar 8 bytes.
Perhatikan contoh berikut:
Gambar 1. Contoh Kasus
Kode di atas menampilkan hasil luas lingkaran dengan tipe data double yang saya masukkan sebagai jari-jari. Saya menggunakan tipe double dalam contoh ini, karena bisa lebih akurat dalam menentukan nilai bilangan pecahan.

Apakah bilangan 2.5 dengan 2.500000 bernilai sama? Dalam pemrograman, keduanya bernilai sama meski pun jumlah angka di belakang koma tidak sama. 0 tidak mempengaruhi nilai dalam pemrograman. Namun, pada bahasa C++, otomatis untuk tipe data double maupun float memiliki 6 angka di belakang koma. Untuk membedakannya, pada float selalu menggunakan karakter "F" sebagai penanda. Perhatikan kode berikut:

double nilaiA = 2.5;
float nilaiB = 2.5F;

Bagaimana jika seorang programmer terlupa akan karakter "F" tersebut? Maka program akan secara otomatis, menganggap bahwa itu adalah pernyataan yang harus diselesaikan dengan tipe data double. Berikutnya Saya akan memberikan contoh double dengan menggunakan penulisan ilmiah. Masih ingat bukan tentang karakter "e"? Karakter "e" digunakan dalam notasi ilmiah pemrograman float dan double yang diartikan sebagai pangkat 10.
Gambar 2. Penggunaan Notasi Ilmiah pada Double
Seperti yang sudah dikatakan sebelumnya bahwa, otomatis pada bahasa C++ menampilkan angka 6 digit untuk double dan float, baik itu posisinya setelah koma atau sebelum koma. Nah, bagaimana jika ingin hanya menampilkan 2 atau 3 angka tempat desimal? Perhatikan contoh berikut:
Gambar 3. Implementasi Notasi Ilmiah dan Pembulatan
Program di atas, Saya membuat 5 variabel dengan tipe double dan input yang berbeda-beda. Tampilan awal sesuai aturan yaitu berjumlah 6 digit, jika data melebihi, maka diganti dengan notasi ilmiah dan dibulatkan agar totalnya berjumlah 6 digit. Khusus untuk variabel 4 tetap dituliskan utuh meski pun data tertera lebih dari 6 digit dan variabel 5, nilai hasilnya dibulatkan.

Kode berikut bisa digunakan jika ingin menampilkan bilangan dengan ketelitian 2 angka di belakang koma:

cout<<fixed
cout<<setprecision

Sebagai contoh, perhatikan gambar berikut:
Gambar 4. Ketelitian 2 Tempat Desimal
Sama halnya dengan float, penambahan file header diperlukan untuk menampilkan ketelitian bilangan dengan 2 tempat desimal di belakang koma. Perbedaannya, pada double, menggunakan perintah cout<<setprecision dan menggunakan #include<iomanip>. Perintah kode tersebut difungsikan untuk menampilkan ketelitian 2 tempat desimal. Variabel 4 hasilnya 0,00. Mengapa? Hal itu dikarenakan fungsi pembulatan yang terdapat pada perintah sebelumnya.

Selanjutnya, bagaimana jika ingin menjalankan kode program modifier cout<<setprecision per baris? Gunakan perintah berikut:
Gambar 5. Penggunaan Setprecision
Variabel 1 pada gambar di atas menunjukkan tingkat ketelitian. Pengaturan setprecision disimpan paling akhir karena perintah cout ke variabel 1 menggunakan setprecision (4) yang sebenarnya dimiliki oleh baris sebelumnya. Pengaturan tersebut bisa ditimpa jika ada perintah setprecision () setelahnya. Ngomong-ngomong soal setprecision, apa kamu tahu fungsi sebenarnya dari perintah ini? Setprecision difungsikan untuk mengontrol jumlah koma desimal yang akan ditampilkan pada program dan penggunaannya juga hanya dapat mempengaruhi aliran keluaran sedangkan nilai variabel asli tidak dapat berubah. Cara menggunakan perintah ini ialah dengan menyertakan library iomanip dan selanjutnya tinggal mengatur tingkat presisi dengan kode : std::setprecision() yang fungsinya adalah memastikan jika nilai yang ditampilkan dalam program tepat 2 tempat desimal.

Contoh berikutnya, Saya akan tampilkan kode pemrograman sebagai alternatif mencetak tipe data double dengan perintah priintf di bahasa C:
Gambar 6. Pemrograman Double di Bahasa C
Selanjutnya, Saya akan membahas mengenai batas minimum dan maksimum pada tipe data double. Cara mengetahuinya hampir sama dengan float, yaitu dengan mengakses file header dan kode untuk mengaksesnya pada bahasa C++ ialah <float.h> yang di dalamnya berisi berbagai jenis konstanta untuk melihat beberapa pernyataan, di antaranya: ukuran memori, nilai minimum, nilai maksimum, dan jumlah digit ketelitian. Perhatikan contoh di bawah!
Gambar 7. Batas Minimum dan Maksimum Double
Beberapa poin di bawah adalah hal-hal yang harus diperhatikan dalam menjalankan program double.

1. Inisialisasi variabel, ditujukan agar terhindar dari pembacaan memori yang tidak di inisialisasi sebelumnya.
2. Kesadaran presisi, ditujukan agar mengetahui perbandingan epsilon saat melakukan cek kesetaraan.
3. Hindari membandingkan kesetaraan tepat, hindari menggunakan simbol == dan sebaiknya cek apakah absolut ada di ambang batas toleransi?
4. Hindari kesalahan akumulatif karena akan menyebabkan ketidakakuratan yang sangat tidak signifikan. Solusinya ialah menggunakan algoritma ter-kompensasi atau pustaka presisi arbitrer untuk komputasi krisis.
5. penanganan kesalahan, gunakanlah mekanisme pemeriksaan dan penanganan kesalahan untuk operasi yang rentan terhadap kesalahan. Gunakanlah blok coba-tangkap untuk menangani pengecualian dengan baik.
6. Degradasi Presisi digunakan untuk mengurangi overhead komputasi dan meningkatkan keterbacaan.
7. Gunakanlah notasi ilmiah.

Contoh aplikasi double dalam kehidupan sehari-hari ialah dalam perhitungan ilmiah dan juga keuangan. Selain memiliki banyak manfaat, double juga memiliki beberapa kekurangan, di antaranya: terlalu memakai banyak memori dan oleh sebab itu sebagai seorang programmer harus cermat dalam menggunakan tipe data ini sesuai kebutuhan.

see you!
Referensi:
Intern Dicoding. (2020, 23 Desember). Macam-macam Tipe Data Pemrograman Beserta Fungsinya. https://www.dicoding.com/blog/macam-macam-tipe-data/.
Nosuke. (2021, 31 Mei). Mengenal Float C dan Double Data pada Bahasa Pemrograman C++. https://appkey.id/pembuatan-aplikasi/mobile-programming/float-c/.
Amirul, Karim, Damas. 7+ Tipe Data C++ Beserta Contoh Program dan Jangkauannya. https://kodedasar.com/blog/tipe-data-cpp/.
Kuliah Programming. (2023, 13 Januari). Mengenal Tipe Data Floating Point, Real, Double pada Java. https://kuliahprogramming.id/mengenal-tipe-data-floating-point-real-double-atau-bilangan-berkoma-pada-java/.
Andre. (2020, 24 Oktober). Tipe Data Float dan Double Bahasa C++. https://www.duniailkom.com/tutorial-belajar-c-plus-plus-tipe-data-float-dan-double-bahasa-c-plus-plus/.
Gaurav, Sushant. (2023, 27 September). Tipe Data Ganda di C++. https://www.scaler.com/topics/double-in-cpp/.
Gambar 1 sampai 7. Sumber: Dokumentasi Pribadi.
Keranjang Belanja