top of page

Pemprograman Tombol Push On ke ESP32: Belajar Mikrokontroler (Lesson 1 - Bagian 3)

  • Writer: Zen System
    Zen System
  • Jun 22
  • 4 min read

Pada bagian 1 dan 2, kita sudah belajar bagaimana sebuah mikrokontroler dapat mengendalikan lampu led, hingga kita dapat belajar bagaimana mensimulasikan lampu lalu lintas. Pada bagian ini kita akan belajar mengenai tombol push on. Jika pada tutorial sebelumnya, lampu led yang sudah diprogram akan dikerjakan otomatis oleh mikrokontroler, maka button push on ini adalah bentuk intervensi manual oleh manusia. Jadi mikrokontroler ini dapat bekerja secara otomatis dan juga bekerja secara manual.



Tutorial 5: ESP32 Membaca Input Tombol Push On


Untuk tutorial awal, kita akan belajar bagaimana memprogram tombol Push On agar dapat diketahui oleh mikrokontroler ESP32 dan setelah itu kita akan buat buat perintah ke ESP32 untuk memberikan informasi bahwa tombol Push On telah ditekan.


Material yang diperlukan:

  1. Chip ESP32 & kabel data

  2. Tombol Push On

  3. Resistor 10K ohm

  4. Kabel serabut AWG26


Skema koneksi

Lakukan koneksi material diatas seperti gambar dibawah ini:

Coding

Masukkan kode perintah seperti dibawah ini:

int tombol_pin = 13;

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

void loop() {
  // put your main code here, to run repeatedly:
  int v = digitalRead(tombol_pin);

  if (v == HIGH) {
    Serial.println("Tombol ditekan.");
  }

  delay(200);
}

Upload kode tersebut ke ESP32.


Hasil

Setelah kode program di upload. Pilih software serial di pojok kanan atas (terlihat pada gambar dibawah ini dengan tanda angka 1). Jika kalian tekan tombol push on, maka akan muncul informasi "Tombol ditekan." (angka 2).


Penjelasan Kode Program


int tombol_pin = 13;

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

Kode program diatas memiliki arti mendeklarasikan variabel bernama tombol_pin dengan tipe data integer (int) dengan nilai 13 yang merupakan salah satu nomor pin dari ESP32. Pada function setup(), ada perintah Serial.begin(9600), yang berarti buat jembatan komunikasi menggunakan channel 9600. Untuk function pinMode(tombol_pin, INPUT), berarti buat pin nomor 13 menjadi mode input.


void loop() {
  // put your main code here, to run repeatedly:
  int v = digitalRead(tombol_pin);

  if (v == HIGH) {
    Serial.println("Tombol ditekan.");
  }

  delay(200);
}

Didalam function loop(), ada perintah membuat variabel bernama v, untuk menampung nilai dari tombol. Jika tombol ditekan maka nilai yang ditampung adalah HIGH, dan jika tidak ditekan maka nilainya adalah LOW.


Setelah ditampung, maka ada proses membandingkan (compare). Bentuk standar (syntax) dari proses membandingkan adalah:

if (kondisi) {
  kode perintah jika kondisi = benar
}

Jadi pada program yang sudah kalian masukkan tadi memiliki arti, jika "v == HIGH", maka kirimkan informasi berupa teks "Tombol ditekan." ke kanal 9600.



Tutorial 6: Memprogram ESP32 untuk Menyalakan LED menggunakan Tombol Push On


Di tutorial ini kita akan gabungkan tutorial led yang sudah kita pelajari sebelumnya dengan tombol Push On. Skenario sederhananya adalah jika tombol Push On ditekan, maka led akan menyala. Sebaliknya, jika tombol Push On ditekan lagi, makan led yang sebelumnya menyala akan mati.


Material yang diperlukan:

  1. Chip ESP32 & kabel data

  2. Led Merah

  3. Tombol Push On


  4. Resistor 10K ohm 1pcs dan resistor 220 ohm 1 pcs

  5. Kabel serabut AWG26


Skema koneksi

Lakukan koneksi material diatas seperti gambar dibawah ini:

Coding

Masukkan kode perintah untuk skenario diatas:

int tombol_pin = 13;
int led_merah = 4;
int led_status = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(tombol_pin, INPUT);
  pinMode(led_merah, OUTPUT);
  digitalWrite(led_merah, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  int v = digitalRead(tombol_pin);

  if (v == HIGH) {
    if (led_status == 0) {
      Serial.println("LED dinyalakan");
      digitalWrite(led_merah, HIGH);
      led_status = 1;
    } else if (led_status == 1) {
      Serial.println("LED dimatikan");
      digitalWrite(led_merah, LOW);
      led_status = 0;
    }
  }

  delay(200);
}

Upload kode tersebut ke ESP32.


Hasil


Penjelasan Kode Program

int tombol_pin = 13;
int led_merah = 4;
int led_status = 0;

Kode program diatas adalah deklarasi nama variabel dengan nilainya. Disini kita akan membuat 3 variabel untuk pin tombol, pin led dan status led. Status led untuk memberikan informasi kepada mikrokontroler, jika status awal led adalah mati atau 0 dan jika status led menyala adalah 1.


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(tombol_pin, INPUT);
  pinMode(led_merah, OUTPUT);
  digitalWrite(led_merah, LOW);
}

Pada function setup(), yang dimana akan dieksekusi setiap ESP32 dinyalakan, ada berapa perintah, yaitu:

  • Serial.begin(9600), berarti membuat jalur komunikasi antar hardware di channel 9600.

  • pinMode(tombol_pin, INPUT), berarti menetapkan pin 13 menjadi mode input.

  • pinMode(led_merah, OUTPUT), berarti menetapkan pin 4 menjadi mode output.

  • digitalWrite(led_merah, LOW), berarti membuat status awal (default) led merah adalah mati (0).


void loop() {
  // put your main code here, to run repeatedly:
  int v = digitalRead(tombol_pin);

  if (v == HIGH) {
    if (led_status == 0) {
      Serial.println("LED dinyalakan");
      digitalWrite(led_merah, HIGH);
      led_status = 1;
    } else if (led_status == 1) {
      Serial.println("LED dimatikan");
      digitalWrite(led_merah, LOW);
      led_status = 0;
    }
  }

  delay(200);
}

Pada function loop(), dimana mikrokontroler akan terus mengeksekusi perintah berulang-ulang secara berurutan (sequential), terdapat beberapa perintah yang memiliki penjelasan sebagai berikut:

  • Tampung nilai tombol ke variabel v, dimana jika tombol tidak ditekan maka nilainya adalah LOW, sedangkan jika ditekan nilainya adalah HIGH.

  • Jika variabel v memiliki nilai HIGH, maka perintah didalam blok function if (v == HIGH), akan dieksekusi. Dengan kondisi:

    • jika status led adalah mati (0), if (led_status == 0), maka nyalakan led dengan perintah digitalWrite(), dan ubah status led menjadi hidup atau 1.

    • jika status led adalah hidup (1), if(led_status == 1), maka matikan led dengan perintah digitalWrite(), dan ubah status led menjadi mati atau 0.

Comments


zen audio logo

Est. Since 2016

bottom of page