Tampilkan postingan dengan label ARDUINO DASAR. Tampilkan semua postingan
Tampilkan postingan dengan label ARDUINO DASAR. Tampilkan semua postingan

CARA MEMBUAT CUSTOM LOVE PADA LCD 16X2 DENGAN ARDUINO

Penjelasan Singkat:
Hai sobat semua, Disini kita akan mencoba membuat gambar Love atau saya sebut Custom Love yang hasilnya akan kita  tampilkan pada sebuah layar LCD 16x2. Dikatakan Custom Love karena di sini kita yang membuat bentuk Love yang kita inginkan. Disini saya menggunakan LCD Modul 16x2 Blue Backlight HD447 dengan tambahan modul I2C/TWI. LCD tersebut  dapat menyimpan 8 buat slot design yang bisa kita buat sendiri. Hasil dari penggabungan dari 8 buat slot tersebut akan membentuk dan menampilkan sebuah gambar Love pada layar LCD yang kita gunakan.  Tiap slot akan terdiri dari 5 kolom dan 8 baris kotak. Tujuan dari artikel ini adalah agar sobat bisa membuat sendiri custom gambar ataupun bentuk lainnya sesuai dengan yang sobat inginkan. Selanjutnya sobat bisa perhatikan gambar di bawah ini


Dari gambar di atas kita akan membagi gambar menjadi 8 buah slot, yang tiap slot nya akan kita ubah menjadi bilangan biner (0 & 1), agar bisa di mengerti oleh program arduino. Selanjutnya untuk mengubah gambar pola ke dalam bilangan biner kita akan mengikuti ketentuan dimana kotak berwarna putih akan kita beri nilai 0 dan kotak yang berwarna merah akan kita beri nilai 1. Dan setiap slot akan terdiri dari 5 kolom dan 8 baris kotak. Sobat bisa ikuti langkah-langkah dibawah ini.
               
                        
 Slot 1: {B00000, B00000, B00000, B00000, B00111, B01111, B11111, B11111}
 Slot 2: {B00000, B00000, B00000, B00000, B00000, B10001, B11011, B11111}


                 
 Slot 3: {B00011, B00111, B01111, B11111, B11111, B11111, B11111, B11111}
 Slot 4: {B11000, B11100, B11110, B11111, B11111, B11111, B11111, B11110}

  Slot 5: {B11111, B01111, B00111, B00011, B00001, B00000, B00000, B00000}
  Slot 6: {B11111, B11111, B11111, B11111, B11111, B01111, B00001, B00000}


                         

  Slot 7: {B11111, B11111, B11111, B11110, B11100, B11100, B11100, B00010}
  Slot 8: {B11110, B11100, B10000, B00000, B00000, B00000, B00000, B00000}

Setelah setiap slot kita ubah ke bilangan biner maka selanjutnya nilai biner tersebut dapat kita masukkan ke dalam sketch arduino kita, perhatikan sketch arduino berikut ini:

Sketch Arduino:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27   //Masukkan sesuai alamat LCD 16x2.
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

//---------------------------- Tampung setiap slot ke dalam variable ----------------------
byte slot1[8]   = {B00000, B00000, B00000, B00000, B00111, B01111, B11111, B11111};
byte slot2[8]   = {B00000, B00000, B00000, B00000, B00000, B10001, B11011, B11111};
byte slot3[8]   = {B00011, B00111, B01111, B11111, B11111, B11111, B11111, B11111};
byte slot4[8]   = {B11000, B11100, B11110, B11111, B11111, B11111, B11111, B11110};
byte slot5[8]   = {B11111, B01111, B00111, B00011, B00001, B00000, B00000, B00000};
byte slot6[8]   = {B11111, B11111, B11111, B11111, B11111, B01111, B00001, B00000};
byte slot7[8]   = {B11111, B11111, B11111, B11110, B11100, B11100, B11100, B00010};
byte slot8[8]   = {B11110, B11100, B10000, B00000, B00000, B00000, B00000, B00000};

void setup() {
  //Konfigurasi LCD 16x2
  lcd.begin(16, 2);
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight (HIGH);

//------------------------------------- Bentuk char untuk tiap slot -----------------------------
  lcd.createChar(1, slot1);
  lcd.createChar(2, slot2);
  lcd.createChar(3, slot3);
  lcd.createChar(4, slot4);
  lcd.createChar(5, slot5);
  lcd.createChar(6, slot6);
  lcd.createChar(7, slot7);
  lcd.createChar(8, slot8);
}

//-------------------------------------------- Bentuk Love -----------------------------------------
  void love(int x) {                     //Nilai x berfungsi untuk menentukan posisi love
    lcd.setCursor(x,0);
    lcd.write(1);
    lcd.write(2);
    lcd.write(3);
    lcd.write(4);
    lcd.setCursor(x,1);
    lcd.write(5);
    lcd.write(6);
    lcd.write(7);
    lcd.write(8);
}

void loop() {
   love (0);                              //Tampilkan love pada kolom pertama
}
Hasil dari program yang kita buat diatas adalah sebuah gambar love yang dapat tampil di Layar LCD 16x2 yang kita gunakan. Setelah sobat paham cara membentuk sebuah custom gambar, maka sobat bisa mengembangkannya lagi dengan membuat sebuah Custom Font [Huruf] maupun gambar smiley pada LCD sesuai dengan kreativitas sobat masing-masing.

Kesimpulan: Dari langkah-langkah di atas sobat pastinya sudah bisa membayangkan bahwa untuk membentuk suatu karakter atau gambar pada LCD, maka yang dilakukan oleh program adalah menyalakan tiap kotak [Pixel] pada layar, yang mana akan membentuk karakter atau gambar yang kita inginkan dengan memberikan nilai 1 [HIGH] pada pixel tersebut.


Terimakasih
Sobat Arduino

CARA MENAMPILKAN TEXT PADA LCD 16X2 & I2C (ARDUINO UNO)

Penjelasan Singkat:
Hai sobat semua, kali ini kita akan bermain dengan Shield LCD 16x2 dengan menampilkan tulisan yang ingin kita inginkan dengan menggunakan Arduino UNO R3. Tujuan perancangan kali ini adalah agar sobat dapat dengan mudah merangkai dan memprogram arduino yang terhubung ke sebuah LCD 16x2 dan mengetahui cara kerja rangkaian dan program yang dibuat sehingga sobat bisa membuat tulisan apapun yang sobat inginkan. Disini kita menggunakan sebuah LCD 16x2 yang telah dipasang rangkaian I2C agar pengkabelan dari LCD ke Arduino menjadi lebih sedikit. Sobat bisa baca cara menghubungkan rangkaian I2C ke LCD 16x2 di sini. Selanjutnya sobat bisa merangkai sesuai dengan gambar rangkaian di bawah ini. 


Gambar Rangkaian:


Cara Kerja Rangkaian:
Ketika rangkaian di nyalakan, arduino akan mengirimkan pesan berupa text atau angka yang telah kita buat pada sketch arduino  ke LCD melalui pin A6 dan A5 Arduino menuju pin SDA dan SCL pada LCD. Pin VCC pada LCD dihubungkan ke Pin 5V arduino untuk mencatu tegangan LCD sebesar 5V.
Berikut kita akan membuat program yang akan memunculkan tulisan "HELLO SOBAT" pada baris tengah atas arduino dan "ARDUINO MEDAN123" pada baris bawah tengah LCD. Sobat bisa perhatikan sketch arduino yang akan kita buat di bawah ini.

Sketch Arduino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27                  // Alamat LCD 16x2 yang digunakan.
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup() {
      lcd.begin (16,2);
      lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);

      lcd.setBacklight(HIGH);
      lcd.setCursor(2,0);
}

void loop() {
      lcd.setCursor(2,0);
      lcd.print("HELLO SOBAT");
      delay(1000);
      lcd.setCursor(0,1);
      lcd.print("ARDUINO MEDAN123");
      delay(5000);
      lcd.clear();
      delay(1000);
}

Program di atas akan menampilkan tulisan "HELLO SOBAT" dimulai pada baris pertama dan kolom ketiga dan menampilkan tulisan "ARDUINO MEDAN123" pada baris kedua dan kolom pertama. Untuk lebih jelasnya sobat bisa perhatikan fungsi perintah tiap-tiap potongan program di atas.

Penjelasan Potongan Program
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
Pada program ini kita akan menambahkan 3 buah library yaitu Wire.h , LCD.h dan LiquidCrystal_I2C.h.


#define I2C_ADDR    0x27                  // Sesuai Alamat LCD 16x2 yang sobat gunakan.
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
Baris program diatas berfungsi untuk mendefinisikan tiap pin pada LCD 16x2 yang kita gunakan.


void setup() {
      lcd.begin (16,2);
      lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
      lcd.setBacklight(HIGH);
      lcd.setCursor(2,0);
}
Baris program diatas berfungsi untuk konfigurasi pin pada LCD 16x2 yang kita gunakan.


void loop() {
      lcd.setCursor(2,0);
      lcd.print("HELLO SOBAT");
      delay(1000);
      lcd.setCursor(0,1);
      lcd.print("ARDUINO MEDAN123");
      delay(5000);
      lcd.clear();
      delay(1000);
}
Disini kita akan bahas fungsi setiap baris program:
 lcd.setCursor(2,0); & lcd.print("HELLO SOBAT"); Berfungsi untuk menampilkan tulisan
"HELLO SOBAT" pada kolom 3 dan baris pertama pada LCD. Perlu di ingat bahwa pengalamatan kolom pada LCD 16x2 dimulai dengan kolom 0 dan baris 0, dimana kolom 0 berarti kolom pertama  dan baris 0 berarti baris pertama pada LCD.
---------------------------------------------------------------------------------------------------------------------------------------
delay(1000); Perintah ini berfungsi untuk memberikan jeda waktu 1 detik sebelum baris program berikutnya dijalankan.
---------------------------------------------------------------------------------------------------------------------------------------
lcd.setCursor(0,1); & lcd.print("ARDUINO MEDAN123"); Berfungsi untuk menampilkan tulisan
"ARDUINO MEDAN123" pada kolom 1 dan baris ke 2 pada layar LCD 16x2.
---------------------------------------------------------------------------------------------------------------------------------------
delay(5000); Perintah tersebut juga berfungsi untuk memberikan jeda waktu selama 5 detik sebelum baris program berikutnya dijalankan.
---------------------------------------------------------------------------------------------------------------------------------------
lcd.clear(); akan menghapus isi memory dari LCD sehingga tulisan pada layar hilang.
delay(1000); setelah layar dihapus selanjutnya perintah delay akan memberikan jeda waktu layar kosong [tidak ada tampilan] selama 1 detik.
---------------------------------------------------------------------------------------------------------------------------------------
Singkatnya pada saat program dijalankan, Di layar LCD pada baris pertama akan muncul tulisan "HELLO SOBAT"  dan setelah jeda waktu 1 detik akan muncul tulisan "ARDUINO MEDAN123" di bawah tulisan sebelumnya. Setelah 5 detik maka tampilan layar akan dihapus selama 1 detik dan akan akan berulang seterusnya selama rangkaian bekerja.
---------------------------------------------------------------------------------------------------------------------------------------

Demikianlah cara menampilkan tulisan pada Shield LCD 16x2. Sobat bisa membuat tulisan apapun dimulai dari kolom dan baris yang sobat inginkan. Sobat bisa menambahkan perintah-perintah lainnya seperti membuat tulisan menghilang, bergerak ke kiri atau ke kanan dan lainnya. Semuanya tergantung dari kreativitas sobat masing-masing. 

Terimakasih.
Sobat Arduino.


SHIELD LCD DISPLAY 16X2

Penjelasan Singkat:
LCD [Liquid Crystal Display] adalah perangkat yang  digunakan untuk menampilkan tulisan sesuai dengan yang kita inginkan. LCD 16x2  memiliki baris dengan alamat 0 dan 1 serta kolom dengan alamat 0-15 [Nilai yang digunakan pada program].  Maksudnya adalah alamat baris 0 adalah baris pertama pada layar LCD dan alamat kolom 0 adalah kolom pertama pada LCD. Untuk mempermudah pemrograman pada arduino maka disini kita akan menggunakan library LiquidCrystal_I2C.h &  LCD.h. Sobat bisa lihat bentuk dari LCD 16x2 yang kita gunakan seperti pada gambar dibawah ini.
Adapun perintah-perintah pada arduino yang dapat digunakan adalah sebagai berikut:
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.begin (16,2)             : LCD yang digunakan mempunyai 2 baris dan 16 kolom
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.noDisplay()               : Menghilangkan tampilan pada LCD.
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.display()                    : Menampilkan tulisan pada LCD.
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.clear()                        : Menghapus isi memory [Tampilan pada LCD].
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.noCursor()                : Menghilangkan tampilan kursor.
-------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.setCursor()               : Meletakkan kursor pada baris dan kolom tertentu.
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.blink()                        : Tampilan blinking pada kursor.
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.scrollDisplayRight()  : Menggeser tulisan ke arah kanan.
-------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.scrollDisplayLeft()    : Menggeser tulisan ke arah kiri.
--------------------------------------------------------------------------------------------------------------------------------------- 
- lcd.autoscroll()               :  Membuat tulisan scroll secara otomatis.
--------------------------------------------------------------------------------------------------------------------------------------- 

Dengan mengetahui perintah-perintah diatas berarti mempermudah sobat untuk bisa memprogram tulisan  sesuai dengan yang sobat inginkan. 

RANGKAIAN KENDALI 1 LAMPU DENGAN 1 TOMBOL ON/OFF (ARDUINO UNO)

Penjelasan Singkat:
Hai sobat semua, berikut ini kita akan coba membuat rangkaian arduino yang berfungsi untuk menyalakan dan mematikan lampu LED dengan menggunakan 1 tombol on/off. Tujuan dari perancangan ini adalah untuk memahami cara kerja arduino yang salah satu pinnya  digunakan untuk mengendalikan keluaran pin lain, dimana satu pin di hubungkan ke tombol on/off dan satu pin yang lain dihubungkan ke lampu LED, sehingga kedepannya sobat bisa mengembangkan sendiri rangkaian yang menggunakan lebih dari 1 tombol dan lampu sesuai dengan kreativitas dan keinginan sobat masing-masing. Sobat bisa merangkainya sesuai dengan gambar berikut ini.

Gambar Rangkaian:


Cara Kerja Rangkaian:
Ketika Tombol S1 di Tekan maka Nilai dari Pin A0 akan bernilai HIGH, dan rangkaian akan memeriksa kondisi dari lampu LED, jika Lampu LED mati maka LED tersebut akan dinyalakan dengan memberikan Nilai HIGH pada Pin 8, dan sebaliknya jika LED dalam kondisi hidup maka LED akan dimatikan dengan memberikan Nilai LOW pada Pin 8 Arduino.
Sketch [Source Code] Arduino:
int tombol = A0;
int led = 8;

void setup() {
    pinMode (tombol, INPUT);
    pinMode(led, OUTPUT);
}

void loop() {
   if (digitalRead(tombol) == HIGH)
   if (digitalRead(led) == LOW) {
       digitalWrite(led, HIGH);
       delay(500);
    }
   else {
       digitalWrite(led, LOW);
       delay(500);
    }
}

Penjelasan Program:
int tombol = A0;
int led = 8;
Perintah diatas berfungsi untuk mendeklarasikan pin A0 pada arduino sebagai tombol dan pin 8 pada arduino sebagai led. Atau sederhananya kita memberitahukan pada program bahwa pin A0 selanjutnya kita sebut sebagai tombol dan pin 8 sebagai led.

void setup() {
    pinMode (tombol, INPUT);
    pinMode(led, OUTPUT);
}
Perintah diatas merupakan konfigurasi/pengaturan dari pin arduino yang akan kita gunakan sebagai tombol dan led, sehingga  pada saat program  dijalankan maka  program  akan  menjadikan  tombol [pin A0] pada arduino sebagai masukan [INPUT] dan led [pin 8] sebagai keluarannya [OUTPUT].

void loop() {
   if (digitalRead(tombol) == HIGH)
   if (digitalRead(led) == LOW) {
       digitalWrite(led, HIGH);
       delay(500);
    }
}
Perintah di dalam void loop();  adalah perintah yang akan di jalankan oleh arduino secara berulang dan terus menerus selama rangkaian dinyalakan. if (digitalRead(tombol) == HIGH); Perintah ini akan membaca status dari tombol, dan jika tombol di tekan [HIGH] maka selanjutnya program akan menjalankan perintah if (digitalRead(led) == LOW);  yang akan memeriksa kondisi dari lampu led, jika lampu led dalam kondisi mati [LOW] maka perintah digitalWrite(led, HIGH); akan memberikan nilai HIGH pada pin 8 arduino sehingga lampu Led Menyala. delay(500); disini berfungsi untuk menjaga kestabilan kerja rangkaian dengan memberikan waktu tunggu/delay selama 500ms untuk membaca penekanan tombol berikutnya. Sering juga disebut sebagai fungsi debouncing.

   else {
       digitalWrite(led, LOW);
       delay(500);
    }
Jkia pengujian pada perintah sebelumnya if (digitalRead(led) == LOW); tidak terpenuhi maka baris perintah didalam else {}  yang akan dijalankan. Perintah digitalWrite(led, LOW); akan memberikan nilai LOW pada led sehingga lampu led mati. delay(500); disini juga berfungsi sebagai debouncing.

Catatan Tambahan:
Jika Tombol [S1] di tekan secara terus menerus maka lampu LED juga akan menyala dan mati secara terus menerus dengan waktu tunda selama 500ms, ini terjadi dikarenakan  program akan membaca ulang nilai tombol setelah jeda waktu 500ms, dan jika tombol masih ditekan berarti nilai dari tombol tetap HIGH maka perintah pengujiannya akan terus dijalankan sehingga lampu LED dari mati akan menjadi hidup dan sebaliknya. 

Baiklah Sobat Semua, demikianlah tutorial cara mengendalikan sebuah lampu led dengan menggunakan sebuah tombol on/off. Dengan mengetahui dasar dan cara kerja rangkaian serta fungsi perintah pada (skecth) arduinonya maka sobat bisa mengembangkannya sendiri. Sehingga sobat lebih muda untuk membuat sebuah rangkaian yang lebih kompleks dan menarik.