Ringkasan Materi Informatika Semester 1 & 2

Ringkasan Materi Informatika Semester 1 & 2

Informatika

  1. Informatika, secara sederhana, adalah ilmu yang berkaitan dengan pengolahan, pengelolaan, dan pemanfaatan informasi menggunakan teknologi komputer. Bidang ini meliputi aspek pemrograman, analisis data, kecerdasan buatan (AI), keamanan cyber, jaringan komputer, dan berbagai topik lainnya yang terkait dengan teknologi informasi.
  2. Informatika memiliki peran besar di kehidupan modern seperti saat ini, hampir seluruh aspek kehidupan kita dipermudah dengan berkembangnya ilmu informatika.
  3. Informatika memainkan peran kunci dalam pengembangan teknologi komunikasi seperti internet, email, dan media sosial. teknologi ini memungkinkan orang untuk berkomunikasi secara instan dan efisien di seluruh dunia tanpa terkendala jarak dan waktu.
  4. Informatika telah mengubah cara kita belajar dan mengakses informasi. Adanya platform pembelajaran online, sumber daya digital, dan perangkat lunak pembelajaran membantu meningkatkan aksesibilitas pendidikan. Selain itu, kita juga memiliki akses ke sumber informasi dari berbagai belahan dunia dengan cepat dengan adanya mesin pencari.
  5. Dalam dunia bisnis, Informatika juga memainkan peran yang besar. Sistem manajemen bisnis, analisis data, e-commerce, dan perangkat lunak keuangan semuanya bergantung pada konsep-konsep informatika.
  6. Di bidang kesehatan, informatika digunakan untuk manajemen data pasien, pengembangan perangkat lunak medis, analisis genom, dan penelitian medis. Teknologi seperti telemedicine juga mengandalkan konsep informatika.
  7. Informatika adalah landasan dari pengembangan perangkat lunak. Dengan konsep-konsep seperti pemrograman komputer, pengujian perangkat lunak, dan pengelolaan proyek, informatika memungkinkan pembuatan berbagai jenis perangkat lunak.

Cara berfikir komputasional

  1. Berfikir komputasional adalah suatu pendekatan dalam menyelesaikan masalah atau memahami suatu konsep dengan cara yang mirip dengan cara/proses berpikir komputer. Konsep berfikir ini mencakup pemahaman algoritma, pemodelan data, pemecahan masalah sistematis, dan kemampuan untuk menerapkan konsep-konsep ini dalam situasi nyata.
  2. Keempat konsep utama dalam berfikir komputasional – dekomposisi, abstraksi, pola, dan algoritma – membentuk dasar untuk memecahkan masalah dengan pendekatan yang sistematis dan komputasional.
  3. Dekomposisi melibatkan pembagian masalah besar menjadi sub-masalah yang lebih kecil dan lebih mudah dikelola. Dengan memecah masalah kompleks menjadi bagian-bagian yang lebih kecil, kita dapat fokus pada setiap submasalah secara terpisah, membuat pemecahan masalah menjadi lebih efisien.
  4. Abstraksi adalah proses menyederhanakan kompleksitas atau kerumitan suatu masalah dengan mengabaikan detail atau bagian-bagian yang tidak relevan. cara memungkinkan kita untuk fokus pada aspek-aspek penting dari suatu masalah tanpa terjebak dalam kompleksitas yang tidak perlu. Dalam konteks berfikir komputasional, abstraksi dapat melibatkan penyederhanaan struktur data atau proses untuk memudahkan pemahaman dan implementasi.
  5. Mengidentifikasi pola melibatkan pemahaman tentang hubungan dan struktur dalam data atau masalah. Pola membantu kita memprediksi hasil, membuat generalisasi, dan memahami lebih baik cara suatu sistem bekerja.
  6. Algoritma adalah langkah-langkah terstruktur yang dirancang untuk menyelesaikan suatu masalah atau tugas. Algoritma bisa juga disebut sebagai panduan atau resep yang menunjukkan langkah-langkah yang harus diambil untuk mencapai hasil tertentu. Dalam berfikir komputasional, kemampuan untuk merancang algoritma yang efektif menjadi kunci. Algoritma harus efisien, dapat diulang, dan dapat diandalkan dalam menyelesaikan masalah tertentu.
  7. keempat konsep dalam berfikir komputasional dapat di integrasikan atau digabungkan agar penyelesaian masalah menjadi lebih cepat dan terstruktur.
    • a. Dekomposisi & Abstraksi: Saat mendekomposisi masalah, abstraksi membantu menyederhanakan setiap submasalah sehingga dapat dipecahkan dengan lebih mudah.
    • b. Dekomposisi & Algoritma: Submasalah yang dihasilkan dari dekomposisi dapat dipecahkan menggunakan algoritma yang sesuai untuk mencapai solusi keseluruhan.
    • c. Abstraksi & Pola: Abstraksi membantu dalam mengidentifikasi pola umum, memungkinkan kita untuk membuat generalisasi yang dapat diterapkan pada masalah serupa.
    • d. Pola & Algoritma: Identifikasi pola dapat membantu dalam merancang algoritma yang memanfaatkan pola tersebut untuk meningkatkan efisiensi dan akurasi solusi.

Arduino

  1. Arduino adalah platform perangkat keras dan perangkat lunak open-source yang dirancang untuk membuat prototipe dan mengembangkan proyek elektronika. Platform ini menyediakan berbagai papan mikrokontroler yang dapat diprogram untuk melakukan berbagai tugas. Papan mikrokontroler Arduino memiliki input dan output yang dapat digunakan untuk berinteraksi dengan berbagai sensor, aktuator, dan perangkat lainnya.
  2. Arduino memiliki karakteristik antara lain:
    • a. Open Source: Desain perangkat keras dan perangkat lunak Arduino bersifat open-source, yang berarti bahwa semua informasi yang diperlukan untuk membuat dan mengembangkan proyek Arduino dapat diakses secara bebas. Pengguna dapat memodifikasi dan menyesuaikan perangkat keras dan perangkat lunak sesuai kebutuhan mereka.
    • b. Mikrokontroler: Papan Arduino dilengkapi dengan mikrokontroler yang berfungsi sebagai otak dari sistem. Mikrokontroler ini dapat diprogram untuk melakukan berbagai tugas sesuai dengan kebutuhan proyek.
    • c. Integrated Development Environment (IDE): Arduino IDE adalah lingkungan pengembangan terpadu yang digunakan untuk menulis, mengunggah, dan menjalankan kode pada papan Arduino. IDE menyederhanakan proses pengembangan dengan menyediakan berbagai fitur dan alat bantu.
    • d. Soket Input/Output (I/O): Arduino memiliki pin input/output yang dapat digunakan untuk menghubungkan sensor, aktuator, dan perangkat lainnya. Ini memungkinkan pengguna untuk berinteraksi dengan lingkungan sekitar.
    • e. Kemudahan Penggunaan: Arduino didesain agar mudah digunakan, bahkan bagi pemula dalam bidang elektronika dan pemrograman. Ada banyak sumber daya dan tutorial online yang mendukung pengguna dalam memahami dan menggunakan Arduino.
  3. Arduino memiliki banyak konektor-konektor yang disebut dengan “pin”. Pin-pin ini dapat dihubungkan ke berbagai sensor, aktuator dan komponen-komponen elektronika lainnya.
  4. Berikut adalah beberapa kelompok utama pin pada Arduino Uno:
    • Pin Digital (D0-D13):
      • D0-D13 digunakan sebagai pin digital input atau output.
      • D2 dan D3 dapat mendukung fungsi interrupt.
      • D3, D5, D6, D9, D10, dan D11 dapat digunakan untuk menghasilkan sinyal PWM.
    • Pin Analog (A0-A5):
      • A0-A5 digunakan sebagai pin input analog untuk membaca tegangan antara 0 hingga 5 volt.
      • A4 dan A5 juga digunakan sebagai pin I2C (Inter-Integrated Circuit).
    • Port Serial (RX, TX):
      • RX dan TX digunakan untuk komunikasi serial dengan perangkat eksternal.
    • Port USB:
      • Digunakan untuk menghubungkan Arduino ke komputer atau perangkat USB lainnya.
    • Port Catu Daya:
      • Vin: Tegangan input eksternal.
      • 5V: Tegangan output dari regulator.
      • 3.3V: Tegangan output tetap 3.3 volt.
      • GND: Ground atau negatif.
    • Port I2C (SDA, SCL):
      • Digunakan untuk komunikasi I2C.
    • Port SPI (MISO, MOSI, SCK, SS):
      • Digunakan untuk komunikasi SPI.
    • Sampai pada materi ini, kita sudah mengenal pin digital (pin 0-13) dan pin GND.

Pemrograman Arduino

  1. Arduino memliki 2 struktur program yang terdiri dari 2 fungsi utama yaitu : setup() dan loop().
  2. Fungsi setup() dieksekusi hanya sekali saat program dimulai, dan biasanya digunakan untuk mengaktifkan pin, dan perangkat lain yang terhubung ke Arduino agar bisa di program.
  3. Fungsi loop() dieksekusi secara terus-menerus setelah setup(), dan berisi kode utama program yang akan dijalankan berulang kali. Proses pengendalian utama suatu mesin / komponen elektronika yang terhubung ke Arduino hampir sepenuhnya dilakukan disini.
  1. Perintah-perintah dasar yang bisa digunakan adalah :

pinMode()

Deskripsi

pinMode berfungsi untuk mengkonfigurasikan atau mengaktifkan pin sebagai output ataupun input.

Syntax

pinMode(pin, mode);

Parameter
pinnomor pin pada Arduino, atau variabel yang berisi nomor pin
modemode pengaturan pin : OUTPUT, INPUT, INPUT_PULLUP
Contoh Penggunaan
pinMode(4, INPUT);Mengaktifkan pin 4 sebagai input (biasanya digunakan untuk membaca sensor)
pinMode(4, OUTPUT);Mengaktifkan pin 4 sebagai output
int ledPin = 4;
pinMode(ledPin, OUTPUT);
Mengaktifkan ledPin (pin 4) sebagai output)
pinMode(4, INPUT_PULLUP);mengaktifkan 4 sebagai input dengan pull up resistor internal

digitalWrite()

Deskripsi

Memberi nilai berupa HIGH atau LOW pada pin digital. Pin yang diberi nilai sebelumnya harus telah diaktifkan sebagai OUTPUT dengan pinMode. Nilai HIGH dan LOW bisa disamakan artinya dengan “on” dan “off”, “1” atau “0”, “hidup” dan “mati”.

Syntax

digitalWrite(pin, value);

Parameter
pinnomor pin pada Arduino, atau variabel yang berisi nomor pin
valueHIGH untuk membuat pin menjadi “on”
LOW untuk membuat pin menjadi “off”
Contoh Penggunaan
digitalWrite(4, HIGH);Perintah pin 4 “on”
digitalWrite(4,LOW);Perintah pin 4 “off”
int ledPin = 4;
digitalWrite (ledPin, HIGH);
perintah variabel ledPin (pin 4) “on”

Delay

Deskripsi

Menghentikan program sementara selama x milidetik (ms)

Syntax

delay(ms)

Parameter
msDiisi dengan nilai waktu dalam milidetik, misalnya 1000 = 1 detik, 500 = 1/2 detik, 2000 = 2 detik
Contoh Penggunaan
delay(1000);menghentikan pembacaan program selama 1 detik
delay(500);menghentikan pembacaan program selama 1/2 detik

Variabel

Penjelasan tentang variabel bisa dibaca pada tulisan dibawah ini:

JudulLink Bacaan
Menggunakan Variabelhttps://helmydx.my.id/2023/11/19/menggunakan-variabel/
Variabel dan Operator matematikahttps://helmydx.my.id/2023/11/23/variabel-dan-operator-aritmatika/

Fungsi Logika dan Perulangan

JudulLink Bacaan
Logika IF, IF-ELSE, ELSEhttps://helmydx.my.id/2023/11/24/logika-if/
Perulangan FOR dan Whilehttps://helmydx.my.id/2023/11/26/perulangan-for-dan-while/

KISI-KISI dan CONTOH SOAL dapat kalian download pada link dibawah ini:

https://docs.google.com/document/d/1d9mOmrlIFWuFzNB7_1PuiyntWD7tbq0Q/edit?usp=sharing&ouid=104727008984896572320&rtpof=true&sd=true

Selamat melaksanakan ujian

Perulangan FOR dan WHILE

Perulangan FOR dan WHILE

Kalau sebelumnya kita sudah mengetahui cara menggunakan fungsi logika IF da ELSE, maka kali ini kita akan mempelajari bagaimana caranya agar Arduino bisa melakukan kendali lebih dalam lagi dan menyederhanakan program kita buat. Pada akhir tulisan ini, kita akan bisa membuat animasi lampu LED seperti pada video yang ada dibawah ini:

Dari video diatas, secara sederhana kita bisa membuatnya dengan program seperti dibawah ini:

void loop () {
   digitalWrite(8, HIGH);
   delay(100);
   digitalWrite(8, LOW);
   delay (100);
// diketik ulang sampai 10 kali

   digitalWrite(9, HIGH);
   delay(100);
   digitalWrite(9, LOW);
   delay (100);
//diketik ulang sampai 10 kali

   digitalWrite(10, HIGH);
   delay(100);
   digitalWrite(10, LOW);
   delay (100);
//diketik ulang sampai 10 kali
}
  

Jika jumlah lampu LED yang digunakan hanya 2 atau 3 buah saja tentu akan sangat mudah, namun, bagaimana jika lampu LED yang kita gunakan berjumlah lebih dari 10? Tentu saja program yang akan kita ketik akan sangat panjang.

Untuk itu kita akan mempelajari cara melakukan perulangan pembacaan program dengan fungsi FOR agar program yang kita ketik akan lebih pendek dan sederhana.

FOR


FOR adalah salah satu jenis perulangan (loop) dalam pemrograman yang digunakan untuk mengulangi blok kode secara berulang.

Secara umum fungsi FOR akan dituliskan sebagai berikut:

  • Nilai awal adalah nilai permulaan hitungan perulangan, biasanya dituliskan dalam bentuk variabel angka (integer). Nilai awal ini digunakan sebagai titik awal perulangan. dalam hal ini nilai awal adalah: int i = 0; yang bisa diartikan sebagai “nilai awal adalah 0”
  • Kondisi yang akan diperiksa adalah kondisi yang akan terus dievaluasi setiap kali program diulang, jika kondisi ini masih “benar” atau “true” maka perulangan akan terjadi dan program akan dibaca oleh Arduino dan sebaliknya jika kondisi “false” atau “salah” maka perulangan akan berhenti dan Arduino aka melanjutkan pembacaan program ke baris berikutnya. kondisi yang akan dievaluasi dari contoh diatas adalah: i<10; yang bermakna “jika nilai i lebih dari 10”
  • Penambahan pada bagian akhir loop ditulis i++, yang artinya “nilai i ditambah 1”. nilai i akan bertambah 1 setiap kali perulangan sampai akhir nya nilai i < 10
  • perulangan program akan terus terjadi jika nilai i kurang dari 10, ketika nilai i sudah lebih dari 10 maka Arduino akan keluar dari perulangan dan baris berikutnya

Perhatikan contoh dibawah ini

for(int i = 0; i<10; i++) {
    digitalWrite(8, HIGH);
    delay(300);
    digitalWrite(8,LOW);
    delay(300);
}
delay(2000);

Program diatas akan mengedipkan lampu LED pada pin 8 sebanyak 10 kali lalu berhenti selama 2 detik dengan perulangan sebagai berikut:

  • pada putaran pertama nilai i adalah 0, program akan membaca barisan yang ada didalam blok sehingga LED akan berkedip hidup dan mati sekali dengan delay 300 setelah itu nilai i bertambah 1 sehingga i=1
  • pada putaran kedua fungsi for akan mengevaluasi kondisi variabel i apakah bernilai < 10, jika iya, program akan membaca barisan yang ada didalam blok sehingga LED akan berkedip hidup dan mati lagi dengan delay 300 dan nilai i akan bertambah lagi 1 sehingga i =2
  • putaran ketiga dan selanjutnya sama dengan putaran yang kedua, jika nilai i masih kurang dari 10, LED akan berkedip dan i ditambah satu.
  • Akhirnya pada putaran ke 11 nilai i sudah lebih dari 10, maka program akan keluar dari perulangan dan membaca baris berikutnya yaitu delay(2000);

perhatikan output nya pada video berikut

Jadi untuk menghidupkan 3 lampu secara bergantian dimana setiap lampu berkedip-kedip sebanyak 10 kali, program yang harus kita tulis adalah:

  for(int a=0; a<=10; a++){
    digitalWrite(8,HIGH);
    delay(200);
    digitalWrite(8,LOW);
    delay(200);
  }
  for(int b=0; b<=10; b++){
    digitalWrite(9,HIGH);
    delay(200);
    digitalWrite(9,LOW);
    delay(200);
  }
  for(int c=0; c<=10; c++){
    digitalWrite(10,HIGH);
    delay(200);
    digitalWrite(10,LOW);
    delay(200);
  }

delay(2000);

dan hasilnya akan terlihat seperti ini:

WHILE

Selain menggunakan FOR, kita bisa menggunakan fungsi WHILE untuk melakukan perulangan kondisional.

//WHILE

int a = 0;
while(a<20){
   digitalWrite(8, HIGH);
   delay(200);
   digitalWrite(8, LOW);
   delay(200);
   a++;
}

dan hasilnya sama dengan menggunakan FOR:

Praktikum 2 – Mengendalikan lebih dari 3 buah LED dengan Arduino

Praktikum 2 – Mengendalikan lebih dari 3 buah LED dengan Arduino

Sebelumnya kalian sudah memperagakan cara mengendalikan 1 sampai 3 buah lampu LED dengan menggunakan Arduino. Kalian sudah mengenal beberapa fungsi dasar pada saaat memprogram Arduino yaitu setup(), loop(), pinMode(), digitalWrite() dan delay(). Selain itu, kalian juga sudah mempelajari bagaimana cara membuat rangkaian elektronik dengan menggunakan Arduino dan kabel jumper.

Pada praktikum kali ini kita akan menjelajahi penggunaan breadboard lebih dalam lagi. Untuk itu, penting bagi kalian untuk membaca tulisan ini dan tulisan sebelumnya tentang Praktikum Arduino – Blink supaya kalian lebih memahami cara kerja Arduino, breadboard dan rangkaian elektronik.

GND

Pada praktikum sebelumnya tentang Blink kalian sudah membuat rangkaian yang terdiri dari arduino dan LED. pada rangkaian itu, kaki LED yang panjang (+) dihubungkan ke salah satu pin pada Arduino dan kaki LED yang pendek dihubungkan ke resistor secara seri lalu dihubungkan lagi ke pin GND pada Arduino seperti pada gambar dibawah ini:

Jika kita ingin mengontrol LED lainnya, kita tinggal menambahkan LED dan menghubungkannya ke pin-pin yang tidak terpakai antara pin 1 sampai 13 dan ke pin GND. Namun demikian, ketika kalian akan menghubungkan lebih dari 3 LED ke Arduino, maka kalian akan menemukan masalah yaitu kurangnya pin GND. Hal ini dikarenakan Arduino hanya memiliki 3 pin GND saja yaitu pada sisi kanan atas bersebelahan dengan pin 13 dan 2 buah lagi berada di barisan power.

Untuk mengatasi hal tersebut diatas, maka kita bisa menggunakan 1 pin GND saja untuk semua sambungan yang memiliki anotasi negatif (-) dengan cara mencabangkan pin GND dengan menggunakan breadboard. perhatikan gambar dibawah ini

Pada gambar diatas, kita cukup menghubungkan satu pin GND ke salah satu titik lubang yang memiliki tanda garis biru (-) dan secara otomatis semua titik yang ada pada barisan tersebut akan menjadi GND.

Rangkaian 5 LED dengan menggunakan Arduino

Setalah memahami cara mencabangkan pin GND agar bisa dipakai bersama-sama oleh banyak komponen, maka sekarang kita sudah bisa membuat rangkaian dengan menggunakan 5 LED dengan menggunakan Arduino.

Peragakanlah rangkaian berikut ini:

Setelah rangkaian selesai dibuat, buka aplikasi Arduino IDE pada komputer atau laptop kalian, lalu programlah Arduino agar bisa menyalakan ke 5 LED secara bergantian dari lampu 1 ke lampu 5. Sebagai referensi, kalian bisa buka kembali tulisan sebelumnya disini : praktikum-arduino-blink

Silahkan diperagakan dan semoga berhasil.

Mengendalikan Motor DC dengan modul L298N dan Arduino

boy in denim jacket holding a toy with electric wires and wheel

Motor DC adalah mesin listrik yang mengubah energi listrik menjadi energi mekanik/gerakan. Motor DC sangat cocok untuk digunakan untuk menggerakkan roda robot. Pada tulisan ini, kita akan mempelajari cara mengendalikan motor DC dengan menggunakan modul L298N dan Arduino.

Pinout Modul L298N

Keterangan Gambar

Motor OutKonektor untuk menghubungkan motor
VCCInput tegangan dari power supply atau baterai
GNDGND
5VInput Logic 5V
ENA & ENBDigunakan untuk mengontrol menghidupkan/mematikan dan mengatur kecepatan motor
IN1 & IN2Kontrol arah putaran motor 1
IN3 & IN4Kontrol arah putaran motor 2

Cara Kerja Modul

INPUT 1INPUT 2Arah Putaran
LOWLOWMati
HIGHLOWMaju
LOWHIGHMundur
HIGHHIGHMati

Gambar Rangkaian

Coding

// Motor A
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
	//Semua pin motor sebagai output
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// motor dimatikan di awal
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

// fungsi dibawah ini digunakan untuk mengontrol arah putaran motor
void directionControl() {
	// kecepatan maksimum (bisa diatur antara 0-255)
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// arah maju
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// arah mundur
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// motor mati
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

// fungsi untuk mengatur kecepatan motor
void speedControl() {
	// hidupkan motor
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Perputaran mulai dari lambat ke cepat
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Perputaran mulai dari cepat ke lambat
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Matikan motor
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}
//ulang kembali

Setelah rangkaian dan coding selesai dikerjakan, langkah berikutnya adalah mengupload program yang kita buat tadi lalu menghubungkan rangkaian ke powersupply atau baterai 12 V. Perhatikan gerakan motor dan bandingkan dengan coding yang telah kita buat.

Sekian dan terima kasih.

Membaca intensitas cahaya dengan menggunakan LDR

Membaca intensitas cahaya dengan menggunakan LDR

LDR (Light Dependent Resistor) adalah sejenis resistor variabel yang nilai hambatannya berubah-ubah sesuai intensitas atau tingkat kecerahan cahaya. Ketika cahaya mengenai permukaan LDR, maka konduktivitas atau kekuatan hantaran listrik pada bahan LDR akan meningkat. Begitu pula sebaliknya, kemampuan menghantarkan listrik akan menurun apabila LDR tidak terpapar cahaya.

berdasarkan sifatnya ini, kita bisa menggunakannya sebagai sensor peka cahaya yang bisa dimanfaatkan untuk berbagai inovasi elektronik misalnya lampu jalan otomatis atau jendela otomatis.

Penggunaan LDR sebagai sensor dengan Arduino

LDR merupakan komponen analog, karena LDR menaikkan dan menurunkan daya hantar listrik dengan cara merubah nilai hambatan karena perubahan cahaya. Oleh karena itu, LDR akan dihubungkan ke pin Analog input pada Arduino. Perhatikan rangkaian berikut ini:

Setelah rangkaian selesai dibuat, buka software Arduino IDE dan ketikkan program dibawah ini:

int sensorPin = A0; 

int sensorValue = 0;
void setup() {
Serial.begin(9600); 
}
void loop() {
sensorValue = analogRead(sensorPin); 
Serial.println(sensorValue); 

delay(100);

}

Setelah itu, hubungkan Arduino ke komputer atau laptop kamu dan upload program yang telah ditulis tadi. Berikutnya, perhatikan hasil output lewat serial monitor sambil perlahan-lahan menutupi LDR yang terpapar cahaya dengan menggunaan tangan atau benda lainnya.

Proyek membuat lampu otomatis dengan LDR

Setelah kita memperhatikan dan memahami cara kerja LDR, berikutnya kita akan menggunakan sifat-sifat LDR ini untuk mengontrol lampu agar hidup dan mati sesuai dengan intensitas cahaya yang diterima nya. Perhatikan gambar dan kode dibawah ini:

int sensorPin = A0; //pin analog yang digunakan untuk membaca LDR
int ledPin = 7; //pin LED

int nilaiSensor = 0; //nilai awal sensor LDR

void setup() {
pinMode(ledPin,OUTPUT); //mengaktifkan pin "ledPin" sebagai output
Serial.begin(9600); //mengaktifkan serial monitor untuk membaca nilai dari sensor
}

void loop() {
nilaiSensor = analogRead(sensorPin); //membaca nilai yang dihasilkan oleh sensor
Serial.println(nilaiSensor); //menampilkan hasil pembacaan nilai sensor ke serial monitor
  if(nilaiSensor < 600){ //jika nilai sensor mencapai kurang dari 600, maka.....
    digitalWrite(ledPin,HIGH); //lampu akan dihidupkan
  }
    else{ //jika tidak.....
      digitalWrite(ledPin,LOW); //maka lampu akan dimatikan
    }
      
delay(100);

}

Program diatas sudah dilengkapi dengan penjelasan di tiap baris nya, silahkan dipahami dan diperagakan sesuai dengan hasil pengamatan yang telah dilakukan.

Demikian tulisan ini, semoga bermanfaat, selamat bereksperimen.

Membaca Database Firebase dan Menampilkannya di Aplikasi Android

Membaca Database Firebase dan Menampilkannya di Aplikasi Android

Pada 2 tulisan sebelumnya kita sudah membahas tentang mengukur suhu ruangan dengan DHT 11 dan mengirimkan data hasil pembacaan sensor ke firebase, maka pada tulisan ini saya akan menyambung tulisan lagi untuk melengkapi project ini dengan menampilkan data yang tersimpan di firebase ke aplikasi android yang kita buat sendiri.

pada tulisan kali ini, kita akan menggunakan situs kodular membuat aplikasi android sederhana yang akan digunakan untuk membaca nilai yang tersimpan di firebase. Baiklah, tanpa berpanjang lebar lagi, langsung saja kit ake materi pokok nya

Kodular

Kodular adalah situs yang menyediakan platform pembuatan aplikasi android dengan mudah tanpa menggunakan text-based programming. Untuk membuat aplikasi android di kodular, kita hanya perlu melakukan drag and drop komponen untuk membuat tampilan aplikasi android. Untuk melakukan programming terhadap komponen yang telah disusun, kodular menyediakan sistem programming model block yang juga digunakan dengan metode drag and drop.

Tampilan Designer Tab pada Kodular
Tampilan Block Tab pada Kodular

Memulai Kodular

Untuk mulai menggunakan situs aplikasi kodular, ikutilah langkah-langkah berikut ini:

1. Buka browser dan ketikkan https://www.kodular.io/ lalu klik tombol “Create Apps”

2. Kita akan diarahkan ke halaman sign in. Pada halaman ini pilih sign in dengan menggunakan akun google.

3. lalu pilih akun gmail yang kamu miliki sebagai akun untuk log in ke kodular.

4. Setelah berhasil log in, kalian akan diarahkan ke halaman creator. Pada halaman ini akan terlihat project-project yang sudah pernah dibuat sebelumnya.

5. Untuk membuat project baru, maka klik tombol “Create project” pada bagian kiri atas halaman Kodular Creator.

6. Berikan nama untuk project yang akan kita buat.

7. Pada “Configure your project”, biarkan saja semua konfigurasi tetap default dan langsung klik finish.

8. Kita akan diarahkan ke tab Designer untuk membuat tampilan aplikasi android yang akan kita buat.

Membuat Aplikasi Android

Aplikasi android yang akan kita buat di situs kodular ini adalah aplikasi yang berfungsi untuk membaca data yang terdapat pada realtime database nya firebase. Untuk mempermudah pembuatan aplikasi silahkan ikuti langkah-langkah berikut ini.

1. Buatlah tampilan android sederhana seperti dibawah ini:

2. untuk komponen image, kalian bisa download asset nya disini lalu nanti upload di properties “Background Image” pada komponen Image2.

3. Pada komponen Firebase_Database1, kita akan diminta untuk memasukkan Firebase token dan firebase URL.

Firebase token bisa didapatkan dengan cara:

  • Buka web firebase dan masuk ke console.
  • Pilih project firebase yang telah kita buat sebelumnya.
  • Klik icon gear yang terdapat pada sebelah kiri atas layar lalu klik project settings
  • pada menu project settings, copy isian web API lalu paste kan ke firebase token di kodular

Firebase URL bisa didapatkan dengan cara

  • Buka web firebase dan masuk ke console.
  • Pilih project firebase yang telah kita buat sebelumnya.
  • Klik Realtime Database
  • Copy link yang terdapat didalam Realtime Database lalu pastekan ke Firebase URL di kodular

4. Masuk ke tab block dan ikuti gambar dibawah ini

Sampai disini, aplikasi kita sudah bisa di download dalam bentuk apk dengan cara klik export >> android APK. Copy aplikasi yang telah kita buat tadi ke HP kita lalu install

Jika pembuatan aplikasi berhasil, maka tampilan aplikasi yang kita buat akan terlihat seperti ini:

Jika kalian masih merasa kesulitan membuat aplikasi nya, silahkan download file aia dibawah ini lalu masukkan ke kodular dengan klik tombol import project pada halaman project.

Project aia

Demikianlah Membaca Database Firebase dan Menampilkannya di Aplikasi Android dengan menggunakan kodular, semoga tulisan ini bermanfaat. Sampai jumpa pada tulisan-tulisan berikutnya

Mengirim data sensor DHT11 dari ESP8266 ke firebase

Mengirim data sensor DHT11 dari ESP8266 ke firebase

Sebelumnya kita telah berhasil Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266 (Part 1). Sekarang kita lanjutkan dengan tahapan berikutnya yaitu mengirim data sensor DHT11 dari ESP8266 ke firebase.

Tujuan dari proyek ini adalah untuk mengirim dan menyimpan data dari sensor DHT11 supaya nantinya data tersebut bisa dibaca oleh perangkat atau aplikasi lain yang juga terhubung dengan google firebase.

Seperti yang kita ketahui bersama, ESP8266 adalah mikrokontroller yang memliki fitur jaringan wireless sehingga sangat cocok digunakan untuk proyek-proyek IoT yang membutuhkan kontrol perangkat dari jarak jauh. Oleh karena itu, tulisan kali ini akan dibagi menjadi beberapa bagian yaitu:

Tulisan ini merupakan tulisan ke -2 dari 3 bagian yang tersedia dengan judul Mengirim data sensor DHT11 dari ESP8266 firebase. Langsung saja, berikut ini tutorialnya.

Google Firebase

Google firebase adalah platform pengembangan aplikasi yang membantu para developer untuk membangun serta mengembangkan aplikasi yang di dukung oleh google. firebase memiliki berbagai service yang dapat digunakan untuk berbagai kebutuhan aplikasi digital.

Dalam tulisan ini, kita akan mencoba untuk membuat database sederhana dengan menggunakan realtime database yang merupakan salah satu fitur yang terdapat di dalam google firebase.

Adapun Langkah mulai menggunakan Google Firebase adalah sebagai berikut:

Membuat Project Firebase

buka firebase.google.com lalu klik “sign in” dengan memasukkan akun google dan password kita (aplikasi google saya berbahasa Inggris, silahkan disesuaikan)

Berikutnya, setelah berhasil login, klik tombol “Get started”

pada laman berikutnya, kita pilih “add project”

Selanjutnya, beri nama project yang akan kita buat lalu klik continue

Berikutnya, saya menonaktifkan google analytics untuk project ini lalu klik tombol “Create project”

Setelah itu, kita tunggu proses pembuatan project nya, klik continue dan kita akan masuk ke halaman utama project firebase seperti gambar dibawah ini

Sampai disini kita telah berhasil membuat project firebase yang kita inginkan, namun masih perlu beberapa penyesuaian dan aktivasi fitur realtime database yang nantinya akan digunakan untuk menyimpan data hasil pembacaan sensor dari NodeMCU ESP8266.

Membuat Realtime Database

Setelah kita berhasil membuat project, langkah berikutnya kita akan membuat Realtime Database dengan cara klik menu build > Realtime Database

Kita akan diarahkan ke laman Realtime Database. Klik tombol “Create Database” untuk membuat database baru.

Berikutnya, kita pilih server “Singapore (asia-southeast1)” karena lebih dekat dengan lokasi kita, lalu klik next.

pada menu ‘Set up database”, pilih “Start in locked mode”. Setelah itu klik enable.

Sampai disini kita sudah berhasil membuat database, langkah berikutnya adalah memberi ijin untuk read/write database dengan cara klik tab “Rules”, ubah kedua tulisan “false” menjadi “true”.

Berikutnya, kita kembali ke menu build > autentication, lalu arahkan mouse ke “Sign in method” lalu pilih tombol “Anonymous”

Geser slider menjadi enable lalu save

Sampai disini Realtime Database sudah dapat menerima data dari NodeMCU ESP8266. Langkah berikutnya adalah melakukan programming di Arduino IDE.

Menambahkan Firebase ke Sketch DHT11

Buka kembali sketch/program DHT 11 yang pernah dibuat sebelumnya pada tulisan sebelumnya di Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266.

Buka Library manager di sebelah kiri layar (saya menggunakan Arduino IDE 2.1.0), cari library “Firebase Arduino Client Library for ESP8266 and ESP32”. Jika sudah ketemu, Klik install (perhatikan gambar)

Setelah library berhasil diinstal, kita lanjutkan menulis sketch dengan menambahkan beberapa library supaya ESp8266 bisa terhubung ke firebase.

Tambahkan library ESP8266WIF.I.h dan buatlah variabel untuk menyimpan data SSID dan password wifi

#include "DHT.h"
#include <ESP8266WiFi.h>
#define WIFI_SSID "nama_wifi" // isikan nama 
#define WIFI_PASSWORD "password_wifi"

Berikutnya, tambahkan library firebase dan buatah variabel untuk menyimpan data API key dan URL database dari firebase kita:

#include <Firebase_ESP_Client.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define API_KEY "API_dari_firebase"
#define DATABASE_URL "link_realtime_database"

Untuk mendapatkan API key, kita harus membuka firebase terlebih dahulu lalu buka project settings. Perhatikan gambar berikut:

Sedangkan link database bisa di copy dari menu Realtime Database

Langkah berikutnya adalah membuat firebase data objectdengan mengetikkan:

FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
bool signupOK = false;

pada void setup() tambahkan:

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  config.api_key = API_KEY;
  config.database_url = DATABASE_URL;

  /* Sign up */
  if (Firebase.signUp(&config, &auth, "", "")){
    Serial.println("ok");
    signupOK = true;
  }
  else{
    Serial.printf("%s\n", config.signer.signupError.message.c_str());
  }

  /* Assign the callback function for the long running token generation task */
  config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
  
  Firebase.begin(&config, &auth);
  Firebase.reconnectWiFi(true);

Terakhir, pada void loop tambahkan:

if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis > 15000 || sendDataPrevMillis == 0)){
    sendDataPrevMillis = millis();
    if (Firebase.RTDB.setFloat(&fbdo, "DHT/Kelembaban", h)){
      Serial.println("PASSED");
      Serial.println("PATH: " + fbdo.dataPath());
      Serial.println("TYPE: " + fbdo.dataType());
    }
    else {
      Serial.println("FAILED");
      Serial.println("REASON: " + fbdo.errorReason());
    }

    if (Firebase.RTDB.setFloat(&fbdo, "DHT/Suhu", t)){
      Serial.println("PASSED");
      Serial.println("PATH: " + fbdo.dataPath());
      Serial.println("TYPE: " + fbdo.dataType());
    }
    else {
      Serial.println("FAILED");
      Serial.println("REASON: " + fbdo.errorReason());
    }
  }

Sampai disini Sketch atau program telah selesai dikerjakan, langkah berikutnya adalah melakukan upload ke ESP8266.

Keseluruhan code dapat kamu lihat di bawah ini:

#include "DHT.h"
#include <ESP8266WiFi.h>
#define WIFI_SSID "nama_wifi"
#define WIFI_PASSWORD "password_wifi"

#include <Firebase_ESP_Client.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"

#define API_KEY "API_Key dati project setting"
#define DATABASE_URL "link yang ada di realtime database" 

#define DHTPIN 4    
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

//firebase data object
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

unsigned long sendDataPrevMillis = 0;
bool signupOK = false;

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  config.api_key = API_KEY;
  config.database_url = DATABASE_URL;

  /* Sign up */
  if (Firebase.signUp(&config, &auth, "", "")){
    Serial.println("ok");
    signupOK = true;
  }
  else{
    Serial.printf("%s\n", config.signer.signupError.message.c_str());
  }

  /* Assign the callback function for the long running token generation task */
  config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
  
  Firebase.begin(&config, &auth);
  Firebase.reconnectWiFi(true);
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
    if (isnan(h) || isnan(t)) {
    Serial.println(F("gagal membaca DHT11"));
    return;
  }

  Serial.print(F("Kelembaban: "));
  Serial.print(h);
  Serial.print(F("%  Suhu Udara: "));
  Serial.print(t);
  Serial.println(F("°C "));

  if (Firebase.ready() && signupOK && (millis() - sendDataPrevMillis > 15000 || sendDataPrevMillis == 0)){
    sendDataPrevMillis = millis();
    if (Firebase.RTDB.setFloat(&fbdo, "DHT/Kelembaban", h)){
      Serial.println("PASSED");
      Serial.println("PATH: " + fbdo.dataPath());
      Serial.println("TYPE: " + fbdo.dataType());
    }
    else {
      Serial.println("FAILED");
      Serial.println("REASON: " + fbdo.errorReason());
    }

    if (Firebase.RTDB.setFloat(&fbdo, "DHT/Suhu", t)){
      Serial.println("PASSED");
      Serial.println("PATH: " + fbdo.dataPath());
      Serial.println("TYPE: " + fbdo.dataType());
    }
    else {
      Serial.println("FAILED");
      Serial.println("REASON: " + fbdo.errorReason());
    }
  }
}

Jika upload berhasil maka data akan terkirim ke Realtime Database seperti yang terlihat dibawah ini

Tampilan Firebase
Tampilan serial monitor

Demikianlah tulisan saya hari ini, tulisan yang lebih banyak gambarnya daripada teks nya.
pada tulisan berikutnya kita akan ke judul selanjutnya yaitu: Membuat aplikasi android sederhana untuk menampilkan pembacaan DHT11 dengan kodular

Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266 (Part 1)

Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266 (Part 1)

Setelah berhasil melakukan Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino, kali ini kita akan mencoba untuk melakukan hal yang sama dengan mikrokontroler NodeMCU ESP8266.

Seperti yang kita ketahui bersama, ESP8266 adalah mikrokontroller yang memliki fitur jaringan wireless sehingga sangat cocok digunakan untuk proyek-proyek IoT yang membutuhkan kontrol perangkat dari jarak jauh. Oleh karena itu, tulisan kali ini akan dibagi menjadi beberapa bagian yaitu:

Tulisan ini merupakan tulisan pertama dari 3 bagian yang tersedia dengan judul Mengukur Suhu dan Kelembaban Ruangan dengan menggunakan Sensor DHT11 dan ESP8266. Langsung saja, berikut ini tutorialnya.

Bahan-bahan

pada tutorial ini kita menggunakan sensor DHT 11, NodeMCU ESP8266 dan beberapa helai kabel jumper.

NodeMCU ESP82661 Buah
Sensor DHT111 Buah
Kabel JumperSecukupnya

Skema Rangkaian

Setelah bahan-bahan tersedia, kita lanjutkan ke proses perangkaian komponen. Perhatikan gambar skema dibawah ini dengan seksama agar tidak salah colok kabel

Program / Sketch

Hubungkan NodeMCU ESP8266 ke komputer lewat kabel USB dan pilih board (saya menggunakan NodeMCU 1.0(ESP-12E Module)) dan port dengan benar lalu upload program dibawah ini:

#include "DHT.h"

#define DHTPIN 4    
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
    if (isnan(h) || isnan(t)) {
    Serial.println(F("gagal membaca DHT11"));
    return;
  }

  Serial.print(F("Kelembaban: "));
  Serial.print(h);
  Serial.print(F("%  Suhu Udara: "));
  Serial.print(t);
  Serial.println(F("°C "));
}

Jika rangkaian telah dirakit dengan benar dan sketch atau program juga telah diketik dengan benar maka kita bisa melihat hasilnya pada layar serial monitor seperti dibawah ini.

perhatikan juga baudrate yang ada pada serial monitor harus sama dengan yang ada pada sketch yaitu 115200.

Jika tampilan serial monitor sudah menunjukkan nilai kelembaban dan suhu, maka bisa dikatakan peragaaan yang kamu kerjakan telah berhasil.

Ok, segitu aja tulisan untuk bagian pertama ini, kita lanjut ke bagian ke-2 yaitu : Mengirim data sensor DHT11 dari ESP8266 firebase.
Sekian dan terima kasih

Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino

Pengukuran Suhu dan Kelembaban dengan DHT 11 dan Arduino

Salah satu kemudahan yang kita dapatkan dari development board Arduino adalah kemampuannya untuk membaca berbagai kondisi lingkungan dengan bantuan bermacam-macam sensor. Sensor-sensor ini dapat dengan mudah dihubungkan dengan Arduino dan mudah pula di program dengan bantuan berbagai library yang telah tersedia secara default di Arduino IDE maupun dari berbagai sumber di internet.

Pada tulisan ini saya akan mencoba untuk memberi tutorial tentang cara mengukur suhu dan kelembaban ruangan dengan menggunakan Arduino dan sensor DHT-11. Hasil pengukuran pada tutorial ini akan ditampilkan pada serial monitor sehingga kita bisa melihat hasilnya secara langsung.

DHT-11

DHT11 adalah salah satu jenis sensor yang sering digunakan bersama-sama arduino. Sensor ini digunakan untuk mengukur suhu dan kelebaban udara disekitarnya. Spesifikasi umum dari sensor DHT 11 adalah sebagai berikut:

  • Tegangan kerja antara 3-5 Volt
  • Rentang pengukuran suhu antara 0-50 derajat celcius
  • Rentang pengukuran kelembaban antara 20-90% RH (kelembaban Relatif)
  • Kebutuhan Arus 0.5 mA – 2.5 mA
DHT11

Perakitan

Bahan-bahan

Arduino Uno1 Buah
DHT 111 Buah
BreadBoard1 Buah
kabel JumperSecukupnya

Skema Rangkaian

ArduinoDHT 11
5VVCC
GNDGND
Pin 2Dout

Sketch / Program

Setelah rangkaian berhasil dibuat, maka langkah berikutnya adalah menulis dan mengupload program yang telah ditulis ke Arduino.

Ketiklah program dibawah ini dengan menggunakan Arduino IDE, lalu lakukan proses upload ke Arduino dengan menghubungkan Arduino lewat USB. Jangan lupa tentukan tipe Arduino dan port yang di gunakan pada menu tools.

#include "DHT.h"

#define DHTPIN 2    
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
    if (isnan(h) || isnan(t)) {
    Serial.println(F("gagal membaca DHT11"));
    return;
  }

  Serial.print(F("Kelembaban: "));
  Serial.print(h);
  Serial.print(F("%  Suhu Udara: "));
  Serial.print(t);
  Serial.println(F("°C "));
}

Jika program atau sketch telah berhasil dibuat dan telah di upload, maka langkah berikutnya adalah membuka menu serial monitor. Pada serial monitor akan terlihat hasil pembacaan kelembaban dan temperatur dalam satuan % dan celcius seperti yang terlihat dibawah ini.

Nah, itu tadi langkah-langkah untuk mengukur suhu udara dan kelembaban dengan menggunakan DHT11 dan Arduino. Semoga bermanfaat dan sampai ketemu pada tulisan-tulisan berikutnya….

Pulse Width Modulation (PWM)

Pulse Width Modulation (PWM)

Apa itu PWM?

PWM adalah teknik mengontrol denyutan atau pulsa pada sinyal digital untuk menirukan sinyal analog. Teknik PWM ini biasa digunakan untuk mengatur kecepatan motor, tingkat kecerahan pada LED dan sebagainya dalam rangkaian digital.

Pada tulisan sebelumnya tentangi sinyal Analog dan Digital saya sudah membahas tentang sinyal analog dan digital. Sinyal digital adalah jenis sinyal yang hanya memiliki 2 output yaitu HIGH atau kondisi on (biasanya 5 volt) dan LOW atau kondisi off (0 volt) sehingga pada dasar nya hanya bisa membuat output hidup dan mati saja mirip seperti saklar biasa untuk menghidupkan lampu dan kita tidak bisa membuat output dengan kondisi antara 5 – 0 volt dengan menurunkan tegangan secara bertahap seperti pada sinyal analog. perhatikan video dibawah ini dengan seksama.

Sinyal Analog
Sinyal Digital

Berdasarkan video diatas, kita dapat dengan mudah mengontrol output menjadi terang dan redup dengan menaikkan/menurunkan tegangan pada sinyal analog namun kita tidak bisa melakukan hal yang sama terhadap sinyal digital karena sifat gelombangnya.

untuk mengatasi hal itu maka digunakanlah teknik PWM untuk mengatur intensitas output pada rangkaian digital.

Cara Kerja PWM

PWM bekerja dengan cara memodifikasi duty cycle atau siklus kerja dari sinyal digital tersebut. untuk lebih memahami apa itu duty cycle, perhatikan grafik dibawah ini:

50% duty cycle
50% duty cycle dan 25% duty cycle (kotak merah)
25% duty cycle dan 10% duty cycle (kotak merah)
50% duty cycle dan 70% duty cycle (kotak merah)

Setelah kita perhatikan gambar diatas, kita dapat menyimpulkan bahwa semakin besar persentase duty cycle maka sinyal akan berada pada kondisi HIGH (5 volt) dalam waktu yang lebih lama dan sebaliknya jika persentase duty cycle semakin kecil maka sinyal akan HIGH dalam waktu yang lebih pendek. Kita bisa menggunakan pengetahuan ini untuk mengontrol output pada rangkaian digital.

Pada dasarnya, sebuah LED pada sebuah rangkaian digital selalu berkedip-kedip dengan frekuensi tinggi yang tidak bisa dilihat oleh mata kita. Dengan memodifikasi duty cycle ini, kita dapat membuat LED berada di kondisi HIGH lebih lama sehingga LED terlihat lebih terang misalnya pada duty cycle 75%. Untuk membuat LED menjadi lebih redup, kita tinggal merubah persentase duty cycle menjadi 50% atau dibawahnya, dimana pada duty cycle ini LED berada di kondisi HIGH yang lebih pendek sehingga cahaya yang terlihat oleh mata kita lebih sedikit.

Segitu saja penjelasan saya tentang PWM dan cara kerjanya, semoga penjelasannya gampang dipahami. Dengan adanya microcontroller board seperti Arduino maupun NodeMCU, penggunaan PWM menjadi semakin mudah dan berikut ini adalah contoh penggunaan teknik PWM dengan fungsi analogWrite() pada Arduino.

Teknik PWM dengan menggunakan fungsi analogWrite()