Proyek STM32 Membuat Traffic Light Simulator
Kali ini kita akan mencoba proyek sederhana dari mikrokontroler STM32 yaitu membuat traffic light simulator. Lampu merah (bangjo) di perempatan jalan, hanya saja kita simulasikan dengan lampu LED. Ohya, bagi sahabat yang pengen ngerti tentang mikrokontroler STM32 serta cara pemrogramannya silakan meluncur ke postingan “Mengenal Microcontroller STM32 dan Pemrogramannya”.
Langsung saja kita siapkan kebutuhan proyek STM32 untuk traffic light.
- Development board STM32 (blue pill, STM32F103)
- LED merah (4)
- LED kuning (4)
- LED hijau (4)
- Resistor 220 ohm (12)
- Breadboard
- Kabel konektor
- USB to TTL /USB to Serial (CH340/CP2102)
Buat rangkaian seperti pada gambar. Untuk menyederhanakannya saya hanya gambar 3 buah LED saja untuk 1 ruas jalan. Rangkaian 9 LED yang lain sama saja, terhubung dengan resistor dan pin STM32.
Silakan boleh memilih pin/port-nya sendiri yang penting pada programnya nanti menyesuaikan.
Sekarang kita lanjutkan dengan membuat program proyek STM23 untuk traffic light. Programnya kita buat dengan Arduino IDE. Jika masih awal memprogram STM32 dengan Arduino silakan cek postingan sebelumnya disini.
#define H1 PC13 #define K1 PC14 #define M1 PC15 #define H2 PA0 #define K2 PA1 #define M2 PA2 #define H3 PA3 #define K3 PA4 #define M3 PA5 #define H4 PA6 #define K4 PA7 #define M4 PB0 //========================= void setup() { pinMode(H1, OUTPUT); pinMode(K1, OUTPUT); pinMode(M1, OUTPUT); pinMode(H2, OUTPUT); pinMode(K2, OUTPUT); pinMode(M2, OUTPUT); pinMode(H3, OUTPUT); pinMode(K3, OUTPUT); pinMode(M3, OUTPUT); pinMode(H4, OUTPUT); pinMode(K4, OUTPUT); pinMode(M4, OUTPUT); } //=================== void loop() { //--------Hidupkan H1 + M2 + M3 + M4 digitalWrite(H1,1); digitalWrite(M2,1); digitalWrite(M3,1); digitalWrite(M4,1); delay(3000); //-------------K1 ON, H1 OFF digitalWrite(H1,0); digitalWrite(K1,1); delay(1000); //-------------M1 + H2 ON, K1 +M2 OFF digitalWrite(M1,1); digitalWrite(K1,0); digitalWrite(H2,1); digitalWrite(M2,0); delay(3000); //------------- K2 ON,H2 OFF digitalWrite(H2,0); digitalWrite(K2,1); delay(1000); //-------------M2 + H3 ON, K2 +M3 OFF digitalWrite(M2,1); digitalWrite(H3,1); digitalWrite(K2,0); digitalWrite(M3,0); delay(3000); //------------- K3 ON,H3 OFF digitalWrite(H3,0); digitalWrite(K3,1); delay(1000); //-------------M3 + H4 ON, K3 +M4 OFF digitalWrite(M3,1); digitalWrite(H4,1); digitalWrite(K3,0); digitalWrite(M4,0); delay(3000); //------------- K4 ON,H4 OFF digitalWrite(H4,0); digitalWrite(K4,1); delay(1000); //------------- K4 M1 OFF OFF digitalWrite(M1,0); digitalWrite(K4,0); }
Save kemudian Upload. Pastikan tidak ketemu error dan done uploading. Hasilnya LED akan nyala – padam dengan konfigurasi seperti pada lampu merah di perempatan jalan.
Ok, kita bahas sebentar ya. Pada baris awal kita membuat ‘alias’ atau nama lain, ini untuk memudahkan ketika menulis program, jadi langsung mengarah ke ‘nama’ sebenarnya. Port PC13 untuk mengontrol lampu H1 (Hijau di ruas jalan 1). Port PC14 mengontrol lampu K1 (lampu Kuning di ruas jalan 1) sehingga dibuat alias :
#define H1 PC13 #define K1 PC14
Demikian juga untuk port yang lain yang terhubung dengan lampu M1, H2, K2, M2 dan seterusnya :
#define M1 PC15 #define H2 PA0 #define K2 PA1 #define M2 PA2 #define H3 PA3 #define K3 PA4 #define M3 PA5 #define H4 PA6 #define K4 PA7 #define M4 PB0
Selanjutnya pada fungsi setup() program berisi perintah untuk seting Port sebagai port output. Kontrol nyala – padam LED oleh Port yang memberikan nilai “1” (nyala) dan “0” (padam) maka harus sebagai port OUTPUT.
void setup() { pinMode(H1, OUTPUT); pinMode(K1, OUTPUT); pinMode(M1, OUTPUT);
Selanjutnya program utama loop() berupa kontrol nyala – padam LED sesuai dengan konfigurasi lampu traffic light di perempatan. Step 1 semua kendaraan berhenti kecuali ruas jalan 1 sehingga lampu yang nyala adalah : H1 , M2, M3 dan M4 :
void loop() { //--------Hidupkan H1 + M2 + M3 + M4 digitalWrite(H1,1); digitalWrite(M2,1); digitalWrite(M3,1); digitalWrite(M4,1); delay(3000);
Perintah delay(3000) maksudnya menunda selama 3 detik (3.000 ms). Lampu hijau nyala selama 3 detik, hanya sebagai simulasi saja. Program berlanjut ke step 2 yaitu menghidupkan lampu kuning 1 :
//-------------K1 ON, H1 OFF digitalWrite(H1,0); digitalWrite(K1,1); delay(1000);
Lampu kuning biasanya lebih cepat, misalnya disini kita beri 1 detik : delay(1000). Program berlanjut ke step 3 dan seterusnya sampai step 8 yang terakhir.
Alhamdulillah selesai sudah proyek sederhana STM32 membuat traffic light simulator. Insya Allah kita lanjutkan dengan proyek yang lain memakai mikrokontroler STM32F103.
Semoga bermanfaat.
Ardutech – “Sahabat Inovasi Anda”.