> For the complete documentation index, see [llms.txt](https://weenslab.gitbook.io/pages/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weenslab.gitbook.io/pages/proyek-arduino/kumpulan-proyek/button-multifungsi.md).

# Button Multifungsi

## Penjelasan Proyek

Pada proyek ini, kita akan membuat tombol multifungsi dengan satu button.

## Daftar Komponen

Komponen yang diperlukan yaitu sebagai berikut:

* Board ESP32
* Breadboard
* Push button

## Rangkaian

Rangkaian yang dibuat yaitu sebagai berikut. Button dirangkai dengan konfigurasi rangkaian active-low dengan internal pull-up resistor pada pin GPIO 23.

<figure><img src="/files/VDvfxhbiDBZLoG4yp3e8" alt="" width="506"><figcaption></figcaption></figure>

## Library

Untuk membuat proyek ini diperlukan library berikut ini:

{% embed url="<https://github.com/mathertel/OneButton>" %}

## Kode Program

Kode program yang dibuat yaitu sebagai berikut. Program akan melakukan instansiasi kelas `OneButton` menjadi objek `button`. Setelah itu, pada bagian fungsi `setup()`, `button` akan dihubungkan dengan beberapa fungsi:

* Fungsi `buttonClick()` akan dipanggil ketika button ditekan satu kali
* Fungsi `buttonDoubleClick()` akan dipanggil ketika button ditekan dua kali.
* Fungsi `buttonMultiClick()` akan dipanggil ketika button ditekan lebih dari dua kali.
* Fungi `buttonLongPressStop()` akan dipanggil ketika button selesai ditekan dengan durasi yang lebih lama.

{% code title="button\_events\_serial.ino" lineNumbers="true" %}

```arduino
#include "OneButton.h"

// Button on pin 23, active-low
OneButton button(23, true);

void setup()
{
  Serial.begin(9600);
  button.attachClick(buttonClick);
  button.attachDoubleClick(buttonDoubleClick);
  button.attachMultiClick(buttonMultiClick);
  button.attachLongPressStop(buttonLongPress);
}

void loop()
{
  button.tick();
  delay(10);
}

void buttonClick()
{
  Serial.println("Button click.");
}

void buttonDoubleClick()
{
  Serial.println("Button double click.");
}

void buttonMultiClick()
{
  Serial.println("Button multi click.");
}

void buttonLongPress()
{
  Serial.println("Button long press.");
}
```

{% endcode %}

{% embed url="<https://github.com/weenslab/proyek_arduino/blob/main/button/button_events_serial/button_events_serial.ino>" %}

## Hasil

Hasil dari proyek ini yaitu pada gambar berikut ini.

<figure><img src="/files/Jnp04xZpq5jWmd6ZQfOr" alt=""><figcaption></figcaption></figure>
