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

Dom / Zamrzava

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 . Možete ga instalirati na sljedeći način: Skica -> Poveži biblioteku -> Upravljanje bibliotekama. Zatim unesite naziv biblioteke Adafruit_NeoPixel.h u meni za pretragu i kliknite na dugme za instaliranje. Nakon toga umetnite skicu u program i zamijenite broj LED dioda u kodu (koristimo 22 diode):

#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 boja

kaš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 gorenja

for(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 #include //nekoliko opštih komentara // Isključio sam jednu od krajnjih LED dioda, jer... odrazili su se na ukrasne ploče regala //vidljivo na primjeru ovog ciklusa za (int i=1; i<143; i++) //если отключать не нужно, заменяем на for (int i=0; i<144; i++) //задний ход и аварийка у меня не используются, т.к. в первом случае яркость никакая, во втором надо подключать входы к лампам поворотников //поворотники и стоп-сигнал одновременно не включаются, чтобы это реализовать, нужно переписывать соответствующий код скетча (делить ленту на три секции, подбирать тайминги миганий, менять диапазон переменных циклов). //Дерзайте - все в ваших руках // Пин для подключения управляющего сигнала светодной ленты const int PinLS = 2; //Пины для подключения датчиков //если более удобно будет подключать контакты в другом порядке - просто поменяйте значения переменных const int buttonPinL = 3; const int buttonPinR = 4; const int buttonPinS = 6; const int buttonPinD = 5; //начальные статусы входов (подтянуты к плюсу) int buttonStateS = HIGH; int buttonStateD = HIGH; int buttonStateL = HIGH; int buttonStateR = HIGH; // пауза pause_pov1 (в миллисекундах) нужна, чтобы синхронизировать циклы "пробегания" полоски и включения лампочки поворотника // такое может быть, если используется меньше половины светодиодов // в моем случае паузы нет (pause_pov1 = 0) int pause_pov1 = 1; // этой паузой регулируем длительность состояния, когда все светодиоды выключены //я определял опытным путем - включал поворотник, засекал по отдельности время ста мыргов лампочкой и ста беганий полоски, разницу делил на 100, на полученное время увеличивал или уменьшал значение переменной (в зависимости от того, отставали или убегали вперед лампочки) int pause_pov2 = 62; // переменная для получения значения ускорения int ix; Adafruit_NeoPixel strip = Adafruit_NeoPixel(144, PinLS, NEO_GRB + NEO_KHZ800); Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345); void setup() { pinMode(buttonPinS, INPUT); pinMode(buttonPinD, INPUT); pinMode(buttonPinL, INPUT); pinMode(buttonPinR, INPUT); strip.begin(); // гасим ленту for (int i=0; i<144; i++) strip.setPixelColor(i, strip.Color(0,0,0)); strip.show(); accel.begin(); // ограничиваем измеряемый диапазон четырьмя G (этого хватит с большим запасом) accel.setRange(ADXL345_RANGE_4_G); accel.setDataRate(ADXL345_DATARATE_100_HZ); } void loop() { // СТОПЫ: если включены - высший приоритет //Чтобы сделать меняющуюся по ширине полоску в зависимости от интенсивности торможения //(уточнение - никакой светомузыки, ширина полосы после нажатия на тормоз не меняется!) //от плавного торможения до тапки в пол. //Добавляем еще одну переменную, например, ix2, //присваиваем ей значение ix с коэффициентом умножения, //заодно инвертируем и округляем до целого //ix = event.acceleration.x; //ix2 = -round(ix*10); //ограничиваем для плавного торможения в пробках //(чтобы не менялась при каждом продвижении на 5 метров) //if (ix2<10) ix2 = 0; //и для резкого торможения. //Реальный диапазон изменения переменной ix - от 0 до -5 //для максимальной ширины полосы при G равном или большем 0.5 //if (ix2 >50) ix2 = 50; //zatim promijenimo cikluse u STOP bloku za (int i=1; i<143; i++) на for (int i=51-ix2; i<93+ix2; i++) //Получаем минимальную ширину полоски ~30 см (для стояния в пробке) и максимальную для резкого торможения //конец комментария buttonStateS = digitalRead(buttonPinS); if (buttonStateS == LOW) { sensors_event_t event; accel.getEvent(&event); ix = event.acceleration.x; // проверка резкого торможения - мигающий режим // значение 5 - это 0,5G, минус - торможение if (ix < -5) { for (int is=0; is<15; is++) { for (int i=1; i<143; i++) strip.setPixelColor(i, strip.Color(240,0,0)); strip.show(); delay(10 + is*10); for (int i=1; i<143; i++) strip.setPixelColor(i, strip.Color(0,0,0)); strip.show(); delay(10 + is*3); buttonStateS = digitalRead(buttonPinS); if (buttonStateS == HIGH) return; } } // помигали - и хватит, включаем постоянный режим, если педаль тормоза еще нажата // или если не было резкого торможения и предыдущее условие не сработало if (buttonStateS == LOW) { for (int i=1; i<143; i++) strip.setPixelColor(i, strip.Color(200,0,0)); strip.show(); while(buttonStateS == LOW){ buttonStateS = digitalRead(buttonPinS); delay(50); } // плавно гасим for (int is=0; is<20; is++) { for (int i=1; i<143; i++) strip.setPixelColor(i, strip.Color(190 - is*10,0,0)); strip.show(); delay(10); } // СТОПЫ конец } } else // если СТОПЫ выключены { // ЗАДНИЙ ХОД: если включен - средний приоритет buttonStateD = digitalRead(buttonPinD); if (buttonStateD == LOW) { for (int i=1; i<37; i++) strip.setPixelColor(i, strip.Color(63,63,63)); for (int i=107; i<143; i++) strip.setPixelColor(i, strip.Color(63,63,63)); strip.show(); while(buttonStateD == LOW){ buttonStateD = digitalRead(buttonPinD); delay(50); } //плавно гасим for (int is=0; is<16; is++) { for (int i=1; i<37; i++) strip.setPixelColor(i, strip.Color(60 - is*4,60 - is*4,60 - is*4)); for (int i=107; i<143; i++) strip.setPixelColor(i, strip.Color(60 - is*4,60 - is*4,60 - is*4)); strip.show(); delay(10); } } buttonStateL = digitalRead(buttonPinL); buttonStateR = digitalRead(buttonPinR); // если включена аварийка if (buttonStateL == LOW && buttonStateR == LOW) { for (int il=0; il<71; il++) { strip.setPixelColor(71-il, strip.Color(63,31,0)); strip.setPixelColor(il+72, strip.Color(63,31,0)); strip.show(); delay(pause_pov1); } for (int il=0; il<71; il++) { strip.setPixelColor(71-il, strip.Color(0,0,0)); strip.setPixelColor(il+72, strip.Color(0,0,0)); strip.show(); delay(pause_pov1); } delay(pause_pov2); } // если включен ЛЕВЫЙ ПОВОРОТНИК if (buttonStateL == LOW && buttonStateR == HIGH) { for (int il=0; il<71; il++) { strip.setPixelColor(il+72, strip.Color(220,120,0)); strip.show(); delay(pause_pov1); } for (int il=0; il<71; il++) { strip.setPixelColor(il+72, strip.Color(0,0,0)); strip.show(); delay(pause_pov1); } delay(pause_pov2); } // если включен ПРАВЫЙ ПОВОРОТНИК if (buttonStateL == HIGH && buttonStateR == LOW) { for (int il=0; il<71; il++) { strip.setPixelColor(71-il, strip.Color(220,120,0)); strip.show(); delay(pause_pov1); } for (int il=0; il<71; il++) { strip.setPixelColor(71-il, strip.Color(0,0,0)); strip.show(); delay(pause_pov1); } delay(pause_pov2); } //правый поворотник конец } //конец условия else Стоп // задержка для следующего опроса датчиков delay(10); }

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...

© 2024 ermake.ru -- O popravci računara - Informativni portal