twitter


Pada posting sebelumnya, kita sudah mencoba menampilkan sesuatu di LCD. Sekarang kita coba menampilkan suatu karakter di LCD menggunakan input sebuah keypad.

Peralatan yang digunakan :

·          Arduino Uno + konektor
·          Keypad ukuran 4x4
·          Potensiometer 10K
·          Resistor 220 ohm
·          Kabel tembaga
·          LCD 2x16
·          Breadboard (optional)
·          Peralatan solder (optional)

Keypad yang digunakan dalam percobaan ini adalah keypad 4x4. Gambar di bawah adalah gambar dari keypad yang digunakan.
Rangkaian keypad


Keypad tersebut memiliki 8 buah pin dengan rangkaian kabel seperti pada gambar. Dapat dilihat pin 1 (paling kiri) - 4 terhubung masing-masing ke kolom 1-4 dan pin 5-8 terhubung ke masing-masing baris 1-4.



Rangkaian percobaan


LCD yang digunakan sama dengan LCD yang digunakan pada percobaan sebelumnya. Meskipun demikian, pemasangan pin berbeda dengan percobaan sebelumnya.

Pada percobaan ini jumlah kabel yang digunakan sangat banyak sehingga perlu hati-hati dalam pemasangan. Pastikan rangkaian terpasang dengan benar sebelum alat dinyalakan untuk mencegah kerusakan.

Source code


#include <LiquidCrystal.h>

const int numRows = 4; //Konstanta jumlah baris pada keypad
const int numCols = 4; //Konstanta jumlah kolom pada keypad

const int debounceTime = 100; //Debouncer

const int rowPins[numRows] = { 7, 6, 5, 4 }; //Pin untuk baris 1-4
const int colPins[numCols] = { 3, 2, A1, A0 };//Pin unttuk kolom 1-4

// Pemetaan baris dan kolom ke karakter
const char keymap[numRows][numCols] = {
{ '1', '2', '3', 'A' } ,
{ '4', '5', '6', 'B' } ,
{ '7', '8', '9', 'C' } ,
{ '*', '0', '#', 'D' }
};

// Inisialisasi pin LCD
LiquidCrystal lcd(8, 9, 10 ,11, 12, 13);

void setup(){
  lcd.begin(2, 16); //Inisialisasi jumlah baris dan kolom pada LCD
 
  for (int row = 0; row < numRows; row++){   
    pinMode(rowPins[row],INPUT); // Pin baris sebagai input
    digitalWrite(rowPins[row],HIGH); // Mengaktifkan pull-up resistor
  }
 
  for (int column = 0; column < numCols; column++){
    pinMode(colPins[column],OUTPUT); // Pin kolom sebagai output
    digitalWrite(colPins[column],HIGH);
  }
 
}

void loop(){
  char key = getKey();  
  if( key != 0) {
    lcd.print(key); //Print ke LCD
  } 
}

char getKey(){
  char key = 0; // Belum ada karakter yang dimasukkan
  for(int column = 0; column < numCols; column++){
    digitalWrite(colPins[column],LOW); // Memeriksa kkolom
    for(int row = 0; row < numRows; row++) {
       if(digitalRead(rowPins[row]) == LOW){
          delay(debounceTime); // debounce
          while(digitalRead(rowPins[row]) == LOW) //Menunggu tombol dilepas
          ;     
          key = keymap[row][column];
       }
     }
     digitalWrite(colPins[column],HIGH);
  }
  return key; //Mengembalikan karakter
}

Penjelasan

 
Pertama pin-pin yang digunakan oleh keypad dan LCD diinisialisasi. Pin yang digunakan oleh keypad adalah pin 7, 6, 5, dan 4 untuk baris 1-4 dan pin 3, 2, A1,dan A0 untuk kolom 1-4 dan pin 13-8 untuk LCD. Kemudian dilakukan pemetaan dari input baris dan kolom ke karakter pada keypad. Setelah itu semua pin baris dan kolom keypad diberikan nilai HIGH.

Pada program terdapat sebuah fungsi getKey() untuk mendapatkan sebuah karakter dari input keypad. Pertama-tama dilakukan pengecekan terhadap setiap kolom untuk baris yang ditekan. Kolom yang sedang dicek diberi nilai LOW. Kemudian dalam kolom tersebut dicek apakah ada baris yang bernilai LOW. Pin baris pada percobaan ini bersifat sebagai ­pull-up resistor. Pull-up resistor memiliki nilai HIGH ketika rangkaian terbuka. Rangkaian pada keypad bersifat terbuka pada keadaan normal sehingga tidak ada arus yang mengalir. Ketika sebuah tombol ditekan, maka rangkaian menjadi tertutup pada baris dan kolom yang bersangkutan. Karena rangkaian tertutup, pin baris menjadi bernilai LOW. Karakter akan diperoleh dengan memasukkan indeks baris dan kolom aktif pada matriks karakter.

Pada fungsi loop(), program menjalankan fungsi getKey() secara berulang dan memeriksa apakah getKey() mengembalikan suatu karakter. Jika ya, karakter tersebut akan ditampilkan ke LCD.



LCD merupakan alat yang biasa digunakan untuk menampilkan informasi dengan menggunakan mikrokontroller. Sekarang bagaimana cara untuk menggunakan LCD ini dengan menggunakan mikrokontroller berbasis Arduino. Dalam contoh ini saya menggunakan Arduino Uno.
Berikut contoh rangkaiannya :


Tabel Pin LCD dan Port Arduino
Pin LCD Pin Arduino
Pin 1 (GND) GND
Pin 2 (VCC) +5V
Pin 3 (VSS) Potentio 50K
Pin 4 (RS) PORT 12
Pin 5 (R/W) GND
Pin 6 (E) PORT 11
Pin 7 -
Pin 8 -
Pin 9 -
Pin 10 -
Pin 11 (D4) PORT 5
Pin 12 (D5) PORT 4
Pin 13 (D6) PORT 3
Pin 14 (D7) PORT 2
Pin 15 (LED +) +5V
Pin 16 (LED -) GND

    Silahkan rangkaiakan LCD dan arduino sesuai gambar dan keterangan di atas. Setelah selesai merangkai semua silahkan buka program Arduino anda. dan tuliskan code berikut ini :

// panggil librarynya:
#include <LiquidCrystal.h>

// inisialisasi PORT yang akan digunakan
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // Setting LCD kolom dan baris: 
  lcd.begin(16, 2);
  // Tulisan yang akan di tampilkan.
  lcd.print("hello, world!");
}

void loop() {
  // set kursor kolom 0, baris 1
  // (note: menghitung baris dimulai dari 0):
  lcd.setCursor(0, 1);
  // menampilkan angka setiap 1000 milisecond:
  lcd.print(millis()/1000);
}


Atau dapat buka langsung pada File --> Examples --> LiquidCrystal --> HelloWorld.
Jangan lupa pilih jenis arduino yang di pakai. Dalam contoh ini saya menggunakan Arduino Uno. Pilih Tools --> Board ---> Arduino Uno.

Setelah itu program siap di upload ke modul Arduinonya dengan tekan Ctrl + U dan lihat hasilnya.

SUMBER : http://techno-apk.blogspot.co.id/2014/02/menggunakan-lcd-16-x-2-di-arduino-uno.html


Light Dependent Resistor (LDR) adalah jenis resistor yang nilai hambatannya di pengaruhi oleh cahaya di sekitar. Maka kita bisa membuat LDR ini menjadi sensor cahaya. Karena memang sudah banyak aplikasinya. Misalnya pada lampu jalan, tidak ada saklar untuk mematikan dan menghidupkan lampu jalan.

Dengan menggunakan sensor cahaya LDR, lampu jalan akan mati ketika siang dan akan hidup ketika malam secara otomatis.

Sekarang kita akan buat program Arduino yang akan melakukan, "Lampu LED menyala ketika keadaan gelap dan mati ketika keadaan terang"  (Automatic Lighting System).

Yang harus kamu siapkan:

1x Arduino
1x Breadboard
1x Sensor cahaya LDR
1x Resistor 10k
7x Kabel jumper

Kemudian buat rangkaian seperti gambar dibawah ini.


NOTES:

  • Hubungkan 5V dan GND dari Arduino ke Breadboard.
  • Hubungkan kaki kiri LDR ke 5V.
  • Hubungkan kaki kanan LDR ke pin A2 Arduino.
  • Hubungkan kaki kiri resistor ke celah antara kaki kanan LDR dan GND arduino.
  • Hubungkan kaki kanan resistor ke GND.
  • Untuk pemasangan LED kamu bisa lihat pada Menyalakan LED dan BLINK.

Untuk pemrograman LDR, kamu bisa gunakan sketch program dibawah ini:
int LDR= A2;          // membuat variabel LDR untuk pin A2
int LED= 13;          // membuat variabel LED untuk pin 13
int nilaiLDR= 0;  // variabel nilai awal untuk nilaiLDR
void setup(){
  pinMode(LED, OUTPUT);         // menentukan LED menjadi OUTPUT
  Serial.begin(9600);         // komunikasi Arduino ke Komputer
}
void loop(){
  nilaiLDR= analogRead(LDR); // menyimpan nilai yang dibaca dari LDR ke variabel nilaiLDR
  Serial.print("NilaiLDR= ");         // menampilkan teks nilaiLDR=
  Serial.println(nilaiLDR);                 // menampilkan nilai dari nilaiLDR
  if(nilaiLDR < 500) {         // jika nilai dari LDR kurang dari 500
    digitalWrite(LED, HIGH);         // lampu LED menyala
  }
  else  {                         // jika tidak
    digitalWrite(LED, LOW);         // lampu LED mati
  }
}
REVIEW NOTES:
  • int nilaiLDR= 0; membuat variabel nilaiLDR, dan akan membaca nilai mulai dari 0.
  • pinMode(LED, OUTPUT); memilih mode OUTPUT untuk pin yang disimpan di variabel LED.
  • Serial.begin(9600); digunakan agar Arduino bisa berkomunikasi dengan Komputer.
  • nilaiLDR= analogRead(LDR); menyimpan nilai yang dibaca oleh sensor LDR kedalam variabel nilaiLDR.
  • Serial.print("NilaiLDR= "); digunakan untuk mencetak secara digital atau menampilkan teks nilaiLDR=, untuk ini kita tampilkan pada Serial Monitor.
  • Serial.println(nilaiLDR); untuk menampilkan nilai yang dibaca oleh sensor LDR
  • if(nilaiLDR < 500) jika sensor membaca nilai 500 atau kurang dari 500
  • digitalWrite(LED, HIGH); lampu LED menyala
  • else jika tidak
  • digitalWrite(LED, LOW); lampu LED mati
SUMBER : http://www.kelasrobot.com/2015/11/program-arduino-sensor-cahaya-ldr.html


Untuk aplikasi tertentu, misalnya pada penyiraman tanaman secara otomatis, kita memerlukan informasi mengenai kelembaban tanah untuk tanaman kita. Karena pengaruh suhu lingkungan, proses penguapan akan berpengaruh pada tingkat kelembaban tanah.
Saat ini telah banyak sensor kelembaban tanah yang beredar di pasaran dengan harga yang relatif terjangkau, salah satunya adalah kombinasi dari YL-39 (modul pengkondisian sinyal) dan YL-69 (probe sensor). Amatilah Gambar 1.

soil moisture sensor arduino
Gambar 1. Keterangan sensor kelembaban tanah

Modul sensor ini memiliki 4-pin, yaitu GND (untuk ground), VCC (3.3 - 5Volt), AO (keluaran analog yang akan dibaca oleh Arduino), dan DO (dapat diatur sensitivitasnya menggunakan knb pengatur, dan menghasilkan logika digital HIGH/LOW pada level kelembaban tertentu). Untuk saat ini, hanya tiga pin yang kita manfaatkan, yaitu GND, VCC dan AO.

Hardware

Rangkailah sensor dan Arduino seperti pada Gambar 2.
soil moisture sensor arduino
Gambar 2.Pemasangan sensor kelembaban tanah pada Arduino

Dalam penggunaan jangka panjang, memberikan tegangan terus-menerus pada probe akan mempercepat rusaknya probe tersebut, terutama saat tanah dominan dalam keadaan lembab. Oleh karena itu, salah satu alternatifnya adalah menempatan pin VCC pada salah satu pin digital (pada tutorial kali ini di pin 6), dan akan diaktifkan sesaat sebelum sensor mengambil data kelembaban.

Software

Bukalah IDE Arduino. Ketik dan upload-lah skrip di bawah ini. Keterangan program telah disertakan sebagai komentar.


Pemrograman Sensor Soil Moisture pada Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int sensorPin = A0;  // pin sensor
int powerPin = 6;    // untuk pengganti VCC
void setup() {  
  // jadikan pin power sebagai output
  pinMode(powerPin, OUTPUT);
  // default bernilai LOW
  digitalWrite(powerPin, LOW);
  // mulai komunikasi serial
  Serial.begin(9600);
}
void loop() {
  Serial.print("Nilai kelembaban: ");
  Serial.println(bacaSensor());
  // baca setiap 5 detik
  delay(5000);
}
int bacaSensor() {
  // hidupkan power
  digitalWrite(powerPin, HIGH);
  delay(500);
  // baca nilai analog dari sensor
  int nilaiSensor = analogRead(sensorPin);
  digitalWrite(powerPin, LOW);
  // makin lembab maka makin tinggi nilai outputnya
  return 1023 - nilaiSensor;
}

Bukalah serial monitor dan amati hasilnya. Berikut contohnya:
Nilai kelembaban: 50
Nilai kelembaban: 52
Nilai kelembaban: 627
Nilai kelembaban: 635
Nilai kelembaban: 50


SUMBER :  
https://tutorkeren.com/artikel/tutorial-menggunakan-sensor-kelembaban-tanah-yl-39-dan-yl-69-pada-arduino.htm


Pada kesempatan kali ini kita membahas bagaimana mengukur kekeruhan air dengan arduino, langsung saja sensor dan komponen apa saja yang dibutuhkan : 
 
1. Komponen dan Sensor
- Arduino Uno
- Sensor GE Turbidity
- LGZD sensor
- LCD 16x2
- LCM 1602 I2C
 
2. Setelah komponen dan sensor yang diperlukan telah tersedia langkah berikutnya merangkai semua     komponen dan sensor seperti berikut :
 
 - Rangkaian LCM1602I2C to Arduino Uno,
   
 - Setelah merangkai LCM1602I2C selanjutnya rangkai sensor Turbidity, sensor LGZD dan arduino      Uno sebagaimana tercantum pada gambar berikut :
 
 
  3. Setelah komponen dan sensor diatas dirangkai menjadi satu maka langkah selanjutnya upload             program ke IDE arduino. namun sebelum mengaupload koding/sketch pastikan bahwa alamat I2C       to arduino telah ditemukan apabila belum maka lihat postingan saya sebelumnya disini , jika I2C-       nya telah ada selanjutnya upload koding dibawa ini :
      
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);
//Ganti alamat 0x27 dengan alamat I2C anda yang telah ditemukan dipada serial monitor
int led = 2; 
int buzzer = 4;
int sensor_ntu = 7; // Connect turbidity sensor to Digital Pin 2
void setup(){
  lcd.begin (16,2); //LCD untuk ukuran 16x2
  }
void loop(){
  if(digitalRead(sensor_ntu)==LOW ){       //read sensor signal 
   digitalWrite(led, HIGH);   // if sensor is LOW, then turn on
   digitalWrite(buzzer,HIGH);
   lcd.setCursor(0, 0); //baris pertama
   lcd.print("SANGAT KERUH"); 
   delay (2000);
   }else{
   lcd.clear();
   digitalWrite(ledPin, LOW);    // if sensor is HIGH, then turn off the led
   digitalWrite(buzzer,LOW);
   lcd.setCursor(0, 1); //baris kedua
   lcd.print("NORMAL");
   delay (2000);
   lcd.clear();
     }
}
 
 


Sedikit share tentang aplikasi sensor suhu dan berat pada arduino uno. Untuk sensor berat digunakan potensio 1 k ohm dan sensor suhu menggunakan LM35. Berikut bentuk dari rangkaiannya:

sensor berat dan suhu


Pemograman di arduino
/*
The circuit:
* LCD RS pin to digital pin 13
* LCD Enable pin to digital pin 12
* LCD D4 pin to digital pin 11
* LCD D5 pin to digital pin 10
* LCD D6 pin to digital pin 9
* LCD D7 pin to digital pin 8
* LCD R/W pin to ground
* sensor berat pin A5
* sensor suhu pin A2
https://pernahganteng.wordpress.com/
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
long int data_ADC;
char tulisan[16] = “SUHU C=”;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print(“SUHU= C “);
lcd.setCursor(0,1);
lcd.print(“berat= g “);
}
void loop() {
data_ADC = analogRead(A2);
data_ADC = data_ADC*500/1023;
itoa(data_ADC,tulisan,10);
lcd.setCursor(7,0);
lcd.print(” “);
lcd.setCursor(7,0);
lcd.print(tulisan);
delay(100);
data_ADC = analogRead(A5);
data_ADC = data_ADC*1000/1023;
itoa(data_ADC,tulisan,10);
lcd.setCursor(7,1);
lcd.print(” “);
lcd.setCursor(7,1);
lcd.print(tulisan);
delay(100);
}

Hasil output akan muncul di LCD dengan keterangan :
Suhu = ...
Berat = ...

SUMBER :
https://pernahganteng.wordpress.com/2014/04/23/sensor-suhu-dan-berat-menggunakan-arduino-uno/