Subscribe
iotles.com
No Result
View All Result
  • Login
  • BERANDA
  • BELAJAR IOT
  • ENERGY METER
  • BERANDA
  • BELAJAR IOT
  • ENERGY METER
No Result
View All Result
iotles.com
No Result
View All Result
Home Belajar Iot

Mempercepat Respon Button dengan Hold Button Pada Arduino

jimmisitepu by jimmisitepu
September 28, 2021
in Belajar Iot
0
button arduino
0
SHARES
1.1k
VIEWS
Share on FacebookShare on Twitter

Pada Tutorial Sebelum nya, membaca button dengan digitalRead, kita telah mengetahui bahwa, pada rangkaian pullup button, ketika tombol di tekan maka Arduino PIN akan membaca logika 0 dan ketika di lepas (realese) maka akan berlogika High. Konsep sederhana ini memiliki kekurangan, karena ada proses delay. Ketika ada delay maka program akan blocking, tidak bisa mengerjakan apa apa ( Kecuali interupt, akan kita bahas insya Allah di materi selanjut nya)

Sebagai pengulangan berikut program membaca tombol dengan delay

byte btn_1 = 34;
bool data_btn1=0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(btn_1, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  data_btn1 = digitalRead(btn_1);
  Serial.print("btn 1: ");
  Serial.println(data_btn1);
  delay(1000);//blocking program
}

Ketika program sampai di delay(1000), maka Arduino menjadi MAGER karena tidak mengerjakan apa-apa, menunggu proses delay selesai, kemudian mengerjakan proses yang lain. Nah seperti apa cara mempercepat proses pembacaan button???, let’s cee togeder ^_^

Related articles

Membuat Game Sederhana ESP32 Arduino dengan Random LED dan Button

Membuat Counter UP dan Counter Down pada Arduino Dengan Button

Kondisi if pada Arduino

byte btn_1 = 34;
bool data_btn1=0;
#define ditekan 0

Pertama-tema kita akan membuat sebuah deklarasi global menggantikan 0 sebagai ditekan. 0 = ditekan

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(btn_1, INPUT);
}

Selanjut nya variable btn_1 ( GPIO34 ) kita fungsikan sebagai INPUT.

pada ESP32 GPIO34, GPIO36, GPIO35, GPIO39 hanya bisa di gunakan sebagai input mode, tidak bisa di gunakan sebagai output ( menyalakan LED)

Fungsi GPIO Tertentu

Selanjut nya membuat proses if pada fungsi loop

void loop() {
  // put your main code here, to run repeatedly:
  data_btn1 = digitalRead(btn_1);//baca GPIO34
  if(data_btn1 == ditekan){
    Serial.println("ditekan");
  }else{
    Serial.println("tombol di lepas");
  }
}

Pada Proses di atas, ketika button di tekan maka variable data_btn1 akan berkondisi 0, jika dilepas maka kembali data_btn berkondisi 1.

Ketika kondisi 0 maka akan menjalankan Serial.println(“ditekan”); ketika di lepas maka akan menjalankan Serial.println(“tombol di lepas”);

disini proses pembacaan button sangat cepat, namun ada kelemahan karena sistem cara kerja button itu sendiri. Ketika button ditekkan maka akan mengerjakan Serial.println(“ditekan”) secara BERTUBI-TUBI DAN BERULANG-ULANG, dan Ketika dilepas makan akan Menjalankan Serial.println(“tombol di lepas”) secara membabi buta dan Berkali-kali. Nah bagaimana kah agar ketika di tekan Serial.println(“ditekan”); hanya dijalankan sekali-kali?

Hold Button Arduino

byte btn_1 = 34;
bool data_btn1=0;
#define ditekan 0
bool hold_btn1 = 0; // INI DITAMBAH

Kita Tambah sebuah variable dengan nama hold_btn1 dengan kondisi awal 0

void loop() {
  // put your main code here, to run repeatedly:
  data_btn1 = digitalRead(btn_1);//baca GPIO34
  if (data_btn1 == ditekan) {
    if (hold_btn1 == 0) {
      Serial.println("ditekan");
      hold_btn1 = 1;
    }
  } else {
    hold_btn1 = 0;
  }
}

Kondisi Awal hold_btn1 adalah 0, ketika di tekan maka akan menjadikan hold_btn1 menjadi nilai1. ketika tombol di lepas makan hold_btn1 kembali berlogika 0. Apakah perbedaan program di atas. Coba perhatikan di serial monitor. Pada program hold button ini, Serial.println(“ditekan”) hanya akan di jalankan sekali ketika tombol di tekan, sementara pada program tanpa hold button maka Serial.println(“ditekan”); akan di jalankan terus-menerus selama button di tekan.

program keseluruhan nya adalah sebagai berikut

byte btn_1 = 34;
bool data_btn1 = 0;
#define ditekan 0
bool hold_btn1 = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(btn_1, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  data_btn1 = digitalRead(btn_1);//baca GPIO34
  if (data_btn1 == ditekan) {
    if (hold_btn1 == 0) {
      Serial.println("ditekan");
      hold_btn1 = 1;
    }
  } else {
    hold_btn1 = 0;
  }
}

Semua tutorial ini menggunakan Trainner IoT kita, jika ada pertanyaan bisa whatsapp dengan tekan tombol di bawah ini,

whatsapp saya
Previous Post

Membaca Push Button Arduino dengan digitalRead

Next Post

Membuat Counter UP dan Counter Down pada Arduino Dengan Button

Related Posts

game LED arduino
Belajar Iot

Membuat Game Sederhana ESP32 Arduino dengan Random LED dan Button

October 2, 2021
counter arduino
Belajar Iot

Membuat Counter UP dan Counter Down pada Arduino Dengan Button

October 1, 2021
input button esp32 arduino
Belajar Iot

Membaca Push Button Arduino dengan digitalRead

September 26, 2021
fungsi for arduno
Belajar Iot

Mengenal Fungsi for Pada Arduino

September 16, 2021
led trainner iot
Belajar Iot

Program Sederhana Menyalakan Led dengan Arduino Menggunakan Trainner IoT

September 15, 2021
variable arduino
Belajar Iot

Variable pada Pemrograman Arduino

September 13, 2021

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Monitoring Beberapa Jenis Power Meter Tanpa Koding dengan Modul LTE Modbus ke Blynk Cloud
  • Posting Data Ke blynk Iot dengan Modul GSM SIM7600 ESP32
  • Modul 4G Arduino SIM7600 dengan ESP32
  • Membuat Game Sederhana ESP32 Arduino dengan Random LED dan Button
  • Membuat Counter UP dan Counter Down pada Arduino Dengan Button

Recent Comments

No comments to show.
  • BERANDA
  • BELAJAR IOT
  • ENERGY METER
Call us: +62 851-5941-1861

© 2021 iotles.com - Learning and making iot device iotles.

No Result
View All Result
  • BERANDA
  • BELAJAR IOT
  • ENERGY METER

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist