Sabtu, 07 Oktober 2017

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

baca juga: Menggabungkan Beberapa Sketch Program Arduino 2
baca juga: Menggabungkan Beberapa Sketch Program Arduino 3

Demikian dulu ya brai tutorial penggabungan sketchnya. Lain kali kita tambahin lagi ya contoh-contoh programnya. Atau kali aja teman-teman punya pertanyaan seputar pembuatan sketch program dengan menggabungkan beberapa modul atau peralatan. Silahkan tulis komen dibawah, Uda akan dengan senang hati menjawabnya. Selamat mencoba...

Intip juga ide tugas akhir dari kami



Senin, 14 Agustus 2017

GAS SENSOR

Gas sensor MQ series adalah sensor pencium aroma dari gas tertentu. lain seri lain fungsi. 


Kita mulai aja melihat daftar berikut

MQ-2   untuk mendeteksi asap
MQ-3   untuk mendeteksi alkohol
MQ-4   untuk mendeteksi methan dan CNG gas
MQ-5   untuk mendeteksi LPG gas
MQ-6   untuk mendeteksi LPG dan butane gas
MQ-7   untuk mendeteksi karbon monoksida
MQ-9   untuk mendeteksi karbon monoxida dan gas mudah terbakar 
MQ-131 untuk mendereksi kualitas ozon
MQ-135 untuk mendeteksi kualitas udara
MQ-136 untuk mendeteksi hidrogen
mq-137 untuk mendeteksi asam amoniak
MQ-138 untuk mendeteksi bensin, toluena, alkohol, aseton, propana,          hydrogen, formalin.
MQ-214 untuk mendeteksi gas alam dan gas metana
MQ-216 untuk mendeteksi gas dari batubara dan gas alam
MQ306A untuk mendeteksi LPG dan gas butana
MQ307A untuk mendeteksi karbon monoksida
MQ309A untuk mendeteksi karbon dioksida dan gas mudah terbakar 
MG811 untuk mendeteksi karbon dioksida
AQ-104 untuk mendeteksi kualitas udara
AQ-2   untuk mendeteksi asap dan gas mudah terbakar
AQ-3   untuk mendeteksi alkohol dan bensin
AQ-7   untuk mendeteksi karbon monoksida

Kenapa ada yang sama ya???
Uda ga tau pasti juga alasannya. Akhirnya kembali ke kitanya, butuh yang mana 

cara pasangnya sama saja. Gas sensor biasanya mempunyai pin 

    VCC  ke 5V
    GND ke 0 atau ground
    AO   Analog Out
    DO   Digital Out

Pin analog out (AO) masuk ke input analog arduino. Nilainya berupa tegangan dari 0 sampai 5V tergantung tingkat konsentrasi gas yang kita deteksi


Sketch program untuk Gas sensor seperti dibawah.
const int gasSensor = A0;
int nilaiGasSensor     = 0;
void setup()
{
    Serial.begin(9600);
}
void loop()
{
    nilaiGasSensor = analogRead(gasSensor);
    Serial.print(“nilai gas sensor:”);
    Serial.println(nilaiGasSensor);
}


Atau seperti gambar d bawah.

Nah begitu tuh standartnya. Kita bisa cek di serial monitor.
Menekan: Tools àSerial Monitor, atau dengan menekan tombol
Ctrl + Shift + M

Lha kita kan maunya membaca di LCD untuk  Tugas Akhirnya...
Gampang bos..., begini nih sketch nya.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int gasSensor  = A0;
int nilaiGasSensor     = 0;

void setup()
{
  lcd.begin(16, 2);
  lcd.print("nilai gas sensor");
}

void loop()
{
  nilaiGasSensor = analogRead(gasSensor)
  lcd.setCursor(0, 1);
  lcd.println(nilaiGasSensor);
}

Nah sketch di atas berlaku untuk semua gas sensor modul.
Sayangnya dibeberapa proyek kita harus mengkalibrasi gas sensor ini untuk memperoleh nilai pengukuran yang presisi.
Naaahhh bagaimana lagi tuh bray...
Jadi begini bro. Misalnya kita membuat alat pendeteksi Alkohol. Tapi setelah di test malah hasilnya jauh lebih dari nilai aslinya atau malah kurang dari nilai aslinya. Lihat sketch di bawah ini...
Pada tutorial sebelum ini kita pernah bahas tentang cara kalibrasi nilai analog, kita tinggal masukin aja tuh sketchnya

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int gasSensor     = A0;
int nilaiGasSensor        = 0;
int kalibrasiGasSensor = 0;
void setup()
{
  lcd.begin(16, 2);
  lcd.print("nilai gas sensor");
}

void loop()
{
    nilaiGasSensor = analogRead(gasSensor);
    //kalibrasi dengan mengganti nilai 0 dan 1023 misalnya 100 dan 500
    kalibrasiGasSensor = map(nilaiGasSensor, 0, 1023,  0, 255);
    kalibrasiGasSensor = constrain (kalibrasiGasSensor, 0, 100);   
    lcd.setCursor(0, 1);
    lcd.print(kalibrasiGasSensor);
    lcd.setCursor(5, 1);
    lcd.print(“%”);
}

 Nah sketch di atas merupakan sketch untuk pembacaan nilai alkohol dalam satuan persen. 

upload dulu deh yang ini. Lain kali kita sambung lagi ya... Mau buru-buru nih...

kalau ada pertanyaan tentang gas sensor silahkan isi kolom komentar di bawah ya














Jumat, 28 April 2017

ARDUINO PH SENSOR DAN LCD 16X2

Sensor PH dan modul PH
Sensor PH ini lain lagi ceritanya. PH sensor ini membaca nilai PH air dan merobahnya kedalam tegangan analog, tapi dikuatin dulu lewat IC OP-Amp.
Kayaknya yang Uda temuin kebanyakan modul sensor PH seperti ini deh.ujungnya ini namanya connector BNC yang nantinya di pasangin probe sensornya

Sketch programnya seperti ini nih
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
const int phSensorPin  = A0;
float Po                        = 0;  

void setup()
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("volt:”);
  lcd.setCursor(0, 1);
  lcd.print("Ph  :”);
}

void loop()
{
   int nilaiPengukuranPh = analogRead(phSensorPin);
   Serial.print("Nilai ADC Ph: ");
   Serial.println(nilaiPengukuranPh);
   double TeganganPh = 5 / 1024.0 * nilaiPengukuranPh;
   Serial.print("TeganganPh: ");
   Serial.println(TeganganPh, 3);
   lcd.setCursor(8, 0);
   lcd.print(TeganganPh);
   //Po = 7.00 + ((teganganPh7 - TeganganPh) / PhStep);
   Po = 7.00 + ((2.6 - TeganganPh) / 0.17);
   Serial.print("Nilai PH cairan: ");
   Serial.println(Po, 3);
   lcd.setCursor(8, 1);
   lcd.print(Po);
   delay(1000);
}

Atau teman2 bisa download file nya di google drive, dan tentu saja tanpa iklan :D

Yang susah adalah cara setingnya. Nah gimana ya cara settingnya??? Ada 2 cara setup PH nya. Yaitu setting hardware dan setting software. Cuma Uda hanya bahas cara setting melalui software ya. Maksudnya biar ga repot aja puter-puter potensionya.
Ini dia langkahnya.
1.    Hubungkan inti konektor BNCnya dengan pinggirannya (kebanyakan org bilang ground).

  2.   Lihat berapa tegangan yang kita dapat. Misalnya aja 2.6 volt, tegangan ini yang jadi patokan buat jadi nilai pada PH 7.
  3.   Kemudian kita test dengan cairan PH 4. Ukur lagi tegangannya. Misal kita dapat tegangan 3.01
  4.   Tinggal masukin ke rumusnya seperti berikut






PH step = (tegangan PH4 – tegangan PH7) / (PH7 - PH4)
             = (3.01 – 2.6)/(7-4)
             = 0.51/3
             = 0.17


Akhirnya setelah kita dapatin ph per step Nya tinggal masukkin ke sketch program di atas deh

Dan tampil lah di LCD 16 x 2 nya.
Simpel kan... nah kalau teman-teman pengan tanya mengenai sensor PH ini atau apa saja silahkan. Tentunya Uda akan dengan senang hati menjawabnya. 

Revisi...
Sepertinya masih ngambang ya penjelasan di atas. Ini Sketch program tambahan untuk pengukuran tegangan PH nya. 
Untuk mendapatkan nilai tegangan PH7. Caranya masih seperti di atas, shoot tengah connector probe dengan pinggirannya. Upload sketch program di bawah, kemudian di catat berapa tegangan terbaca untuk PH7 nya.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
const int phSensorPin  = A0;
float Po                        = 0;  

void setup()
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Pembacaan Volt ");
  lcd.setCursor(0, 1);
  lcd.print("      Ph       ");
  delay(1000);
}

void loop()
{
   int nilaiPengukuranPh = analogRead(phSensorPin);
   Serial.print("nilai ADC Ph:");
   Serial.println(nilaiPengukuranPh);
   lcd.setCursor(6, 0);
   lcd.print(nilaiPengukuranPh);
   double TeganganPh = 5 / 1024.0 * nilaiPengukuranPh;
   Serial.print("Tegangan Ph:");
   Serial.println(TeganganPh, 3);
   lcd.setCursor(4, 1);
   lcd.print(TeganganPh);
   lcd.print(" volt");
   delay(1000);
}

File pembacaan tegangan PH nya bisa di download disini ya

Setelah itu test menggunakan buffernya. Misalnya kita test dengan buffer PH 4. Catat berapa perolehan tegangan PH4 tersebut. Masukkan ke rumus PH step di atas. Setelah kita dapatkan tegangan per stepnya, masukkan ke Sketch program yang pertama, kemudian upload... 
Ta..dha....... jadilah alat pengukur PH yang akurat. Selamat mencoba ya



gambar skema rangkaian PH sensor