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



25 komentar:

Unknown mengatakan...

Untuk biaya jasa pembuatan program arduino uno brapa bg?

rg tech mengatakan...

komennya di jasa pembuatan tugas akhir deh om, atau langsung WA ya...

ilham mengatakan...

Mau tanya dong kak, kalo kalo sketch beberapa sensor pengukuran untuk ditampilkan di display secara berhantian kayak gimana ya?

rg tech mengatakan...

sepertinya tinggal ngasih delay(); aja deh @ilham.
kira2 konsepnya seperti ini.

inisialisasi program

void setup()
{
....
}

void loop()
{
program pembacaan sensor 1;
delay(2000); // tunda program yang ke 2 selaama 2 detik

program pembacaan sensor 2;
delay(2000);
}

begitu kira2 @ilham

Unknown mengatakan...

kalau seandainya kita mau buat dua modul untuk rx tx gimana?? kan rx tx pada arduino cuma 1, terimakasih bang

rg tech mengatakan...

@riweldo Sayuna...
Tinggal masukin library software serial. Kemudian kita set, pin yang mana yg akan kita jadiin Rx dan Tx nya. Jadi deh..

Anonim mengatakan...

Mas, bisa nggak arduino membuat output hasil dari respon input?

rg tech mengatakan...

bisa om... misalnya fuzzy logic.
Misalnya saja kita membuat wipper helem motor dengan input rain drop sensor. kalau hujannya lebat, wippernya bergerak kencang. kalau hujannya gerimis, wippernya bergerak pelan. rain drop sensornya membaca analog dari 0 - 1023 di terjemahin ke kecepatan wippernya. atau banyak lagi contoh2 yang lain...

Unknown mengatakan...

Bang ini kan ada project wattmeter saya, dalam sumber AC dan DC tapi saya mau menampilkan salah satu sumber jika salah satu sumber di aliri sumber dc maupun ac

rg tech mengatakan...

Ini kita kira2 aja nih, karna g tau gambarnya. Pertama kita bikin pendeteksi dulu. jadi yang AC kita pasang di pin A0, dan DC di pin A1. pin mana yg nilainya lebih dari 0 volt... jika salah satu port tersebut mendeteksi lebih dari 0V, itu input yg aktif. sementara pendeteksi arus kita pasang di pin A3. gitu aja tu @Muhammad Deazhar

LOVELYZ TRILOGY mengatakan...

makaish min
Alat pemisah lcd

Free MOVIE Downloads mengatakan...

Mas nanya, saya ada 2 program, satunya untuk sensor dan satunya untuk gerak servo, gmn caranya agar dua2 nya jalan sekaligus, misal saat servo gerak, sensor jg berhalan

rg tech mengatakan...

Sebenarnya microcontroller seperti arduino menjalankan instruksi 1 per satu. Jika sensor mencapai nilai tertentu, servo bergerak X derajat. Begitu kan...
Seperti tutorial ini atau yg lainnya. Deklarasi kan sensornya, setup program, kemudian pada bagian looping.
If sensor bernilai x maka servo bergerak X derajat

Herwin mengatakan...

Kalau menggabungkan scetch Rfid dan GPS neo 6 m gimana ya mas, jadi jika data rfid salah maka mengirimkan data gps dari sms

Anonim mengatakan...

Om kalo menggabungkan 4 sketch sensor bagaimana ya programnya ? Misal sensornya Soil moisture, water level, sensor Arus, dan sensor ldr ?

Shikamaru Nara mengatakan...

yuhuuu...bermanfaat sekali
Pinset bengkok

Unknown mengatakan...

hallo uda.. saya minta tolong bantuan nya saya bingung untuk menggabungkan 2 sketcth saya saat ini
yaitu program untuk memberi makan ayam, saya minta bantuan uda untuk merapikan dan membenar kan program saya , disini saya menggunakan board nodeMcu + blynk untuk menggunakan sensor ultrasonik , untuk membaca sisa pakan nya, sudah bisa , dan untuk menggabungkan dgn sketch RTC dan control Servo saya tidak Tau bagaimana cara nya didalam ini ada prgram relay nya saya tidak menggunakan nya mohon bantuan untuk menghapus ny , mohon bantuan nya
#include
DS3231 rtc(SDA,SCL);

const int relay=A3;
bool on=LOW;
bool off=HIGH;
String hari;
String waktu;
String tanggal;

void setup() {
rtc.begin();
Serial.begin(9600);
pinMode(relay,OUTPUT);
digitalWrite(relay,off);
//rtc.setDOW(MONDAY);
//rtc.setTime(15,24,0);
//rtc.setDate(19,10,2020);
}

void loop() {
hari=rtc.getDOWStr();
waktu=rtc.getTimeStr();
tanggal=rtc.getDateStr();
Serial.println(waktu);
if(waktu=="15:31:00"){
digitalWrite(relay,on);
delay(2000);
digitalWrite(relay,off);
}
delay(1000);
}


dan ini program Ultrasonik nya


/*
********************************************
prateek singh
www.prateeks.in
********************************************
*/
#define TRIGGER D0
#define ECHO D2

// NodeMCU Pin D0 > TRIGGER | Pin D2 > ECHO

#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include
#include

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "e8mQTXcGcScCtKA7dtzq9_dxn20JVIAk";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "AndroidAP";
char pass[] = "00000000";
void setup() {

Serial.begin (9600);
Blynk.begin(auth, ssid, pass);
Blynk.begin(auth, ssid, pass, "blynk-cloud.com",8080);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUILTIN_LED, OUTPUT);
}

void loop() {

long duration, distance;
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);

digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);

digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
distance = (duration/2) / 29.1;

if (distance <=200) {
Blynk.virtualWrite(V0, 255);
}
else {
Blynk.virtualWrite(V0, 0);
}

if (distance <= 35) {
Blynk.virtualWrite(V1, 255);
}
else {
Blynk.virtualWrite(V1, 0);
}

if (distance <= 30) {
Blynk.virtualWrite(V2, 255);
}
else {
Blynk.virtualWrite(V2, 0);
}

if (distance <= 25) {
Blynk.virtualWrite(V3, 255);
}
else {
Blynk.virtualWrite(V3, 0);
}

if (distance <= 20) {
Blynk.virtualWrite(V4, 255);
}
else {
Blynk.virtualWrite(V4, 0);
}



Serial.print(distance);
Serial.println("Centimeter:");
Blynk.virtualWrite(V5, distance);
delay(200);
Blynk.run();

Serial.print(distance);
Serial.println("Centimeter:");
Blynk.virtualWrite(V6, distance);
delay(100);
Blynk.run();
}

alimm mengatakan...

saya mau nanya bg cara menggabungkan program sensor arus menggunakan relay dan lcd menggunakan keypad

alimm mengatakan...

saya mau nanya bg cara menggabungkan program sensor arus menggunakan relay dan lcd menggunakan keypad

alimm mengatakan...

saya mau nanya bg cara menggabungkan program sensor arus menggunakan relay dan lcd menggunakan keypad

46u5 mengatakan...

Makadih banyak ya kak atas pemberian infonya sy tertarik dan mau sy praktek kan

mamah chyntia mengatakan...

Gan.saya lagi belajar buat progam buat nyalain servo dan jam dalam 1 arduino.apkah mngkin bisa...?
Terima kasih

rg tech mengatakan...

@ mamah chyntia
Bisa banget pastinya kak.

iniaku mengatakan...

Salam kenal Bang, bagaimana codingnya klo dari output sensor berat-1 ditambahkan/dijumlahkan output sensor berat-2 sehingga menjadi jumlah total (sensor berat-1 + sensor berat-2)
Sebelum dan sesudahnya banyak terima kasih Bang,
sya tunggu kabar baiknya yaaa.......
Wassalamua'laikum wr wb.

Anonim mengatakan...

KAKKKK MAKASIH AJWSUWHWHWH AKHIRNYA STELAH NGOTAK-NGATIK TRUS LIAT INI DIA DONE JG WKWJIWWJWJSN T___T