Dinamički pokazivači smjera - izrađujemo svjetla za vožnju iz KIT kompleta. Majstorska klasa izrade dinamičkih "trčajućih" žmigavaca Arduino dijagram povezivanja za pokazivač smjera
Razmotrimo stvaranje pokazivača smjera kao na Audiju, koristeći primjer fara iz automobila Renault Clio. Napravimo žmigavce i DRL u jednom uređaju.
Šta će vam za ovo trebati: LED traka koja se sastoji od ws2812b LED dioda Arduino nano kontroler(može se koristiti u bilo kojem drugom obliku) Automobilska industrija punjač Za mobilni telefoni sa USB izlazom. Budući da je Arduino kontroleru potreban napon od 5V, ovaj punjač ćemo koristiti kao pretvarač napona sa 12V na 5V. Stabilizator napona za 5V KR142EN5V (KREN5V) ili bilo koji drugi uvozni analog. 3 10 kOhm otpornika kao pull-up otpor.
Dijagram povezivanja
Arduino kontroler mora biti povezan na mrežu automobila preko 12V -> 5V pretvarača tako da napon u krug dolazi od uključivanja paljenja. Potrebno je spojiti pozitivnu žicu sa postojećeg pokazivača smjera na stabilizator napona KREN5V. Ovaj članak govori o povezivanju i firmveru samo jednog žmigavca da biste napravili drugi pokazivač smjera, morate povezati drugi na isti način LED traka na bilo koji besplatni digitalni izlaz Arduina (na primjer 7), a također dodajte kod za njega u firmware prema našem primjeru.
Firmver kontrolera
Za rad sa pikselnim LED diodama trebat će vam biblioteka
#include
// povezivanje biblioteke
Adafruit_NeoPixel traka = Adafruit_NeoPixel(22, 8, NEO_GRB + NEO_KHZ800);
int t,t1,t2,t3,t4,p2,p1 = 0;//vremenska varijabla
void setup() (
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);strip.begin();
strip.show();}
void loop() (
if (digitalRead(2) == LOW) ( //Ako je pokazivač smjera isključen
for(int i = 0; i< 23; i++) {
strip.setPixelColor(i, strip.Color(255,255,255)); // R=255, G=255, B=255 - bijela boja LED diode, kada se upali palimo svjetla za vožnju
}
strip.show();
}if ((digitalRead(2) == HIGH) & (t == 1)) ( // provjeriti da li je pokazivač smjera uključen
for(int i = 0; i< 23; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0)); // gasiti sve diode
}
strip.show();
for(int k = 0; k< 3; k++){ // цикл до трех - сигнал «перестроения» , при кратковременном включении мигает 3 раза,for(int i = 0; i< 23; i++){
if (digitalRead(2) == HIGH) (k = 0;) // ako dok žmigavac trepće primimo još jedan pozitivan signal, resetirajte brojač tako da žmigavac zatreperi još najmanje 3 puta
strip.setPixelColor(i, strip.Color(255, 69, 0)); // R=255, G=69, B=0 - LED bojakašnjenje((t4)/22);
strip.show();}
if (digitalRead(2) == HIGH) (t4=t4+20;) // ako su sve diode upaljene žuto, ali signal sa releja još uvijek dolazi, onda povećavamo vrijeme gorenja
if (digitalRead(2) == LOW) (t4=t4-20;) // ako su sve diode upaljene žuto, ali signal sa releja još uvijek dolazi, onda povećavamo vrijeme gorenjafor(int i = 0; i< 23; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - LED boja
kašnjenje((t3)/22);
strip.show();}
if ((digitalRead(2) == LOW)) (t3=t3+20;)
if ((digitalRead(2) == HIGH)) (t3=t3-20;)
}if ((digitalRead(2) == HIGH) & (t == 0)) ( // provjeriti da li je pokazivač smjera uključen
t1 = millis(); //zapamti u koje vreme si uključio
for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(255, 69, 0)); // kada prvi put upalite žmigavac, upalite sve diode žute boje
}
strip.show();
dok (digitalRead(2) == VISOKO) ()
t2 = millis(); // zapamtiti u koje vrijeme se pokazivač smjera isključio
t4=t2-t1;for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0)); // ugasi diode kada nestane signal sa releja okretanja
}
strip.show();
dok (digitalRead(2) == LOW) (
if ((milis()-t2)>2000)(prekid;)
}
ako ((milis()-t2)<2000) {
t3 = millis()-t2; // vrijeme za koje se pokazivači smjera gase
t = 1; // zastavica, znamo da je vrijednost vremena spremljena.
}
}if (digitalRead(4) == HIGH) ( //posebni signali
for(int j = 0; j< 16; j++) {
for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0)); // R=255, G=0, B=0 - LED boja
}
strip.show();
kašnjenje(20);
for(int i = 0; i< 22; i++){
}
strip.show();
kašnjenje(20);
}for(int j = 0; j< 16; j++) {
for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 255)); // R=0, G=0, B=255 - LED boja
}
strip.show();
kašnjenje(20);
for(int i = 0; i< 22; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - LED boja
}
strip.show();
kašnjenje(20);
}
}if (digitalRead(3) == HIGH) ( //strobe
for(int j = 0; j< 24; j++) {
for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(255, 255, 255)); // R=255, G=255, B=255 - LED boja
}
strip.show();kašnjenje(15);
for(int i = 0; i< 22; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - LED boja
}
strip.show();
kašnjenje(15);
}
kašnjenje (500);
Uradite isto za kod za drugi pokazivač smjera.
Video kako radi naš far
Rekao sam "Gop" prošle godine - vrijeme je za skok :)
Ili bolje rečeno, uradite obećani pregled uključenih žmigavaca.
Naručio sam 1 metar crne trake WS2812B (144 LED diode) u silikonskoj cijevi, pri naručivanju sam odabrao “Crna 1m 144led IP67” (možda će se nekome svidjeti bijela boja podloge, postoji takav izbor).
Reč opreza
Dobio sam traku zalemljenu od dva komada od pola metra. Loša strana ovoga je ranjiva tačka lemljenja (kontakti se mogu slomiti tokom vremena) i povećan razmak između LED dioda.
Prije kupovine provjerite s prodavcem o ovom pitanju.
Kontaktne žice su zalemljene na traku sa obe strane kako bi se spojilo nekoliko komada u seriju, jer Ovo mi nije trebalo, pa sam odlemio žice sa jedne strane, zapečatio sve neutralnim zaptivačem i zamotao još malo crne elektro trake.
Pričvršćuje se na staklo pomoću dvostrane prozirne ljepljive trake, na primjer.
Detalji instalacije
Odmastio sam površine, prvo zalijepio ljepljivu traku na cijev (tako ću je nazvati, iako je poprečni presjek pravokutni), odrezao izbočeni višak šire trake, ugurao rubove cijevi u pukotine između plafona i gornjih dijelova ukrasnih panela stražnjih stubova (kontaktne žice sa konektorom bile su skrivene iza jednog panela), centrirao ga i počeo ga pritiskati na staklo, polako izvlačeći zaštitni sloj trake.
Nažalost, nema videa - nije bilo slobodnih ruku za snimanje, a svačiji auto je drugačiji.
Ako nešto nije jasno, pitajte u komentarima.
Test po ljetnim vrućinama bio je uspješan - ništa se nije otkačilo niti plutalo.
Jedini nedostatak je što je ugao stakla blag, LED diode sijaju više prema gore. Po sunčanom danu to je teško vidjeti, ali pošto su ovo dupli signali,
Sada pređimo na elektronsko punjenje.
Koristio sam ga, ali sam ga otkrio ne tako davno
Za otprilike isti trošak dobijamo više dobrota
Skica će raditi bez ikakvih posebnih modifikacija na Wemosu prilikom programiranja u Arduino IDE, a ako implementirate mali web server, onda kada ste povezani na njega preko Wi-Fi-ja, možete promijeniti vrijednosti varijabli kao što je vrijeme kašnjenja između treptaja, količina usporavanja tokom kočenja u nuždi itd.
Ovdje u budućnosti, ako je neko zainteresiran za implementaciju projekta na ESP8266, mogu postaviti primjer za promjenu postavki preko web sučelja, pohranjivanje u EEPROM i čitanje.
Web server se može pokrenuti, na primjer, uključivanjem pokazivača pravca i pritiskanjem papučice kočnice kada je kontakt uključen (u proceduri podešavanja ispitajte status odgovarajućih ulaza).
Da implementiram režim treptanja tokom jakog kočenja, kupio sam
Skica prati nivo usporavanja pri pritisku na papučicu kočnice, ako pređe 0,5G (naglo usporavanje, ali bez škripe kočnica), tada se uključuje trepćući režim na nekoliko sekundi kako bi privukao dodatnu pažnju.
Upravljački signali na Arduino ulaze iz "plus" zaustavljanja, pokazivača smjera i rikverca se napajaju preko galvanske izolacije - optospojnice sa otpornicima koji ograničavaju struju, koji u konačnici formiraju LOW nivo na Arduino ulazima (konstantno povučeni na pozitivno kroz 10 kOhm otpornike ).
Napajanje - 5 volti preko DC-DC step-down pretvarača.
Sve se presavija u sendvič i pakuje u odgovarajuću kutiju, na kojoj je strelicom označen smjer ugradnje za ispravnu orijentaciju gravitacionog senzora
Dijagram i fotografija
Nominalna vrijednost pull-up (do pozitivnih) otpornika je standardna - 10 kOhm, ograničavajući struju otpornika optokaplera - 1 kOhm. Uklonio sam optokaplere sa starih ploča, dvije su bile PC123, dvije su bile PC817.
Na prvoj fotografiji možete vidjeti dva dodatna terminala, napravio sam ih za pokazivače smjera. Pošto u mom autu, kada je ručica volana uključena, postoji kratki spoj na masu, spojio sam žice na blok poluge i Arduino ulaze. Ako ručica stupa volana prebaci na plus ili uzmete signal sa “+” žmigavaca lijevog/desnog smjera, spojite ih putem galvanske izolacije.
Pa, sada sama skica (Arduino IDE)
#include
Pokušao sam da je komentarišem što je više moguće, ali ako bude pitanja, pokušaću da dodam komentare (zato ga stavljam u tekst recenzije, a ne kao priloženi fajl). Ovo se, inače, odnosi i na druge točke pregleda - također ću ga dopuniti ako u komentarima bude značajnih pitanja.
I na kraju, demonstracija rada (za video sam koristio skicu sa demo modom).
Upd. Napravio sam skicu sa demo modom posebno da sve stane u jedan kratki video.
Svjetlo kočnice treperi samo pri naglom kočenju (o tome je gore bilo riječi), pri glatkom kočenju i kada stojite u saobraćajnoj gužvi jednostavno se pali, bez iritacije vozača iza.
Osvetljenost noću nije preterana, jer Zbog nagiba stakla, svjetla su usmjerena više prema gore nego unazad.
Standardna svjetla rade kao i obično, ova traka ih duplira.
Dizajner svetla za vožnju sa Aliexpressa je štampana ploča i set radio komponenti. Sve što treba da uradite je da zalemite komponente na ploču.
Ali iz njega možete dobiti zanimljivije efekte svetla za vožnju. Na primjer, za pokazivače smjera automobila ili stop svjetla, ili samo za vijence za odmor.
Ovaj krug može raditi u rasponu napona napajanja od 3 -15 volti. Generator impulsa se sastavlja na NE555 čipu, zatim se impulsi šalju na decimalni brojač s dekoderom - čipom CD4017 (ili K561IE8), na čije su izlaze LED spojene preko otpornika koji ograničavaju struju.
Brzina uključivanja svjetla za vožnju regulirana je otpornikom za trimiranje. Dodajte kolo s okidačima i izlaznim tranzistorskim prekidačima. Ne treba ništa programirati itd. Kao rezultat, možete dobiti zanimljivije svjetlosne efekte svjetla za vožnju. Moramo napraviti još jednu štampanu ploču sa K561TM2 okidačima i KT815 prekidačima za napajanje. Impuls sa svakog izlaza K561IE8 se dovodi na ulaz okidača po principu „zasuna“, odnosno na izlazu okidača signal ostaje konstantan sve dok impuls za resetovanje ne stigne sa pina 11 mikrokola CD4017(K561IE8). 9 kanala se uključuje po ciklusu.
Svi oni koji su više-manje moderan auto vidjeli ne drugi put, pa makar se radilo o vožnji, odavno su za sebe zabilježili jednu od korisnih opcija... Ljudi to zovu lijeni žmigavac ili uljudan pokazivač smjera. Cijela njegova suština svodi se na to da prilikom skretanja desno ili lijevo vozač samo jednom dodirne ručicu pokazivača smjera, a da je ne popravi. Odnosno, jednostavno čini da krugovi pokazivača smjera rade, ali ne uključuje ovaj prekidač. Kao rezultat toga, nakon otpuštanja poluge, pokazivači smjera se aktiviraju još 3-4 puta, a u ovom trenutku vozač već može obavljati svoj "posao", odnosno potpuno se posvetiti putu. Opcija je vrlo korisna kada morate promijeniti traku. Uostalom, kada je ručica pokazivača smjera u potpunosti uključena, neće doći do automatskog isključivanja, zbog neznatnog ugla rotacije upravljača, što znači da ćete morati gurati naprijed-nazad sa samim pokazivačem ili ga stalno podržavati sa vaša ruka na ivici uključivanja kako biste imitirali rad žmigavca. A ako postoji takva opcija, onda sam samo malo dodirnuo polugu i zaboravio. Općenito, mislimo da je suština posla u potpunosti otkrivena, ali sada je vrijedno spomenuti mogućnost implementacije takve opcije na vašem računalu.
Za koje električne krugove je prikladan ljubazan žmigavac na Arduinu?
Prije nego što krenete u sve ozbiljne nevolje oko proizvodnje pristojnog pokazivača smjera, morate razumjeti za koje će sheme električnog povezivanja biti prikladan bez mijenjanja električnog kruga u automobilu.
Ovdje su nam predstavljene dvije glavne opcije koje se u principu razlikuju. Prvi je kada se žmigavci uključe kada su povezani kao opterećenje. Odnosno, do uključivanja dolazi zbog uključivanja kruga pokazivača smjera, u kojem se nalazi sama ručica pokazivača smjera, to je ono što zatvara krug, nakon čega dolazi do operacije. U ovom slučaju neće biti moguće koristiti našu opciju, jer kada poluga otvori kolo sa lampama, odmah deaktiviramo mogućnost svjetlosne indikacije, čak i ako signal stigne na samu polugu, jednostavno neće ići dalje.
Druga opcija je naša, kada postoje upravljački signali i izlazni signali snage. U ovom slučaju, umjesto standardnog releja, možete instalirati upravo onaj krug na koji želimo da vam skrenemo pažnju.
Modul za napajanje releja koji se može kupiti na Internetu za kontrolu opterećenja
Skica i sklop lijenog (ljubaznog) pokazivača smjera na Arduinu
Dakle, može se raspravljati o korištenju Arduina kao glavne jedinice za lijene pokazivače smjera, jer ni ovo nije sasvim idealno rješenje, što ima svoje nedostatke. Na primjer, bit će potrebno imati stalnu snagu nakon uključivanja paljenja kako bi se osigurale performanse, bit će potrebno spojiti strujne krugove; U isto vrijeme, sam uprtač dodatnih radio komponenti ovdje je u osnovi beskorisan, jer u ovom slučaju možete jednostavno programirati mikrokontroler i koristiti samo njega. Ali ovaj minus je i plus, jer svako ko ga ima može programirati Arduino, a za mikrokontrolere će vam trebati i programator.
Pisanje programa će biti jedan od najtežih zadataka. Ovdje će početnik morati provesti više od jednog sata svog slobodnog vremena i proučavati rad algoritama, ali na sreću postoji internet i tu smo mi. Dakle, evo skice.
Int switchPinR=8; int switchPinL=7; int ledPinR=11; int ledPinL=12; boolean ledOn = lažno; int i=0; int z=0; void setup() ( // stavite svoj kod za podešavanje, da ga jednom pokrenete: pinMode(switchPinR, INPUT); pinMode(switchPinL, INPUT); pinMode(ledPinR, OUTPUT); pinMode(ledPinL, OUTPUT); Serial.begin(9600 ) void loop() ( // stavite svoj glavni kod, da ga se ponavlja: //2 oznaka: if (digitalRead(switchPinR) == HIGH && digitalRead(switchPinL) == HIGH) (digitalWrite(ledPinR, HIGH)) digitalWrite(ledPinL, HIGH);<7) { ledOn = !ledOn; digitalWrite(ledPinR, ledOn); digitalWrite(ledPinL, ledOn); delay(400); i++; z++; if (digitalRead(switchPinL) == LOW && digitalRead(switchPinR) == LOW && z>=7) ( break; ) ) ) else ( digitalWrite(ledPinR, LOW); digitalWrite(ledPinL, LOW); z=0; ) //cikliranje signala za hitne slučajeve if (digitalRead(switchPinR) == HIGH && digitalRead(switchPinL) == HIGH) (idi na oznaku;) //Desni žmigavac. if (digitalRead(switchPinR) == HIGH) ( digitalWrite(ledPinR, HIGH); i=0; while (i<7) { ledOn = !ledOn; digitalWrite(ledPinR, ledOn); delay(400); i++; z++; if (digitalRead(switchPinR) == LOW && z>=7) ( break; ) ) ) else ( digitalWrite(ledPinR, LOW); z=0; ) //Levi pokazivač smjera. if (digitalRead(switchPinL) == HIGH) ( digitalWrite(ledPinL, HIGH); i=0; while (i<7) { ledOn = !ledOn; digitalWrite(ledPinL, ledOn); delay(400); i++; z++; if (digitalRead(switchPinL) == LOW && z>=7) ( break; ) ) ) else ( digitalWrite(ledPinL, LOW); z=0; ) ) )
Da ukratko rezimiramo, skica ima 2 ulaza i 2 izlaza. U ovom slučaju, kada se na ulazu (8,7) unese pozitivan, odnosno signal visokog nivoa, na odgovarajućem izlazu (11,12) dobijamo određeni broj treptaja (z ili i). Ukratko, ovako nešto. Odnosno, ako želite nešto promijeniti u skici u pogledu broja treptaja i ulaznih izlaza, onda obratite pažnju na ove varijable. Ako trebate promijeniti dužinu treptaja, onda se vaša pažnja treba usmjeriti na funkciju odgode.
Još jedna karakteristika programa je pomalo neobičan izlaz alarma. Prvo se obrađuju lijevi i desni indikatori, a zatim se pale svjetla upozorenja. To je zbog činjenice da se može uključiti samo ako je ulaz istovremeno visok na ulazima 8 i 7. A ovaj uslov će biti ispunjen tek u drugom ciklusu, jer je pritisak na dva dugmeta istovremeno fizički nemoguće. Brzina mikrokontrolera omogućit će vam da brže očitate visoki izlaz s tipke i odlučite da je to ipak uvjet za aktiviranje žmigavca, a ne alarm. Iako ne biste trebali brinuti o tome, osim ako se zahvalite na putu će biti problematično.
Značajke povezivanja lijenog (ljubaznog) pokazivača smjera u automobilu pomoću Arduina
Ne biste trebali koristiti pin 13 kao izlaz, jer svaki put kada uključite i isključite napajanje, indikatori koji će biti povezani na ovaj izlaz mogu zatreperiti.
Kada prelazite s upravljačkih signala na signale napajanja, koristite odgovarajuće blokove kupljene na Internetu ili koje ste sami sastavili. Već smo govorili o takvim blokovima - modulima.
Kada primate signal 1 od napona od 12 volti, postavite otpornik 10 Kom ispred ulaza.
To su sve upute za pravljenje lijenog žmigavca za automobil pomoću Arduino mikrokontrolera, a sada otprilike ista stvar u videu...