Isi kandungan:

Lampu Lalu Lintas Interaktif Pintar: 5 Langkah (dengan Gambar)
Lampu Lalu Lintas Interaktif Pintar: 5 Langkah (dengan Gambar)

Video: Lampu Lalu Lintas Interaktif Pintar: 5 Langkah (dengan Gambar)

Video: Lampu Lalu Lintas Interaktif Pintar: 5 Langkah (dengan Gambar)
Video: Belajar Untuk Bayi Dan Balita Bersama Kak Nisa - Kata Pertama, Mengenal Rasa, Lagu Interaktif Balita 2024, November
Anonim
Lampu isyarat interaktif pintar
Lampu isyarat interaktif pintar

Bersedia untuk membina lampu isyarat terbaik dan paling interaktif di dunia? Baik! Dalam tutorial ini, kami akan menerangkan bagaimana anda boleh membuatnya sendiri menggunakan Arduino.

Komponen yang diperlukan: - Arduino (..duh) - LM317 Mosfet- 2x 60cm Analog RGB LED Strips (12V) - Tiub PVC (1m x 125mm) - Kabel (merah dan hitam) - Plat logam untuk penutup cahaya- Acryl untuk cahaya -icons (periksa flaticon.com untuk ikon.svg) - Cat hitam dan putih Spraycan.- Pita elektrik- Semua komponen pematerian yang diperlukan- Paparan dengan perisai yang diperlukan (tidak digunakan dalam tutorial)

Langkah 1: Langkah 1: Buat penutup cahaya

Langkah 1: Buat penutup cahaya
Langkah 1: Buat penutup cahaya

Reka bentuknya terpulang kepada anda. Kami telah membuat topi 15x15cm untuk menahan lampu. Kami telah memotong kepingan logam dengan ukuran yang betul dan menggunakan penyekat logam (tidak, bukan dari Avatar) untuk membengkokkan penutup dengan bentuk yang betul. Plat belakang dibuat dari komponen yang berbeza.

Langkah 2: Langkah 2: Menyiapkan Tiang PVC

Langkah 2: Menyiapkan Tiang PVC
Langkah 2: Menyiapkan Tiang PVC

Potong 2 lubang di tiang PVC agar sesuai dengan penutup cahaya. Kemudian gunakan spraycan cat hitam untuk melukis keseluruhan benda hitam. Sekiranya anda mahu, anda boleh menambah jalur putih di bahagian bawah tiang (biasa di Belanda).

Langkah 3: Langkah 3: Memasang Jalur LED RGB dan Melempar Pasir Akrilik dengan Pasir

Langkah 3: Memasang Jalur LED RGB dan Melemparkan Pasir Acrylic Plat
Langkah 3: Memasang Jalur LED RGB dan Melemparkan Pasir Acrylic Plat
Langkah 3: Memasang Jalur LED RGB dan Melemparkan Pasir Acrylic Plat
Langkah 3: Memasang Jalur LED RGB dan Melemparkan Pasir Acrylic Plat

Seterusnya anda perlu memasang jalur LED RGB di dalam penutup cahaya. Pasangkan erat pada penutup, dan letakkan sedekat mungkin ke depan.

Seterusnya anda perlu meletakkan simbol yang dipilih pada plat akrilik. Dapatkan pita dan tutup keseluruhan piring akrilik. Kemudian potong bentuk / bentuk yang anda mahukan. Selepas ini, anda boleh mencampurkan pinggan pasir untuk mendapatkan kesan seperti kaca beku.

Langkah 4: Langkah 4: Sambungkan Jalur LED RGB ke Arduino

Langkah 4: Sambungkan Jalur LED RGB ke Arduino
Langkah 4: Sambungkan Jalur LED RGB ke Arduino

Sekarang datang bahagian yang sukar: menghubungkan Jalur LED RGB ke Arduino. Semasa menyambung pin pastikan anda meletakkan 12v pada 12v jalur anda. Di antara setiap warna, jadi merah atau hijau, anda perlu meletakkan mosfet. Sambungkan data jalur yang dipimpin ke pin tengah mosfet, dan pin kiri ke Arduino anda. Pin kanan mesti kembali ke tanah Arduino.

Langkah 5: Langkah 5: Tulis Kod Arduino

Langkah 5: Tulis Kod Arduino
Langkah 5: Tulis Kod Arduino

Kod Arduino ini dikendalikan oleh bluetooth, kerana kami tidak menggunakan paparan dalaman. Jadi kod dikendalikan melalui mesej bluetooth dalam fungsi loop ().

#tentukan r 6 # tentukan g 11 #masuk

SoftwareSerial mySerial (10, 11); // RX, TX

#tentukan marahPanjang 4

#define jatuhLamanya 3 #define happyLength 4 #define onPhoneLength 13 #define talkLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavingLength 6

butang bool Ditekan;

int semasaMillis; int sebelumnyaMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = salah;

bool animation2Done = salah; bool animation3Done = salah; bool animation4Done = salah; bool animation5Done = salah;

bool blockLight = palsu;

bool lightRed = benar;

int currentAnimationDelay;

batal persediaan () {

// letakkan kod persediaan anda di sini, untuk dijalankan sekali: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); butang Ditekan = salah; currentMillis = 0; sebelumnyaMillis = 0;

animasi1Delay = berjalan Panjang * 1000;

animasi2Delay = melambaikanLamanya * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = benar; }

gelung kosong () {

// kelewatan (20);

// letakkan kod utama anda di sini, untuk dijalankan berulang kali: long currentMillis = millis yang tidak ditandatangani =); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - sebelumnyaMillis> animation1Delay) {Serial.println ("0"); sebelumnyaMillis = currentMillis; animation1Done = benar; }} lain jika (animation2Done == false dan animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); sebelumnyaMillis = currentMillis; animation2Done = benar; }} lain jika (animation3Done == false dan animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); sebelumnyaMillis = currentMillis; animation3Done = benar; lightRed = palsu; }} lain jika (animation4Done == false dan animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {sebelumnyaMillis = currentMillis; animation4Done = benar; Serial.println ("FLSH"); }}}

jika (Bersiri. tersedia ()) {

String str = Serial.readString (); jika (str == "CMD: BUTTON_PRESSED") {

animation1Done = salah;

animation2Done = salah; animation3Done = salah; animation4Done = salah; animation5Done = salah;

animasi1Delay = berjalan Panjang * 1000;

animasi2Delay = melambaikanLamanya * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = benar; Serial.println ("3"); butang Ditekan = benar; sebelumnyaMillis = currentMillis; }

jika (str == "MERAH") {

blockLight = palsu; lightRed = benar; }

jika (str == "HIJAU") {

blockLight = palsu; lightRed = palsu; }

jika (str == "CAHAYA: HIJAU: MATI") {

blockLight = benar; analogWrite (g, 255); } if (str == "CAHAYA: HIJAU: HIDUP") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

jika (blockLight == false) {

jika (lightRed == benar) {

analogWrite (r, 0); analogWrite (g, 255); } jika (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Disyorkan: