Anda di halaman 1dari 24

MENGGABUNGKAN BEBERAPA SKETCH

PROGRAM ARDUINO 2 (MODUL PIR, DHT11,


RELAY, MP3)
Sepertinya banyak yang pengen tau nih cara gabungin sketch
program arduino. Baru contoh Menggabungkan Beberapa
Sketch Program Arduino 1 ya. Kayaknya contohnya masih
kurang deh. Nih uda kasih lagi contoh yang ke dua. Misalnya
uda punya dua sensor nih, satu nya sensor PIR satunya lagi
sensor temperatur. Langsung aja kita ambil dari contoh yang
pernah uda bikin.
Yang pertama untuk sensor PIR deh. Berikut sketchnya...

const int PIRSensor = A0;


int nilaiPIRSensor = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
nilaiPIRSensor = digitalRead(PIRSensor);
Serial.print(“nilaiPIRSensor:”);
Serial.println(nilaiPIRSensor);
}

Yang kedua kita ambil dari examplenya librarynya arduino


untuk sensor DHT11 yang populer. Uda punya library DHT11
yang dapat di download disini. Kali aja ada yang belum tau
cara nambahin library di arduino IDE ya. Lain kali Uda bikini
bahasan khusunya deh. Simplenya aja ya bagi yang belum tau,
buka Arduino IDE nya, klik sketch, dibawahnya ada include
library, disampingnya ada add .ZIP library. Nantinya bakal
keluar jendela baru, pilih deh file ZIP librarynya. Tinggal
klik Open jadi deh. Ups... lanjut....
Nih contoh dari library

#include < SimpleDHT.h >

//variables for storing values


int pinDHT11 = 2;
SimpleDHT11 dht11;

{
Serial.begin(115200);
}

void loop()
{
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");

// read without samples.


byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature,
&humidity,NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed,
err=");Serial.println(err);delay(1000);
return;
}

Serial.print("Sample OK: ");


Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");

// DHT11 sampling rate is 1HZ.


delay(1500);
}

Sebenarnya dari sample diatas ada sedikit masalah tentang


variable nilai temperaturnya dan kelembabannya. Variable
tersebut di tarok di looping program. Lha apa lagi sih Uda....
jadi variabel yang Uda maksud adalah penamaan register biar
kitanya tidak bingung nantinya... Aduuuhhh tambah bingung
Udaaaaa... jadi variable tersebut untuk menyimpan nilai atau
angka dari pembacaan temperatur dan kelembabannya. Kalau
kita Cuma pakai untuk menampilkan nilai yang dibaca ini
melalui “Serial Monitor” dari arduino IDE nya. Kalau kita mau
gabungin untuk menyalakan kipas ya harusnya kita tarok
penamaan variabelnya di pernyataan atau deklarasi program.
Jadi programnya kita robah sedikit ya menjadi.

#include < SimpleDHT.h >


SimpleDHT11 dht11;

//variables for storing values


int pinDHT11 = 2;
int temperature = 0;
int humidity = 0;

{
Serial.begin(115200);
}

void loop()
{
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");

// read without samples.


byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature,
&humidity,NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed,
err=");Serial.println(err);delay(1000);
return;
}

Serial.print("Sample OK: ");


Serial.print(temperature);
Serial.print(" *C, ");
Serial.print(humidity);
Serial.println(" H");

// DHT11 sampling rate is 1HZ.


delay(1500);
}

Kita ambil examplenya LiquidCrystal lagi ya. Yang paling


familiar aja deh “HelloWord” wusshhhh....
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD


interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}

void loop()
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins
with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}

Lanjuuuuttt....
Sekarang kita asumsiin kita punya LCD 20x4 harus robah
yang mana ya dari contoh library diatas?
Coba tukar di bagian “void setup()” pada “lcd.begin(16, 2);”
menjadi “lcd.begin(20, 4);”

Sekarang kita mau nyalain kipas angin setelah temperatur


terbaca 32°C. Berarti kita butuh satu modul lagi nih. Modul
relay deh pada tau dong relay itu buat apaan... buat
nyambungin antara arduino dengan kipas angin 220VAC. Gitu
deh kira2..
Modul relay tersebut aktif malah kalau di kasih logika LOW,
freak kata anak2 jaman now. Xixixix...

Cara nyalainnya gimana Uda? Ya seperti contoh sketch blink


yang ada di arduino, yuk intip.
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever


void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED
on(HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off
bymaking the voltage LOW
delay(1000); // wait for a second
}

Maksudnya gimana Uda...???


Jadi LED_BUILTIN yang tercantum dalam UU.... eh
terpasang pada pin 13 akan nyala jika dikasih HIGH, dan mati
jika dikasih LOW. Kita asumsiin sama lah dengan modul relay
yang akan kita tambahin di rangkaian kita nantinya. Bedanya
pin kita tarok dimana dan aktifnya kalau dikasih LOW.

Tapi uda bermaksud lain. Bagaimana kalau program tersebut


kita play di MP3 player. Sepertinya MP3 player arduino yang
banyak beredar di pasaran adalah DFPlayerMini, yang
librarynya dapat kita download
di https://github.com/DFRobot/DFRobotDFPlayerMini.kita
ambil ya sample programnya.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX


DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);

Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5
seconds)"));

if (!myDFPlayer.begin(mySoftwareSerial)) { //Use
softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch
dog.
}
}
Serial.println(F("DFPlayer Mini online."));

myDFPlayer.volume(10); //Set volume value. From 0 to 30


myDFPlayer.play(1); //Play the first mp3
}

void loop()
{
static unsigned long timer = millis();

if (millis() - timer > 3000) {


timer = millis();
myDFPlayer.next(); //Play next mp3 every 3 second.
}

if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(),
myDFPlayer.read());//Print the detail message from
DFPlayer to handle different errors and states.
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}

Ini uda ambil dari example get started nya


libraryDFRobotDFplayerMini. Mau kita apakan ya example-
example yang kita ambil???

Gini deh... bagaimana kalau setelah temperatur tercapai di


atas 30°C. Kipasnya nyala. sekalian Mp3 menyebut (play)
“kipas nyala om...”, dan jika temperatur di bawah 30 kipas
mati dan MP3 juga memplay file kipas mati. Sensor di sketch
paling atas adalah sensor PIR. Jika terdeteksi gerakan, maka
modul MP3 memplay file “temperatur sekarang adalah:”,
“angka temperaturnya” dan “status kipas”. Semuanya juga di
tampilkan di LCD 20x4.

Yuk mulai...
Pertama kita ambil semua inisialisasi dari setiap example
program. Bagi yang belum tau. Inisialisasi adalah pernyataan
atau deklarasi program supaya gampang dalam
pendefinisiannya.... aaaaahhhhh ribet amat. Kita g perlu teori
cuy. Kita butuh langsung praktek aja. Yuuuuukkkkk.............

Yang pertama mengkopi bagian library dari setiap modulnya.

#include <SimpleDHT.h>
#include <LiquidCrystal.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

Ok siap. Selanjutnya deklarasi variable yang di gunakan.


Langsung Uda gabung sama librarynya ya biar jelas apa yang
udah kita gabungin

#include <SimpleDHT.h>
#include <LiquidCrystal.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SimpleDHT11 dht11;

const int PIRSensor = A0;


int nilaiPIRSensor = 0;
int pinDHT11 = 2;
int temperature = 0;
int humidity = 0;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
SoftwareSerial mySoftwareSerial(9, 10); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
sip, ready.. sekarang penggabungan bagian setup program

#include <SimpleDHT.h>
#include <LiquidCrystal.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SimpleDHT11 dht11;

const int PIRSensor = A0;


int nilaiPIRSensor = 0;
int pinDHT11 = 6; //pin 2 terpakai untuk LCD kita pindah ke
pin 6 ya
int temperature = 0;
int humidity = 0;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("hello, world!"); // ganti aja isinya sama yang kita
suka aja misalnya ”tamperatur kontrol”

mySoftwareSerial.begin(9600);
Serial.begin(115200); //pengaktifan serial yang ini kita
hapus ya, biar g bentrok ama yang atas. Kita butuhnya cuman
1 kok (di penyempurnaan di bawah)

Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5
seconds)"));

if (!myDFPlayer.begin(mySoftwareSerial)) { //Use
softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch
dog.
}
}
Serial.println(F("DFPlayer Mini online."));

myDFPlayer.volume(10); //Set volume value. From 0 to 30


myDFPlayer.play(1); //Play the first mp3
}

Penyempurnaan tulisan pada setup biar cocok

#include <SimpleDHT.h>
#include <LiquidCrystal.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SimpleDHT11 dht11;

const int PIRSensor = A0;


int nilaiPIRSensor = 0;
int pinDHT11 = 2;
int temperature = 0;
int humidity = 0;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("hello, world!"); // ganti aja isinya sama yang kita
suka aja misalnya ”tamperatur kontrol”
lcd.print(" Temperatur kontrol "); // ganti aja isinya sama
yang kita suka aja misalnya ”tamperatur
kontrol”
lcd.setCursor(0, 1); // tambahin tulisannya di baris kedua
lcd.print(" kipas angin bro ”);
lcd.setCursor(0, 2); // tambahin tulisannya di baris ketiga
lcd.print(" bikinan ”);
lcd.setCursor(0, 3); // tambahin tulisannya di baris ketiga
lcd.print(" sendiri lhoo... ”);

mySoftwareSerial.begin(9600);

Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5
seconds)"));

if (!myDFPlayer.begin(mySoftwareSerial)) { //Use
softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch
dog.
}
}
Serial.println(F("DFPlayer Mini online."));

myDFPlayer.volume(10); //Set volume value. From 0 to 30


myDFPlayer.play(1); //Play the first mp3
delay(3000); // biar tampil tulisan LCD nya agak lamaan
dikit
}

Selanjutnya kita gabungin looping programnya...


Tapi kali ini kita tidak memperbaikinya lagi, kita hanya ambil
inti dari program tersebut. Soalnya jadi kepanjangan
bahasnnya... xixixixi....

#include <SimpleDHT.h>
#include <LiquidCrystal.h>
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SimpleDHT11 dht11;

const int PIRSensor = A0;


const int pinDHT11 = 2;
const int pinKipas = 7;
int nilaiPIRSensor = 0;
int temperature = 0;
int temperatur = 0;
int humidity = 0;
int mp3Kipas = 0;
String statusKipas = “”; //penambahan variable untuk
penulisan status kipas di LCD
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
SoftwareSerial mySoftwareSerial(9, 10); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("hello, world!"); // ganti aja isinya sama yang kita
suka aja misalnya ”tamperatur kontrol”
lcd.print(" Temperatur kontrol "); // ganti aja isinya sama
yang kita suka aja misalnya ”tamperatur
kontrol”
lcd.setCursor(0, 1); // tambahin tulisannya di baris kedua
lcd.print(" kipas angin bro ”);
lcd.setCursor(0, 2); // tambahin tulisannya di baris ketiga
lcd.print(" bikinan ”);
lcd.setCursor(0, 3); // tambahin tulisannya di baris ketiga
lcd.print(" sendiri lhoo... ”);

mySoftwareSerial.begin(9600);

Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5
seconds)"));

if (!myDFPlayer.begin(mySoftwareSerial)) { //Use
softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch
dog.
}
}
Serial.println(F("DFPlayer Mini online."));

myDFPlayer.volume(20); //Set volume value. From 0 to 30


myDFPlayer.play(93); //Play the first mp3
delay(3000); // biar tampil tulisan LCD nya agak lamaan
dikit
}

void loop()
{
//pertama kita atur dulu tampilan di LCDnya
lcd.clear(); //untuk membersihkan tulisan sebelumnya yang
melekat pada LCD
lcd.setCursor(0, 0);
lcd.print(“Kipas Kontrol”);
lcd.setCursor(0, 1);
lcd.print(“temperatur: ”);
lcd.print(temperature);
lcd.setCursor(0, 2);
lcd.print(“kelembaban: ”);
lcd.print(humidity);
lcd.setCursor(0, 3);
lcd.print(“kipas: ”);
lcd.print(statusKipas);

nilaiPIRSensor = digitalRead(PIRSensor);
Serial.print(“nilaiPIRSensor:”);

byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature,
&humidity,NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed,
err=");Serial.println(err);delay(1000);
return;
}

Serial.print("Sample OK: ");


Serial.print(temperature);
Serial.print(" *C, ");
Serial.print(humidity);
Serial.println(" H");

temperatur = temperature; //kita masukkan isi variable


temperature ke variabel temperatur
if (temperatur > 30) //logika pengaturan kipas angin dengan
aktif low
{
digitalWrite (pinKipas, LOW);
statusKipas = “nyala”;
mp3Kipas = 91;
}
else
{
digitalWrite (pinKipas, HIGH);
statusKipas = “mati”;
mp3Kipas = 92;
}

if(nilaiPIRSensor == 1)
{
myDFPlayer.play(94);
myDFPlayer.play(temperatur);
myDFPlayer.play(mp3Kipas);
}
}
Sekarang rekam suara per file. “satu” simpan di file 001
dengan format mp3, selanjutnya “dua” dan simpan di file
002, dan selanjutnya sampai 50. Dengan asumsi temperatur
tertinggi hanya sampai 50. Atau sekiranya bro dan bray
betah silahkan sampai 90. File 091 isi dengan suara “kipas
nyala”, file 092 isi dengan suara “kipas mati”, dan file 093
dengan suara “mesin pengatur kipas otomatis”. Satu lagi,
rekam juga MP3 dengan suara "temperatur sekarang adalah"
dan simpan di file 094.
Masukkan ke memory dan rangkai sesuai dengan program
yang kita buat. Sayang Uda tidak punya program gambar
rangkaian di laptop. Lain kali kita update ya gambar
rangkaiannya.
Pin yang kita pakai pada arduino yaitu
Pin A0 ke PIR Sensor
Pin 2 ke LCD D7
Pin 3 ke LCD D6
Pin 4 ke LCD D5
Pin 5 ke LCD D4
Pin 6 ke DHT11. Silahkan googling dulu deh mengenai cara
pemasangannya. Tutornya nyusul ya bray
Pin 9 ke DFPlayer mini TX
Pin 10 ke DFPlayer mini RX
Pin 11 ke LCD E
Pin 12 ke LCD RS
MENGGABUNGKAN BEBERAPA SKETCH
PROGRAM ARDUINO
Menulis sketch program arduino ternyata mudah, tapi
bagaimana cara menggabungkan sketch demi sketch ya? Ini
Uda contohin ya... Yg pertama sketch program untuk
menghidupkan LED.
#define LED 13
#define tombol 6
int nilaitombol = 0;

void setup()
{
pinMode (LED,OUTPUT);
pinMode (tombol,INPUT);
}
void loop()
{
nilaitombol = digitalRead(tombol);
if (nilaitombol == HIGH)
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
}

Nah sketch di atas adalah sketch menghidupkan LED pada


pin 13. Jadi ketika tombol dipencet LED nyala, dan ketika
tombol di lepas LEDnya mati. Ini kita semua udah pasti tau
ya. Coba sekarang kita kombine dengan pembacaan tegangan
#define potensiometer A0
float tegangan = 0;
int nilaiPotensio = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
nilaiPotensio = analogRead(potensiometer);
tegangan = nilaiPotensio * (5.0 / 1023.0);
Serial.println(tegangan);
}
Diatas kita punya sketch untuk pembacaan tegangan. Kita
tambahin lagi ya untuk penampilan di LCD 16 x 2. Langsung
deh kita liat sketch yang di bawah. Tapi sebelumnya kita
pasang dulu LCDnya sesuai wiring diagram ya bray

Wiring LCDnya

* LCD RS pin to digital pin 12


* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

Selanjutnya kita kopiin dulu, biar kerjanya jadi tambah enak


dan relax, xixixix... eh maksudnya kita kopiin sketch dibawah
ke dalam arduino IDE kita. Berikut sketch untuk penampilan
LCD 16x2 nya
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop()
{
lcd.setCursor(0, 1);
lcd.print(“ “);
}

Nah dari 3 sketch di atas dapat kita gabungkan menjadi apa


ya.... ayoo di bantu pak tarno nya... :D.
Kita dapat menggabungkan nya menjadi “pembaca tegangan
dengan alarm pada nilai tertentu” tentu saja ini bermanfaat
bagi kita kalau di aplikasiin ke dalam pembacaan gas sensor,
misalnya LED akan nyala jika seseorang minum melebihi
kadar alkohol tertentu.
Atau LED nyala kalau tegangan yang terbaca “undervoltage”.
Atau dapat juga sebagai alarm jika nilai dari cahaya yang
diterima berkurang. Atau kadar air tanah mulai kering. Atau
apa ya.... silahkan di tambahin sendiri deh...

Sesuai tujuan pertama dulu deh ya... kita akan “menyalakan


LED jika tegangan dibawah nilai tertentu”. Yuk kita
gabungin...
Langkah pertamanya kita copyin dulu semua inisialisasi
program. Pernah kita bahas juga ini. Tapi buat ngingatin aja
bagi yang belum tau, inisialisasi program adalah pengenalan
variabel-variabel saat penulisan program.
#define LED 13
#define tombol 6
int nilaitombol = 0;
#define potensiometer A0
float tegangan = 0;
int nilaiPotensio = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Oke fix... lanjuuuttt...

Selanjutnya kita copyin setup programnya menjadi satu. Kita


langsung tambahin aja ya dengan inisialisasi program
#define LED 13
#define tombol 6
int nilaitombol = 0;
#define potensiometer A0
float tegangan = 0;
int nilaiPotensio = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
pinMode (LED,OUTPUT);
pinMode (tombol,INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("hello, world!");// lcd.print("tegangan:");
}

Kita ganti ya tuisan dalam “hello,


word!” menjadi“tegangan”. Hapus aja tanda ”//” sampai
ke awal tulisan “lcd.print(”hello, word!”); di awal. Selanjutnya
kita copyin looping programnya. Tapi bagian ini mesti kita
susun sesuai kebutuhan kita. Pertama kita baca tegangannya
dulu. Selanjutnya kita tampilkan pembacaannya di LCD.
Barangkali aja kita bisa improv tulisannya nanti. Habis tu kita
buat persyaratan kapan LED kita hidup dan matikan.
#define LED 13
#define tombol 6
int nilaitombol = 0;
#define potensiometer A0
float tegangan = 0;
int nilaiPotensio = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
pinMode (LED,OUTPUT);
pinMode (tombol,INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("tegangan:");
}

void loop()
{ // Bagian satu pembacaan tegangan
nilaiPotensio = analogRead(potensiometer);
tegangan = nilaiPotensio * (5.0 / 1023.0);
Serial.println(tegangan);
// Bagian dua penulisan di LCD
lcd.setCursor(0, 1);
lcd.print(“ “);
// Bagian tiga persyaratan menyalakan LED
nilaitombol = digitalRead(tombol);
if (nilaitombol == HIGH)
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
}
Nah begini nih jadinya kalo digabungin semuanya.
Selanjutnya kita perbaiki dulu beberapa sketch biar cocok
dengan tujuan yang kita inginkan dari program kita.
Dari looping di atas, bagian awal adalah pembacaan tegangan.
Bagian selanjutnya adalah penulisan tulisan kosong di baris
ke dua kolom pertama. Baris ketiga adalah persyaratan untuk
menyalakan LED.
Yuk kita perbaiki.
Bagian satu..
Pembacaan tegangan udah cocok deh kayaknya.
Bagian dua..
Kita mesti memprint nilai tegangan ke kolom ke dua. Jadi
bagian ini kita robah bray. Nih uda contohin
// Bagian dua penulisan di LCD
lcd.setCursor(0, 1);
lcd.print(tegangan);

Bagian 3..
Persyaratan menyalakan LED. LED akan nyala kalau tegangan
dibawah 2,5 volt dan mati lagi di atas tegangan
tersebut.berarti kita tidak memakai tombol untuk
menyalakan dan mematikan LED kan bray. Tinggal ilangin
semua variabel tombol aja kan
// Bagian tiga persyaratan menyalakan LED
nilaitombol = digitalRead(tombol);
if (nilaitombol == HIGH)
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}

Kita robah menjadi


// Bagian tiga persyaratan menyalakan LED

if (tegangan <= 2.5)


{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}

Yuk kita gabungin lagi, dan membuang semua yang tidak di


perlukan di sketch program kita
#define LED 13
#define potensiometer A0
float tegangan = 0;
int nilaiPotensio = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
pinMode (LED,OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("tegangan:");
}

void loop()
{ // Bagian satu pembacaan tegangan
nilaiPotensio = analogRead(potensiometer);
tegangan = nilaiPotensio * (5.0 / 1023.0);
Serial.println(tegangan);
// Bagian dua penulisan di LCD
lcd.setCursor(0, 1);
lcd.print(tegangan);
// Bagian tiga persyaratan menyalakan LED
if (tegangan <= 2.5)
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
}

Coba copyin lagi ya bray ke sketch programnya dan lihat


keajaiban yang terjadi setelah kita putar-putar
potensiometer kita

Anda mungkin juga menyukai