Dalam tutorial ini, kita akan mempelajari cara menggunakan array dalam pemrograman ESP32 Arduino. Array memungkinkan Anda menyimpan beberapa nilai dalam satu variabel, sehingga memudahkan pengelolaan data, terutama saat berhadapan dengan kumpulan item serupa. Tutorial ini akan memandu Anda dalam mendefinisikan, mengakses, dan memodifikasi array, serta memanfaatkan perulangan untuk berinteraksi dengannya secara efektif. Memahami konsep-konsep ini akan sangat meningkatkan kemampuan Anda dalam memprogram ESP32.
Kami akan secara khusus membahas penggunaan berbagai jenis perulangan, seperti for, while, dan do while, untuk mengulangi elemen array. Ini akan membantu Anda mengotomatiskan tugas dan membuat program Anda lebih efisien. Untuk melihat konsep-konsep ini dalam praktik, pastikan untuk menonton video di 2:30 untuk demonstrasi langsung.
Penjelasan Perangkat Keras
Komponen perangkat keras utama yang akan kita gunakan dalam tutorial ini adalah mikrokontroler ESP32. ESP32 adalah mikrokontroler yang kuat dan murah yang memiliki kemampuan Wi-Fi dan Bluetooth, sehingga cocok untuk berbagai aplikasi IoT. Papan ini dapat melakukan tugas serupa dengan Arduino Uno sambil menawarkan fungsionalitas tambahan, seperti konektivitas cloud.
Dalam tutorial khusus ini, kita akan menggunakan array untuk mengontrol output melalui pin digital. Setiap pin dapat diatur ke high atau low, memungkinkan kita membuat berbagai pola atau perilaku berdasarkan data yang tersimpan dalam array. Pin GPIO ESP32 akan dikonfigurasi untuk output, memungkinkan kita memanipulasi perangkat atau komponen yang terhubung.
Instruksi Pengkabelan
ESP32-07_74HC595_walking_light_wiring
Untuk menghubungkan ESP32 Anda untuk tutorial ini, mulailah dengan menghubungkan pin digital. Hubungkan pin STcp (27) ke pin ST_CP dari shift register Anda. Pin SHcp (26) harus dihubungkan ke pin SH_CP dari shift register. Terakhir, hubungkan pin DS (25) ke pin DS dari shift register. Pastikan ground ESP32 terhubung ke ground shift register untuk menyediakan referensi yang sama.
Pastikan untuk memberi daya pada ESP32 menggunakan suplai 3,3 V yang stabil. Jika Anda menggunakan komponen tambahan, pastikan komponen tersebut kompatibel dengan level tegangan ESP32. Penting untuk memeriksa ulang koneksi Anda sebelum menyalakan sistem untuk menghindari potensi kerusakan (di video pada 4:10).
Contoh Kode & Penjelasan
Dalam potongan kode yang disediakan, kita mendefinisikan array bernama datArray yang menyimpan nilai biner. Setiap nilai dalam array sesuai dengan pola berbeda yang dapat dikeluarkan melalui pin GPIO. Array didefinisikan sebagai berikut:
Array ini berisi representasi biner, di mana setiap bit sesuai dengan status pin (on atau off). Dalam fungsi loop(), kita mengulangi array untuk mengeluarkan pola-pola ini menggunakan perulangan for:
for(int num = 0; num < 10; num++) {
digitalWrite(STcp, LOW);
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH);
delay(1000);
}
Dalam perulangan ini, kita terus mengirim data dari datArray ke shift register, menciptakan efek lampu berjalan. delay(1000) memberikan jeda antara setiap pola, memungkinkan perubahan terlihat. Untuk kode lengkap, silakan lihat di bawah karena akan dimuat secara dinamis.
Demonstrasi / Apa yang Diharapkan
Setelah menyelesaikan pengkabelan dan mengunggah kode, Anda akan melihat efek lampu berjalan pada perangkat yang terhubung. Setiap bit dalam array akan menyala secara berurutan, menciptakan pola yang menarik secara visual. Berhati-hatilah dengan koneksi yang terbalik karena dapat menyebabkan perilaku yang tidak terduga (di video pada 8:15).
807-ESP32 Tutorial 7/55 - Walking Light using 74HC595 and learn array
Bahasa: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}