Daftar Isi:
Video: Lampu Lalu Lintas Interaktif Cerdas: 5 Langkah (dengan Gambar)
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Siap membangun lampu lalu lintas terbaik dan paling interaktif di dunia? Bagus! Dalam tutorial ini, kami akan menjelaskan bagaimana Anda bisa membuatnya sendiri menggunakan Arduino.
Komponen yang dibutuhkan:- Arduino (..duh)- LM317 Mosfet- Strip LED RGB Analog 2x 60cm (12V)- Tabung PVC (1m x 125mm)- Kabel (merah dan hitam)- Pelat logam untuk tutup lampu- Akril untuk lampu -ikon (periksa flaticon.com untuk ikon.svg)- Semprotkan cat hitam putih.- Pita listrik- Semua komponen penyolderan yang diperlukan- Tampilan dengan pelindung yang diperlukan (tidak digunakan dalam tutorial)
Langkah 1: Langkah 1: Buat Light-caps
Desainnya benar-benar terserah Anda. Kami telah membuat tutup 15x15cm untuk menahan lampu. Kami telah memotong pelat logam dengan ukuran yang benar dan menggunakan penyok logam (bukan, bukan dari Avatar) untuk menekuk tutup dalam bentuk yang tepat. Pelat belakang dibuat dari komponen yang berbeda.
Langkah 2: Langkah 2: Mempersiapkan Tiang PVC
Potong 2 lubang di tiang PVC agar sesuai dengan tutup lampu. Kemudian gunakan kaleng semprotan cat hitam untuk mengecat semuanya menjadi hitam. Jika mau, Anda bisa menambahkan garis-garis putih di bagian bawah tiang (umum di Belanda).
Langkah 3: Langkah 3: Merakit Strip LED RGB dan Sandblasting Pelat Akrilik
Selanjutnya Anda harus merakit strip LED RGB di dalam tutup lampu. Pasangkan erat-erat di sekitar tutupnya, dan letakkan sedekat mungkin ke depan.
Selanjutnya Anda harus mengampelas simbol yang dipilih pada pelat akrilik. Dapatkan beberapa selotip dan tutupi seluruh pelat akrilik. Kemudian gunting bentuk/gambar yang Anda inginkan. Setelah ini, Anda dapat mengampelas pelat untuk mendapatkan efek seperti kaca buram.
Langkah 4: Langkah 4: Hubungkan Strip LED RGB ke Arduino
Sekarang sampai pada bagian yang sulit: menghubungkan Strip LED RGB ke Arduino. Saat Anda menghubungkan pin, pastikan Anda meletakkan 12v pada 12v strip Anda. Di antara setiap warna, jadi merah atau hijau, Anda harus meletakkan MOSFET. Hubungkan data strip led ke pin tengah MOSFET, dan pin kiri ke Arduino Anda. Pin kanan harus kembali ke ground Arduino.
Langkah 5: Langkah 5: Tulis Kode Arduino
Kode Arduino ini dikendalikan oleh bluetooth, karena kami tidak menggunakan tampilan internal. Jadi kode dikontrol melalui pesan bluetooth di fungsi loop().
#define r 6#define g 11 #include
SoftwareSerial mySerial(10, 11); // RX, TX
#define angryLength 4
#define fallLength 3 #define happyLength 4 #define onPhoneLength 13 #define speakingLength 5 #define walkingLength 4 #define walkingOutLength 4 #define lambingLength 6
tombol boolDitekan;
int Milis saat ini; int sebelumnyaMillis;
int animasi1Tunda;
int animation2Delay; int animasi3Tunda; int animation4Delay;
bool animasi1Selesai = salah;
bool animation2Done = salah; bool animation3Done = salah; bool animation4Done = salah; bool animasi5Selesai = salah;
bool blockLight = salah;
bool lightRed = benar;
int saatAnimationDelay;
batalkan pengaturan() {
// letakkan kode setup Anda di sini, untuk dijalankan sekali: pinMode(r, OUTPUT); pinMode(g, OUTPUT);
Serial.begin(9600);
mySerial.begin(38400); Serial.setTimeout(25); tombolDitekan = salah; saat iniMillis = 0; sebelumnyaMillis = 0;
animation1Delay = panjang berjalan * 1000;
animation2Delay = panjang gelombang * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;
//currentAnimationDelay = animation1Delay * 1000;
lightRed = benar; }
lingkaran kosong() {
//tunda(20);
// letakkan kode utama Anda di sini, untuk dijalankan berulang kali: unsigned long currentMillis = millis(); if(buttonPressed == true) { if(animation1Done == false) { if(currentMillis - sebelumnyaMillis > animation1Delay) { Serial.println("0"); sebelumnyaMillis = saat iniMillis; animasi1Selesai = benar; } } else if(animation2Done == false dan animation1Done == true) { if(currentMillis - PreviousMillis > animation2Delay) { Serial.println("1"); sebelumnyaMillis = saat iniMillis; animasi2Selesai = benar; } } else if(animation3Done == false dan animation2Done == true) { if(currentMillis - PreviousMillis > animation3Delay) { Serial.println("2"); //Serial.println("suara:hijau"); sebelumnyaMillis = saat iniMillis; animasi3Selesai = benar; lightRed = salah; } } else if(animation4Done == false dan animation3Done == true) { if(currentMillis - PreviousMillis > animation4Delay) { PreviousMillis = currentMillis; animasi4Selesai = benar; Serial.println("FLSH"); } } }
if (Serial.available()) {
String str = Serial.readString(); if(str == "CMD:BUTTON_PRESSED") {
animasi1Selesai = salah;
animasi2Selesai = salah; animasi3Selesai = salah; animasi4Selesai = salah; animasi5Selesai = salah;
animation1Delay = panjang berjalan * 1000;
animation2Delay = panjang gelombang * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;
//currentAnimationDelay = animation1Delay * 1000;
lightRed = benar; Serial.println("3"); tombolDitekan = benar; sebelumnyaMillis = saat iniMillis; }
if(str == "MERAH") {
blokLight = salah; lightRed = benar; }
if(str == "HIJAU") {
blokLight = salah; lightRed = salah; }
if(str == "CAHAYA:HIJAU:MATI") {
blokLight = benar; analogWrite(g, 255); } if(str == "LIGHT:GREEN:ON") { blockLight = true; analogWrite(g, 0); } //Serial.println(str); }
if(blockLight == salah) {
if(Merah terang == benar) {
analogWrite(r, 0); analogWrite(g, 255); } if(Merah terang == false) { analogWrite(r, 255); analogWrite(g, 0); } } }