Spisu treści:

Inteligentna interaktywna sygnalizacja świetlna: 5 kroków (ze zdjęciami)
Inteligentna interaktywna sygnalizacja świetlna: 5 kroków (ze zdjęciami)

Wideo: Inteligentna interaktywna sygnalizacja świetlna: 5 kroków (ze zdjęciami)

Wideo: Inteligentna interaktywna sygnalizacja świetlna: 5 kroków (ze zdjęciami)
Wideo: Sygnalizacja świetlna- arduino 2024, Listopad
Anonim
Inteligentna interaktywna sygnalizacja świetlna
Inteligentna interaktywna sygnalizacja świetlna

Chcesz zbudować najlepszą i najbardziej interaktywną sygnalizację świetlną na świecie? Dobry! W tym samouczku wyjaśnimy, w jaki sposób możesz zbudować go samodzielnie za pomocą Arduino.

Wymagane komponenty:- Arduino (..duh)- LM317 Mosfet- 2x 60cm Taśmy LED Analog RGB (12V)- Tuba PCV (1m x 125mm)- Kable (czerwony i czarny)- Metalowe płytki na zaślepki- Akryl na światło -ikony (sprawdź flaticon.com dla ikon.svg) - Czarno-biała farba w sprayu. - Taśma elektryczna - Wszystkie wymagane elementy do lutowania - Wyświetlacz z wymaganą osłoną (nieużywany w samouczku)

Krok 1: Krok 1: Zrób nakładki świetlne

Krok 1: Zrób lekkie czapki
Krok 1: Zrób lekkie czapki

Projekt zależy od Ciebie. Zrobiliśmy czapkę 15x15cm do trzymania świateł. Przycięliśmy metalowe płytki do odpowiedniego rozmiaru i użyliśmy metalowej giętarki (nie, nie firmy Avatar), aby wygiąć czapki we właściwe kształty. Backplates wykonano z innego komponentu.

Krok 2: Krok 2: Przygotowanie słupa PCV

Krok 2: Przygotowanie słupa PCV
Krok 2: Przygotowanie słupa PCV

Wytnij 2 otwory w słupie z PVC, aby pasowały do opraw oświetleniowych. Następnie użyj czarnej puszki z farbą, aby pomalować całość na czarno. Jeśli chcesz, możesz dodać białe paski na spodzie słupa (powszechne w Holandii).

Krok 3: Krok 3: Montaż taśm LED RGB i piaskowanie płyt akrylowych

Krok 3: Montaż taśm LED RGB i piaskowanie płyt akrylowych
Krok 3: Montaż taśm LED RGB i piaskowanie płyt akrylowych
Krok 3: Montaż taśm LED RGB i piaskowanie płyt akrylowych
Krok 3: Montaż taśm LED RGB i piaskowanie płyt akrylowych

Następnie musisz zamontować paski LED RGB wewnątrz osłony świetlnej. Dopasuj je ciasno wokół czapki i umieść je jak najbliżej przodu.

Następnie musisz wypiaskować wybrany symbol na akrylowej płycie. Weź trochę taśmy i przykryj całą akrylową płytkę. Następnie wytnij żądany kształt/figurę. Następnie możesz piaskować talerz, aby uzyskać efekt matowego szkła.

Krok 4: Krok 4: Podłącz paski LED RGB do Arduino

Krok 4: Podłącz paski LED RGB do Arduino
Krok 4: Podłącz paski LED RGB do Arduino

Teraz nadchodzi trudna część: podłączenie taśm LED RGB do Arduino. Kiedy podłączasz piny, upewnij się, że umieściłeś 12v na 12v swojej listwy. Pomiędzy każdym kolorem, tak czerwonym lub zielonym, musisz umieścić mosfet. Podłącz dane paska led do środkowego pinu mosfet, a lewy pin do Arduino. Prawy pin musi wrócić do masy Arduino.

Krok 5: Krok 5: Napisz kod Arduino

Krok 5: Napisz kod Arduino
Krok 5: Napisz kod Arduino

Ten kod Arduino jest kontrolowany przez bluetooth, ponieważ nie używaliśmy wewnętrznego wyświetlacza. Tak więc kod jest kontrolowany przez komunikaty bluetooth w funkcji loop().

#zdefiniuj r 6#zdefiniuj g 11 #zawieraj

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

#define angryDługość 4

#definiuj długość spadania 3 #define happyLength 4 #define onPhoneLength 13 #definiuj długość rozmowy 5 #definiuj długość chodzenia 4 #definiuj długość chodzenia 4 #definiuj długość machania 6

przycisk boolWciśnięty;

int currentMillis; int poprzedni Millis;

int animacja1Opóźnienie;

int animacja2Opóźnienie; int animacja3Opóźnienie; int animacja4Opóźnienie;

bool animacja1Done = false;

bool animation2Done = false; bool animacja3Done = false; bool animacja4Done = false; bool animacja5Done = false;

bool światło bloku = false;

bool lightRed = prawda;

int currentOpóźnienie animacji;

pusta konfiguracja () {

// umieść tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: pinMode(r, OUTPUT); pinMode(g, WYJŚCIE);

Serial.początek(9600);

mójSerial.początek(38400); Serial.setTimeout(25); buttonPressed = false; bieżącyMillis = 0; poprzedni Millis = 0;

animacja1Opóźnienie = chodzenieDługość * 1000;

animacja2Opóźnienie = długość falowania * 1000; Animation3Delay = happyLength * 1000; animacja4Opóźnienie = długość_wyjścia * 1000;

//bieżąceOpóźnienieAnimacji = OpóźnienieAnimacji1 * 1000;

jasnoczerwony = prawda; }

pusta pętla () {

//opóźnienie(20);

// umieść tutaj swój główny kod, aby działał wielokrotnie: unsigned long currentMillis = millis(); if(buttonPressed == true) { if(animation1Done == false) { if(currentMillis - previousMillis > animation1Delay) { Serial.println("0"); poprzedni Millis = obecny Millis; animacja1Gotowe = prawda; } } else if(animacja2Done == false i animacja1Done == true) { if(currentMillis - previousMillis > animation2Delay) { Serial.println("1"); poprzedni Millis = obecny Millis; animacja2Gotowe = prawda; } } else if(animation3Done == false i animation2Done == true) { if(currentMillis - previousMillis > animation3Delay) { Serial.println("2"); //Serial.println("dźwięk:zielony"); poprzedni Millis = obecny Millis; animacja3Gotowe = prawda; jasnoczerwony = fałszywy; } } else if(animation4Done == false i animacja3Done == true) { if(currentMillis - previousMillis > Animation4Delay) { previousMillis = currentMillis; animacja4Gotowe = prawda; Serial.println("FLSH"); } } }

jeśli (Serial.available()) {

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

animacja1Gotowe = fałsz;

animacja2Gotowe = fałsz; animacja3Gotowe = fałsz; animacja4Gotowe = fałsz; animacja5Gotowe = fałsz;

animacja1Opóźnienie = chodzenieDługość * 1000;

animacja2Opóźnienie = długość falowania * 1000; Animation3Delay = happyLength * 1000; animacja4Opóźnienie = długość_wyjścia * 1000;

//bieżąceOpóźnienieAnimacji = OpóźnienieAnimacji1 * 1000;

jasnoczerwony = prawda; Serial.println("3"); buttonNaciśnięty = prawda; poprzedni Millis = obecny Millis; }

if(str == "CZERWONY") {

światłobloku = fałsz; jasnoczerwony = prawda; }

if(str == "ZIELONY") {

światłobloku = fałsz; jasnoczerwony = fałszywy; }

if(str == "ŚWIATŁO:ZIELONY:WYŁ") {

światłobloku = prawda; analogZapis(g, 255); } if(str == "LIGHT:GREEN:ON") { blockLight = true; analogZapis(g, 0); } //Serial.println(str); }

if(światło bloku == fałsz) {

if(jasnoczerwony == prawda) {

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

Zalecana: