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).

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.

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.

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); } } }
[…] mengintensifkan pemrograman. Hanya saja, saat ini pin-pin Arduino telah banyak terpakai untuk LCD Display, 3 sensor dan rencananya akan ada 3 relay. Jika memang menggunakan pengesetan digital, maka minimal […]
gan, ada yang buat atmega 8535 ga??
mohon bantuannya ya gan..
Maaf Gan, saya tidak pengalaman pake 8535.