Setelah minggu lalu kita membuat program blink dengan ESP32 dan Arduino, sekarang kita tingkatkan level kesulitannya menjadi mnambahkan komponen push button dan LED! :)
Sekarang apa projeknya?
Perbedaan projek kali ini dengan projek lalu adalah disini kita akan membuat LED menyala hanya kalau kita tekan tombol push buttonya. Aku sendiri memberikan sedikit modivikasi sehingga jika kita menekan tombol pertama, maka 2 LED akan menyala bersamaan dan jika kita menekan tombol kedua, kedua LED akan menyala secara bergantian (seperti projek blink)
Butuh siapin apa aja?
Komponen yang dibutuhin di projek ini ada beberapa, tapi komponennya mudah dicari kok di seluruh platform e-commerce
1. Laptop
Gausah ditanya!
2. Breadboard
Aku masih pakai breadboard 830 (yang merepresentasikan jumlah lubang breadboard) dengan spesifikasi MB102 Points Solderless. Barang ini gampang kok ditemuin di e-commerce manapun dengan harga kisaran 16k di tahun 2020.
3. ESP32
ESP32 yang aku pakai itu yang Dual-Mode Development Board dengan WiFi + Bluetooth. Kalian bisa beli di online shop dengan harga kisaran 77k (di tahun 2020)
4. Kabel USB
Kabel yang dipakai adalah kabel data mobile phone yang tipe micro USB. Jangan lupa perhatiin kabelnya dipastiin yang bisa transfer data ya, jangan cuma yang buat charging doang karena nanti bakal ga bisa.
5. Resistor 330 ohm dan 10k ohm
Ada 2 resistor yang dibutuhkan di projek ini, yaitu resistor 330 ohm yang akan dipakai di LED nantinya dan juga resistor 10k ohm yang akan dipakai untuk push button. Resistor ini akan berfungsi untuk menahan aliran listrik di breadboard agar tidak terlalu tinggi tegangannya yang akan mengakibatkan konslet. Resistor ini meski bentuknya sama, namun dapat dibedakan dari warna garisnya loh! Harganya juga murah, sekitar 1k untuk 5 resistor.
6. Lampu LED
Lampu ini tersedia dalam berbagai warna, ukurannya 5mm dan harganya 200 perak di tahun 2020. Tips: beli beberapa dengan warna yang berbeda agar hasil lebih cantik.
7. Push Button
Push button ini ukurannya sebenarnya bebas saja, tapi jangan yang terlalu besar juga. Aku pakai yang ukurannya 6x6x5mm dengan 4 kaki. Harga satuannya sekitar 400 perak di tahun 2020.
8. Kabel Jumper Male-to-Male
Ada 3 jenis kabel jumper yaitu male-to-male, female-to-female, dan female-to-male. Perbedaannya adalah sisi “male” ujungnya semacam ada bagian “tajam”nya sementara yang female tidak ada. Kali ini kita membutuhkan kabel yang male-to-male. Aku menggunakan kabel yang panjangnya 10cm dengan harga 12k untuk 40pcs (tahun 2020)
Gimana sih cara bikin projeknya?
Pertama-tama akan aku jelaskan apa itu general purpose input output (GPIO) karena aku akan menyebutkan ini berulang kali pada projek kali ini. Pada pinggiran ESP32 kalian terdapat tulisan-tulisan kecil yang disebut GPIO. GPIO ini yang akan mengatur input output dari ESP32 ke breadboard. Seperti ini bentuknya:
Step-stepnya :
- Set up program arduino dengan step-step yang sudah aku jelaskan di projek pertamaku! kalian boleh lihat saja di profilku
- Masukkan kabel pertama dari GPIO 3v3 ke tempat manapun di baris “+” breadboard kalian
- Masukkan kabel dari GND ke tempat manapun di baris “-” breadboard kalian
Untuk pemasangan push button:
- Masukkan Kabel dari GPIO4 (atau dari GPIO manapun) ke manapun di bagian tengah breadboard
- Masukkan salah satu kaki push button di sebaris horizontal dengan kabel GPIO4
- Masukkan kabel lain sebaris horizontal dengan kaki lain dari push button dan ujunga kabel yang lain ke manapun di baris “+” breadboard
- masukkan resistor 10k ohm dari sebelah kabel GPIO4 ke tempat manapun di baris “-” breadboard kalian
Untuk pemasangan LED
- Masukkan Kabel dari GPIO18 (atau dari GPIO manapun) ke manapun di bagian tengah breadboard
- Masukkan kaki panjang LED di sebaris horizontal dengan kabel GPIO18
- masukkan resistor 330 ohm sebaris horizontal dengan kaki pendek LED ke tempat manapun di baris “-” breadboard kalian
Ulangi step tersebut untuk memodivikasi jumlah LED dan push button yang akan kalian gunakan. Seperti ini skema projek yang aku buat
Codenya?
const int buttonPin = 4; // nomor GPIO untuk push button di ESP32
const int buttonPin1 = 21;
const int ledPin = 5; // nomor GPIO untuk LED di ESP 32
const int ledPin1 = 18;// status awal push button
int buttonState = 0;
int buttonState1 = 0;void setup() {
Serial.begin(115200);
// inisialisasi push button sebagai input
pinMode(buttonPin, INPUT); // Button pertama
pinMode(buttonPin1, INPUT); // Button kedua
// inisialisasi LED sebagai output
pinMode(ledPin, OUTPUT); // LED pertama
pinMode(ledPin1, OUTPUT); // LED kedua
}void loop() {
// membaca status push button
buttonState = digitalRead(buttonPin);
buttonState1 = digitalRead(buttonPin1);
Serial.println(buttonState1);
Serial.println(buttonState);
if (buttonState == HIGH) {
// nyalakan LED sehingga dapat menyala bergantian seperti "blink" jika push button pertama ditekan
digitalWrite(ledPin, HIGH); // LED pertama akan nyala
delay(500); // LED dibiarkan tetap menyala
digitalWrite(ledPin, LOW); // LED pertama dimatikan
digitalWrite(ledPin1, HIGH); // LED kedua dinyalakan
delay(500); // LED kedua dibiarkan menyala
digitalWrite(ledPin1, LOW); // LED kedua dimatikan } else if (buttonState1 == HIGH) {
// menyalakan kedua LED bersamaan jika push button kedua ditekan
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, HIGH); } else {
// matikan LED
digitalWrite(ledPin, LOW);
digitalWrite(ledPin1, LOW);
}
}
Jadi deh!
Ini dia hasil yang didapat!
Maksud hasilnya itu apa sih?
Berdasarkan projek ini didapatkan bahwa aliran listrik akan mengalir sebaris vertikal pada bagian “+” dan “-” dan sebaris horizontal juga pada seluruh breadboard. Sebaris horizontal dengan push button diberikan resistor 10k ohm agar tegangan dapat dihambat sehingga tidak terlalu tinggi untuk komponen di breadboard. Sementara sebaris horizontal dengan kaki pendek lampu LED adalah resistor yang lebih kecil tegangannya yaitu 330 ohm. GPIO ESP32 digunakan untuk memrogram input output sehingga aliran listrik dapat mengalir ke komponen yang dituju. Kode akan memrogram agar lampu LED menyala saat pushbutton tertekan sementara akan mati jika push button tidak ditekan.
Segitu aja projek kali ini, selamat mencoba!