Project 5: Display dan PWM

Salimatussholati Az Zahra
5 min readMar 9, 2022

--

Halo, temen-temen! Kembali lagi bersama aku dan project-project sistem embedded :D

Hari ini, aku akan menceritakan project sederhana yang aku lakukan dengan memanfaatkan LCD display dan LED PWM controller yang terdapat pada ESP32.

Alat dan bahan yang perlu disiapkan untuk project ini, antara lain:

1. ESP32

2. Breadboard

3. Kabel USB

4. Jumper wire male-to-male dan wire female to female

5. Resistor 330 ohm

6. LCD Display

7. Lampu LED

Sebelum memanfaatkan LCD Display, kita perlu memasangkan I2C adapter pada LCD.

Gambar I2C Adapter (sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Selanjutnya, kita menghubungkan alat dan bahan di atas sesuai dengan skematik berikut

Pada project LCD Display ini, aku tidak menggunakan breadboard karena ingin mencoba menggunakan jumper dengan jenis wire yang berbeda dari biasanya, yaitu female to female. Disini aku menggabungkan GPIO 21 ke SDA, GPIO 22 ke SCL, GND pada ESP32 ke GND pada LCD, dan VCC pada LCD ke VIN pada ESP32.

Sebelum melanjutkan project ini, kita perlu menginstall library LiquidCrystal_I2C. Klik tulisan tersebut atau kalian bisa mengaksesnya melalui link ini: https://github.com/marcoschwartz/LiquidCrystal_I2C/archive/master.zip .

Setelah berhasil di-download, unzip folder dan taruh di folder yang sama dengan libraries Arduino IDE. Lalu, restart Arduino IDE dan ayo kita nyalakan LCD-nya! :D

Eits, sebelum menjalankan LCD, alangkah baiknya kita menjalankan kode di bawah untuk mengecek ketersediaan I2C address pada LCD.

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/

#include <Wire.h>

void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}

void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
}
else {
Serial.println("done\n");
}
delay(5000);
}

(sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Kalian bisa melihat output-nya dengan membuka Serial Monitor dan mengaturnya menjadi 115200 baud.

Berikut adalah tampilan apabila I2C address tersedia di LCD kalian. Selanjutnya, aku akan menunjukkan ke kalian bagaimana aku menuliskan pesan statis untuk temanku melalui LCD display.

Kita hanya perlu mengupload code berikut. Tulis pesanmu menggunakan lcd.print("Hello, World!").

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/

#include <LiquidCrystal_I2C.h>

// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;

// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

void setup(){
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
}

void loop(){
// set cursor to first column, first row
lcd.setCursor(0, 0);
// print message
lcd.print("Dah bisa, tom:D");
delay(1000);
// clears the display to print new message
lcd.clear();
// set cursor to first column, second row
lcd.setCursor(0,1);
lcd.print("makasiy byk");
delay(1000);
lcd.clear();
}

(sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Setelah kode diverifikasi dan diupload, seharusnya kita sudah bisa melihat pesan yang ingin kita tampilkan pada LCD. Tetapiii, kalau kalian belum juga melihat pesannya, mungkin kalian perlu memutar potentiometer pada LCD kalian. Potentiometer berfungsi untuk mengatur kontras antara tulisan dan cahaya display.

Memutar Potentiometer (sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Putar potentiometer dan atur cahaya pada display sehingga tulisan pesanmu bisa dibaca dengan jelas! Berikut adalah tampilan display-ku saat menampilkan pesan statis yang telah aku sisipkan pada kode program.

Yey, project LCD display selesai! Sekarang saatnya kita berpindah ke project LED PWM controller pada ESP32. Dengan menggunakan LED PWM controller ini, kita bisa mengatur terang redupnya lampu LED.

Pertama-tama, kita perlu memasang skematik seperti berikut

(sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Pasangkan kabel jumper pada RX2 dan sambungkan dengan kutub positif lampu LED. Pasangkan pula kutub negatif lampu LED sejajar dengan resistor. Jangan lupa untuk memasangkan GND pada breadboard.

Setelah semua alat dipasangkan sesuai skematik, saatnya kita menjalankan kode program.

// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16

// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;

void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);

// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);
}

void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}

// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}

(sumber: https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/)

Pada kode program, cahaya lampu LED dapat diatur sesuai dengan keinginan kita. Berikut adalah tampilan rangkaian aku setelah kode program berhasil dijalankan.

Dapat dilihat, PWM controller bisa mengakibatkan cahaya LED bisa berubah dan kembali ke state semula dengan seiringnya waktu.

Sekian, project-project untuk hari ini. Terima kasih telah membaca!

--

--

Salimatussholati Az Zahra

Mencoba membangkitkan kembali kebiasaan berekspresi dengan puisi