Lebih Asyik dengan LCD Display

Bakal lebih asyik jika piranti kita punya display tersendiri sehingga kita bisa memonitor aktivitasnya terlepas dari peran komputer. Oleh karena itu saya membeli LCD display standard. Penggunaannya dengan Arduino sangat mudah karena sudah ada library-nya, yaitu LiquidCrystal (Tutorial lengkap ada di: sini).

Wow e-Pot, hehehe

Wow e-Pot, hehehe

Saya mengintegrasikan display ini ke Arduino Nano. Sebagian code untuk sensor-sensor saya ambil dari proyek Garduino versi 1 saya. Sementara sensor Soil Moisture belum saya integrasikan.

Menampilkan nilai Humidity & Temperature

Menampilkan nilai Humidity & Temperature

Oh iya, untuk menyalakan backlight dari LCD saya menggunakan salah satu pin Arduino juga. Saya pakai pin 10 dengan PWM sehingga kecerahannya bisa diatur dengan program.

Saya menambahkan timer untuk mematikan backlight supaya hemat listrik. Backlight akan diredupkan (fading) sampai padam setelah menyala 20 detik. Tetapi ada tombol untuk menyalakan backlight jika kita ingin sewaktu-waktu melihat penginderaan.

Tombol untuk menyalakan & mematikan backlight

Tombol untuk menyalakan & mematikan backlight

Asyik kan? Di bawah ini adalah source code-nya. Meneruskan sebelum-belumnya, program di bawah ini open source.

/*
Sensors with LCD
Dewo, 25/09/2012
*/

#include <dht11.h>
#include <LiquidCrystal.h>

dht11 DHT;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define DHT_pin 6
#define DHT_jeda 2000
#define backlight_pin 10
#define backlight_delay 20000
#define button_pin 9
#define button_delay 200

double DHT_millis = 0;
int backlight_state = HIGH;
double button_prev = 0;

void setup() {
  pinMode(backlight_pin, OUTPUT);
  digitalWrite(backlight_pin, backlight_state);
  pinMode(button_pin, INPUT);

  lcd.begin(16,2);
  lcd.print("e-Pot by Dewo   ");
  lcd.setCursor(0, 1);
  lcd.print("dewo@studewo.com");
  Serial.begin(9600);
  delay(3000);
  lcd.setCursor(0, 1);
  lcd.print("                ");
  lcd.setCursor(0, 0);
  lcd.print("Temp. Humid Soil");
}

void loop() {
  read_sensor();
  read_button();
  backlight();
}

void read_sensor() {
  double DHT_current = millis();
  if (DHT_current - DHT_millis >= DHT_jeda) {
    int DHT_chk = DHT.read(DHT_pin);
    switch(DHT_chk) {
      case DHTLIB_OK:
        Serial.println("OK");
        break;
      case DHTLIB_ERROR_CHECKSUM:
        Serial.println("Checksum error");
        break;
      case DHTLIB_ERROR_TIMEOUT:
        Serial.println("Time out error");
        break;
      default:
        Serial.println("Unknown error");
        break;
    }
    // Temperature
    lcd.setCursor(0, 1);
    lcd.print((float)DHT.temperature, 0);
    lcd.print("'C");
    // Humidity
    lcd.setCursor(6, 1);
    lcd.print((float)DHT.humidity, 0);
    lcd.print("%");
    // Soil Moisture
    lcd.setCursor(12, 1);
    lcd.print("N/A");
    DHT_millis = millis();
  }
}

void read_button() {
  int reading = digitalRead(button_pin);

  if ((reading == HIGH) && (millis()-button_prev>button_delay)) {
    if (backlight_state == HIGH) {
      backlight_state = LOW;
      for (int i = 255; i >= 0; i--) {
        analogWrite(backlight_pin, i);
        delay(10);
      }
    }
    else {
      backlight_state = HIGH;
      digitalWrite(backlight_pin, backlight_state);
      delay(1);
    }
    button_prev = millis();
  }
}

void backlight() {
  if (backlight_state == HIGH && millis()-button_prev>backlight_delay) {
    backlight_state = LOW;
    for (int i = 255; i >= 0; i--) {
      analogWrite(backlight_pin, i);
      delay(10);
    }
  }
}
Iklan

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di Arduino, Dewo, Elektronika, Foto, Prototype, Teknologi dan tag , , , . Tandai permalink.

3 Balasan ke Lebih Asyik dengan LCD Display

  1. Ping balik: Membuat Nilai Referensi Analog | ♪ Emanuel Setio Dewo ♪

  2. madun berkata:

    gan, ada yang buat atmega 8535 ga??
    mohon bantuannya ya gan..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s