Διάγραμμα σύνδεσης Arduino για φλας σε λειτουργία. Δυναμικά φλας - φτιάχνουμε φώτα πορείας από το κιτ KIT. Βίντεο για το πώς λειτουργεί ο προβολέας μας

Όλοι όσοι έχουν δει ένα λίγο πολύ μοντέρνο αυτοκίνητο, και όχι για δεύτερη φορά, και αν υπήρχε και θέμα οδήγησης, έχουν σημειώσει από καιρό για τον εαυτό τους ένα από χρήσιμες επιλογές... Ο κόσμος το ονομάζει τεμπέλικο φλας ή ευγενικό φλας. Η όλη του ουσία συνοψίζεται στο γεγονός ότι όταν στρίβει δεξιά ή αριστερά, ο οδηγός αγγίζει το μοχλό των φλας μόνο μία φορά, χωρίς να τον στερεώσει. Δηλαδή, απλώς κάνει τα κυκλώματα των φλας να λειτουργούν, αλλά δεν ανάβει αυτόν ακριβώς τον διακόπτη. Ως αποτέλεσμα, μετά την απελευθέρωση του μοχλού, οι δείκτες κατεύθυνσης ενεργοποιούνται άλλες 3-4 φορές και αυτή τη στιγμή ο οδηγός μπορεί ήδη να κάνει την «επιχείρησή» του, δηλαδή να αφοσιωθεί πλήρως στο δρόμο. Η επιλογή είναι πολύ χρήσιμη όταν πρέπει να αλλάξετε λωρίδα. Εξάλλου, όταν ο μοχλός των φλας είναι πλήρως ενεργοποιημένος, αυτόματη απενεργοποίησηδεν θα συμβεί, λόγω της ασήμαντης γωνίας περιστροφής του τιμονιού, πράγμα που σημαίνει ότι θα πρέπει να σπρώχνετε εμπρός και πίσω με την ίδια την ένδειξη ή να τη στηρίζετε συνεχώς με το χέρι σας στο χείλος του ανοίγματος για να μιμηθείτε τη λειτουργία του ο δείκτης κατεύθυνσης. Και αν υπάρχει μια τέτοια επιλογή, τότε απλά άγγιξα ελαφρώς το μοχλό και ξέχασα. Γενικά, πιστεύουμε ότι η ουσία της εργασίας έχει αποκαλυφθεί πλήρως, αλλά τώρα αξίζει να αναφέρουμε τη δυνατότητα εφαρμογής μιας τέτοιας επιλογής στο μηχάνημά σας.

Για ποια ηλεκτρικά κυκλώματα είναι κατάλληλο ένα ευγενικό φλας στο Arduino;

Πριν μπείτε σε όλα τα σοβαρά προβλήματα σχετικά με την παραγωγή ενός ευγενικού φλας, πρέπει να καταλάβετε για ποια διαγράμματα ηλεκτρικής σύνδεσης θα είναι κατάλληλο χωρίς τροποποίηση ηλεκτρικό διάγραμμαστο αυτοκίνητο.
Εδώ μας παρουσιάζονται δύο κύριες επιλογές που διαφέρουν κατ' αρχήν. Το πρώτο είναι όταν ανάβουν τα φλας όταν συνδέονται ως φορτίο. Δηλαδή, η μεταγωγή συμβαίνει λόγω της εναλλαγής του κυκλώματος των φλας, στο οποίο βρίσκεται ο ίδιος ο μοχλός των φλας, είναι αυτό που κλείνει το κύκλωμα, μετά το οποίο πραγματοποιείται η λειτουργία. Σε αυτήν την περίπτωση, δεν θα είναι δυνατή η χρήση της επιλογής μας, καθώς όταν ο μοχλός ανοίγει το κύκλωμα με τις λάμπες, απενεργοποιούμε αμέσως τη δυνατότητα ένδειξης φωτός, ακόμα κι αν φτάσει ένα σήμα στον ίδιο τον μοχλό, απλά δεν θα πάει καθόλου περαιτέρω.
Η δεύτερη επιλογή είναι δική μας, όταν υπάρχουν σήματα ελέγχου και υπάρχουν σήματα ισχύος εξόδου. Σε αυτήν την περίπτωση, αντί για το τυπικό ρελέ, μπορείτε να εγκαταστήσετε ακριβώς το κύκλωμα που θα θέλαμε να επιστήσουμε την προσοχή σας.

Μονάδα ισχύος ρελέ που μπορεί να αγοραστεί στο Διαδίκτυο για τον έλεγχο του φορτίου ισχύος

Σκίτσο και κύκλωμα ενός τεμπέλης (ευγενικού) φλας στο Arduino

Έτσι, μπορεί κανείς να διαφωνήσει σχετικά με τη χρήση του Arduino ως κεντρικής μονάδας για τεμπέληδες φλας, καθώς αυτή δεν είναι επίσης ιδανική λύση, η οποία έχει τα μειονεκτήματά της. Για παράδειγμα, θα είναι απαραίτητο να έχετε σταθερή ισχύ μετά την ενεργοποίηση της ανάφλεξης, προκειμένου να διασφαλιστεί η απόδοση, θα χρειαστεί να συνδέσετε κυκλώματα ισχύος. Ταυτόχρονα, η ίδια η πλεξούδα από επιπλέον εξαρτήματα ραδιοφώνου είναι βασικά άχρηστη εδώ, γιατί σε αυτήν την περίπτωση μπορείτε απλά να προγραμματίσετε έναν μικροελεγκτή και να τον χρησιμοποιήσετε μόνο. Αλλά αυτό το μείον είναι επίσης ένα συν, γιατί όποιος έχει ένα μπορεί να προγραμματίσει το Arduino, και για μικροελεγκτές θα χρειαστείτε και προγραμματιστή.
Η συγγραφή ενός προγράμματος θα είναι μια από τις πιο δύσκολες εργασίες. Εδώ ένας αρχάριος θα πρέπει να αφιερώσει πάνω από μία ώρα από τον ελεύθερο χρόνο του και να μελετήσει τη δουλειά των αλγορίθμων, αλλά ευτυχώς υπάρχει το Διαδίκτυο και είμαστε εμείς. Ορίστε λοιπόν το σκίτσο.

Int switchPinR=8; int switchPinL=7; int ledPinR=11; int ledPinL=12; boolean ledOn = ψευδής; int i=0; int z=0; void setup() ( // βάλτε τον κωδικό εγκατάστασης εδώ, για να εκτελεστεί μία φορά: pinMode(switchPinR, INPUT); pinMode(switchPinL, INPUT); pinMode(ledPinR, OUTPUT); pinMode(ledPinL, OUTPUT); Serial.begin(9600 ); 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; ) //κυκλοφορεί το σήμα έκτακτης ανάγκης εάν (digitalRead(switchPinR) == HIGH && digitalRead(switchPinL) == HIGH) (goto label;) //Δεξί φλας. if (digitalRead(switchPinR) == HIGH) ( digitalWrite(ledPinR, HIGH); i=0; ενώ (i<7) { ledOn = !ledOn; digitalWrite(ledPinR, ledOn); delay(400); i++; z++; if (digitalRead(switchPinR) == LOW && z>=7) ( break; ) ) ) else ( digitalWrite(ledPinR, LOW); z=0; ) //Αριστερό φλας. if (digitalRead(switchPinL) == HIGH) ( digitalWrite(ledPinL, HIGH); i=0; ενώ (i<7) { ledOn = !ledOn; digitalWrite(ledPinL, ledOn); delay(400); i++; z++; if (digitalRead(switchPinL) == LOW && z>=7) ( break; ) ) ) other ( digitalWrite(ledPinL, LOW); z=0; ) ) )

Για να συνοψίσουμε εν συντομία, το σκίτσο έχει 2 εισόδους και 2 εξόδους. Στην περίπτωση αυτή, όταν στην είσοδο (8,7) εισάγεται ένα θετικό, δηλαδή σήμα υψηλού επιπέδου, λαμβάνουμε έναν ορισμένο αριθμό αναβοσβήνεις (z ή i) στην αντίστοιχη έξοδο (11,12). Με λίγα λόγια, κάτι τέτοιο. Δηλαδή, εάν θέλετε να αλλάξετε κάτι στο σκίτσο σχετικά με τον αριθμό των αναλαμπών και των εξόδων εισόδου, τότε δώστε προσοχή σε αυτές τις μεταβλητές. Εάν πρέπει να αλλάξετε τη διάρκεια των αναλαμπών, τότε η προσοχή σας θα πρέπει να εστιαστεί στη λειτουργία καθυστέρησης.
Ένα άλλο χαρακτηριστικό του προγράμματος είναι μια κάπως ασυνήθιστη έξοδος συναγερμού. Πρώτα, γίνεται επεξεργασία της αριστερής και της δεξιάς ένδειξης και μετά ανάβουν οι προειδοποιητικές λυχνίες κινδύνου. Αυτό οφείλεται στο γεγονός ότι μπορεί να ενεργοποιηθεί μόνο εάν η είσοδος είναι υψηλή ταυτόχρονα στις εισόδους 8 και 7. Και αυτή η προϋπόθεση θα εκπληρωθεί μόνο στον δεύτερο κύκλο, επειδή το πάτημα δύο κουμπιών ταυτόχρονα είναι φυσικά αδύνατο. Η ταχύτητα του μικροελεγκτή θα σας επιτρέψει να διαβάσετε την υψηλή έξοδο από ένα κουμπί γρηγορότερα και να αποφασίσετε ότι αυτή είναι, τελικά, προϋπόθεση για την ενεργοποίηση του φλας και όχι συναγερμός. Αν και δεν πρέπει να ανησυχείτε για αυτό, εκτός και αν το να λέτε ευχαριστώ στο δρόμο θα είναι προβληματικό.

Χαρακτηριστικά σύνδεσης τεμπέλης (ευγενικού) φλας σε αυτοκίνητο χρησιμοποιώντας Arduino

Δεν πρέπει να χρησιμοποιείτε τον ακροδέκτη 13 ως έξοδο, καθώς κάθε φορά που ανοίγετε και απενεργοποιείτε την τροφοδοσία, οι ενδείξεις που θα συνδεθούν σε αυτήν την έξοδο ενδέχεται να τρεμοπαίζουν.
Όταν μετακινείστε από τα σήματα ελέγχου στα σήματα τροφοδοσίας, χρησιμοποιήστε κατάλληλα μπλοκ που αγοράσατε στο Διαδίκτυο ή συναρμολογήσατε εσείς. Έχουμε ήδη μιλήσει για τέτοια μπλοκ - ενότητες.
Όταν λαμβάνετε σήμα 1 από τάση 12 βολτ, τοποθετήστε μια αντίσταση 10 Kom μπροστά από την είσοδο.

Αυτές είναι όλες οι οδηγίες για να κάνετε ένα τεμπέλικο φλας για ένα αυτοκίνητο χρησιμοποιώντας έναν μικροελεγκτή Arduino, και τώρα περίπου το ίδιο πράγμα στο βίντεο...


Γεια σε όλους τους DIYers! Σήμερα θα εξετάσουμε μία από τις πολλές επιλογές για τη χρήση λωρίδας LED τύπου WS2812B σε διευθυνσιοδοτούμενα LED RGB. Τέτοιες λωρίδες (καθώς και ξεχωριστά τοποθετημένα LED WS2812B) μπορούν να χρησιμοποιηθούν για να φωτίσουν το φόντο "Ambilight" οθονών και τηλεοράσεων υπολογιστών, δυναμικού φωτισμού σε αυτοκίνητο, ζωγραφικής, κορνίζας, ενυδρείου κ.λπ. Χρησιμοποιούνται ευρέως στο σχεδιασμό οποιωνδήποτε χώρων, με τη μορφή φωτισμών της Πρωτοχρονιάς ή φωτιστικών. Η χρήση λωρίδας LED τύπου WS2812B καθιστά δυνατή την απόκτηση ένας μεγάλος αριθμός απόενδιαφέροντα έργα.

Το LED WS2812B είναι ένα LED RGB που έχει τοποθετηθεί στο ίδιο περίβλημα με το τσιπ WS2801.


Το ίδιο το LED WS2812B είναι ένα στοιχείο SMD σχεδιασμένο για επιφανειακή τοποθέτηση. Στο εσωτερικό, το LED αποτελείται από κρυστάλλους κόκκινου φωτός, κρυστάλλους πράσινου φωτός και κρυστάλλους μπλε φωτός που βρίσκονται στο ίδιο περίβλημα. Με αυτό το LED μπορείτε να αποκτήσετε μια μεγάλη ποικιλία χρωματικών αποχρώσεων εκπομπής φωτός.

Το RGB LED ελέγχεται μέσω μιας πλακέτας μικροελεγκτή Arduino.
Το παρέλαβα από Κινέζους Λωρίδα LED WS2812B Είναι ένα τμήμα μήκους 1 μέτρου με τον αριθμό των LED - 144 τεμάχια. Ήθελα από καιρό να το δοκιμάσω για διαφορετικά πειράματα. Με τη βοήθεια των βιβλιοθηκών Arduino - Adafruit Neopixel και Fast led, μπορείτε να έχετε πολλά πολύ ασυνήθιστα εφέ φωτισμού. Αλλά μετά αποφάσισα να προσπαθήσω δυναμικά φλαςγια ένα αυτοκίνητο στο λεγόμενο "στυλ Audi" δεν έχω αρχίσει ακόμη να χρησιμοποιώ αυτό το σχέδιο στην πράξη (πώς θα το δεχτούν οι αστυνομικοί μας;), αλλά το αποτέλεσμα ήταν σίγουρα πολύ ελκυστικό.

Η πλακέτα Arduino Uno χρησιμεύει ως ελεγκτής για τον έλεγχο της λωρίδας LED, μπορείτε επίσης να χρησιμοποιήσετε άλλες πλακέτες - Arduino Nano, Arduino Pro mini.
Δείτε όλη τη διαδικασία στο βίντεο:


Κατάλογος εργαλείων και υλικών.
-Πλακέτα Arduino Uno.
- Πίνακας υποβάθμισης 12V\5V έως 3A.
- αντιστάσεις 100Kom-4τμχ.
-αντιστάσεις 47Kom-4τμχ.
- Αντιστάσεις 500 Ohm - 1 τεμάχιο.
-κουμπιά (για προσομοίωση σημάτων ενεργοποίησης) -4 τεμ.
- σανίδα ψωμιού
-κατσαβίδι;
εργαστηριακό μπλοκθρέψη
- κολλητήρι?
-λινός;
-δοκιμαστής.
- καλώδια σύνδεσης.

Βήμα πρώτο. Συναρμολόγηση του κυκλώματος.


Συναρμολόγησα το κύκλωμα χρησιμοποιώντας ένα breadboard. Απαιτούνται αντιστάσεις συνδεδεμένες στις ψηφιακές εισόδους Arduino για τη μετατροπή των σημάτων εισόδου του αυτοκινήτου από 12 σε 5 βολτ. Αντίσταση 500 Ohm για προστασία της γραμμής ελέγχου της λωρίδας LED WS2812B.
Φωτογραφία του πίνακα


Ως μετατροπέας από 12V σε 5V χρησιμοποίησα μια έτοιμη πλακέτα της Aliexpress. Μπορεί να χρησιμοποιηθεί οποιοσδήποτε μετατροπέας με κατάλληλες παραμέτρους. Ο μετατροπέας χρειάζεται για σταθερή τροφοδοσία στο Arduino και τη λωρίδα LED WS2812B.


Βήμα δυο. Προγραμματισμός Arduino.

Οι ψηφιακές είσοδοι της πλακέτας Arduino No. 3, 4 χρησιμοποιούνται για να ενεργοποιηθεί η περιστροφή αριστερά και δεξιά. Pin No. 5 – ανάψτε το φως του φρένου, pin No. 6 – ανάψτε την όπισθεν. Το pin No. 8 είναι το σήμα ελέγχου για την ταινία WS2812B.

Στο Arduino IDE, ανεβάστε το σκίτσο (σύνδεσμος παραπάνω). Δύο επιλογές σκίτσου - ένα για το μπροστινό μέρος του αυτοκινήτου, το άλλο για το πίσω μέρος. Χρησιμοποιήστε ό,τι χρειάζεστε. Στην αρχή του σκίτσου, μπορείτε να ορίσετε τον αριθμό των LED που χρειάζεστε. Μπορείτε επίσης να ρυθμίσετε την ταχύτητα των φλας ανάλογα με το αυτοκίνητό σας. Μπορείτε επίσης να αλλάξετε τη φωτεινότητα των LED χρησιμοποιώντας την παράμετρο strip.Color(103,31,0) – αλλάξτε τα δύο πρώτα ψηφία από 0 σε 255. Δηλαδή, μπορείτε να πειραματιστείτε λίγο.

Όταν κάνετε κλικ στο το επιθυμητό κουμπίστέλνουμε ένα σήμα για να ενεργοποιήσετε την επιθυμητή παράμετρο. Όταν το κύκλωμα συναρμολογηθεί σωστά, συνήθως αρχίζει να λειτουργεί αμέσως.

Φωτογραφία στη δουλειά.






Ένα καλό πείραμα αποδείχθηκε ότι ήταν με το σχέδιο αυτού του Σαββατοκύριακου. Ήταν ενδιαφέρον

Ας σκεφτούμε να δημιουργήσουμε ένα φλας όπως σε ένα Audi, χρησιμοποιώντας το παράδειγμα ενός προβολέα από ένα αυτοκίνητο Renault Clio. Ας φτιάξουμε φλας και DRL σε μία συσκευή.

Τι θα χρειαστείτε για αυτό: Λωρίδα LED που αποτελείται από LED ws2812b Νανο ελεγκτής Arduino(μπορεί να χρησιμοποιηθεί σε οποιαδήποτε άλλη μορφή) Αυτοκίνητο ΦορτιστήςΓια κινητά τηλέφωναΜε Έξοδος USB. Δεδομένου ότι ο ελεγκτής Arduino χρειάζεται τάση 5V, θα χρησιμοποιήσουμε αυτόν τον φορτιστή ως μετατροπέα τάσης από 12V σε 5V. Σταθεροποιητής τάσης για 5V KR142EN5V (KREN5V) ή οποιοδήποτε άλλο εισαγόμενο ανάλογο. 3 αντιστάσεις 10 kOhm ως αντίσταση έλξης.

Διάγραμμα σύνδεσης

Ο ελεγκτής Arduino πρέπει να συνδεθεί στο δίκτυο του αυτοκινήτου μέσω ενός μετατροπέα 12V -> 5V έτσι ώστε η τάση στο κύκλωμα να προέρχεται από το άναμμα της ανάφλεξης. Πρέπει να συνδέσετε το θετικό καλώδιο από το υπάρχον φλας στον σταθεροποιητή τάσης KREN5V. Αυτό το άρθρο εξετάζει τη σύνδεση και το υλικολογισμικό ενός μόνο φλας για να δημιουργήσετε ένα δεύτερο φλας, πρέπει να συνδέσετε με παρόμοιο τρόπο τη δεύτερη λωρίδα LED σε οποιαδήποτε ελεύθερη ψηφιακή έξοδο Arduino (για παράδειγμα 7), και επίσης προσθέστε κώδικα για αυτό στο υλικολογισμικό σύμφωνα με το παράδειγμά μας.

Υλικολογισμικό ελεγκτή

Για να εργαστείτε με pixel LED θα χρειαστείτε μια βιβλιοθήκη . Μπορείτε να το εγκαταστήσετε ως εξής: Σκίτσο -> Σύνδεση βιβλιοθήκης -> Διαχείριση βιβλιοθηκών. Στη συνέχεια, εισαγάγετε το όνομα της βιβλιοθήκης Adafruit_NeoPixel.h στο μενού αναζήτησης και κάντε κλικ στο κουμπί εγκατάστασης. Μετά από αυτό, εισάγετε το σκίτσο στο πρόγραμμα και αντικαταστήστε τον αριθμό των LED στον κωδικό (χρησιμοποιούμε 22 διόδους):

#περιλαμβάνω // συνδέστε τη βιβλιοθήκη
Λωρίδα Adafruit_NeoPixel = Adafruit_NeoPixel(22, 8, NEO_GRB + NEO_KHZ800);
int t,t1,t2,t3,t4,p2,p1 = 0;// μεταβλητή χρόνου
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) ( //Εάν το φλας είναι σβηστό
for(int i = 0; i< 23; i++) {
strip.setPixelColor(i, strip.Color(255,255,255)); // R=255, G=255, B=255 - λευκό χρώμα του LED, όταν είναι αναμμένο ανάβουμε τα φώτα πορείας
}
strip.show();
}

if ((digitalRead(2) == HIGH) & (t == 1)) ( // ελέγξτε αν το φλας είναι αναμμένο
for(int i = 0; i< 23; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0)); // σβήστε όλες τις διόδους
}
strip.show();
for(int k = 0; k< 3; k++){ // цикл до трех - сигнал «перестроения» , при кратковременном включении мигает 3 раза,

for(int i = 0; i< 23; i++){

if (digitalRead(2) == HIGH) (k = 0;) // αν ενώ το φλας αναβοσβήνει λάβουμε ένα άλλο θετικό σήμα, τότε επαναφέρετε τον μετρητή έτσι ώστε το φλας να αναβοσβήνει τουλάχιστον 3 ακόμη φορές
strip.setPixelColor(i, strip.Color(255, 69, 0)); // R=255, G=69, B=0 - Χρώμα LED

καθυστέρηση((t4)/22);
strip.show();

}
εάν (digitalRead(2) == HIGH) (t4=t4+20;) // εάν όλες οι δίοδοι είναι αναμμένες κίτρινες, αλλά το σήμα από το ρελέ εξακολουθεί να έρχεται, τότε αυξάνουμε το χρόνο καύσης
εάν (digitalRead(2) == LOW) (t4=t4-20;) // εάν όλες οι δίοδοι είναι αναμμένες κίτρινες, αλλά το σήμα από το ρελέ εξακολουθεί να έρχεται, τότε αυξάνουμε το χρόνο καύσης

for(int i = 0; i< 23; i++){

strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - Χρώμα LED

καθυστέρηση((t3)/22);
strip.show();

}
εάν ((ψηφιακή ανάγνωση(2) == LOW)) (t3=t3+20;)
if ((digitalRead(2) == HIGH)) (t3=t3-20;)
}

if ((digitalRead(2) == HIGH) & (t == 0)) ( // ελέγξτε αν το φλας είναι αναμμένο

t1 = millis(); //θυμηθείτε τι ώρα ενεργοποιήσατε
for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(255, 69, 0)); // όταν ανάβετε το φλας για πρώτη φορά, ενεργοποιήστε όλες τις διόδους κίτρινο
}
strip.show();
ενώ (digitalRead(2) == HIGH) ()
t2 = millis(); // θυμηθείτε τι ώρα έκλεισε το φλας
t4=t2-t1;

for(int i = 0; i< 22; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0)); // σβήστε τις διόδους όταν εξαφανιστεί το σήμα από το ρελέ στροφής
}
strip.show();
ενώ (digitalRead(2) == LOW) (
εάν ((millis()-t2)>2000)(διάλειμμα;)
}
αν ((millis()-t2)<2000) {
t3 = millis()-t2; // χρόνος για τον οποίο σβήνουν τα φλας
t = 1; // σημαία, γνωρίζουμε ότι η τιμή χρόνου έχει αποθηκευτεί.
}
}

if (digitalRead(4) == HIGH) ( //ειδικά σήματα
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
}
strip.show();
καθυστέρηση(20);
for(int i = 0; i< 22; i++){

}
strip.show();
καθυστέρηση(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
}
strip.show();
καθυστέρηση(20);
for(int i = 0; i< 22; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - Χρώμα LED
}
strip.show();
καθυστέρηση(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
}
strip.show();

καθυστέρηση(15);
for(int i = 0; i< 22; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=0, G=0, B=0 - Χρώμα LED
}
strip.show();
καθυστέρηση(15);
}
καθυστέρηση (500);

Κάντε το ίδιο για τον κωδικό για το δεύτερο φλας.

Βίντεο για το πώς λειτουργεί ο προβολέας μας

Είπα "Gop" πέρυσι - ήρθε η ώρα να πηδήξουμε :)
Ή μάλλον, κάντε την υποσχεμένη αναθεώρηση των φλας σε λειτουργία.
Παρήγγειλα 1 μέτρο μαύρης ταινίας WS2812B (144 LED) σε σωλήνα σιλικόνης, κατά την παραγγελία επέλεξα "Black 1m 144led IP67" (ίσως σε κάποιον αρέσει το λευκό χρώμα του υποστρώματος, υπάρχει μια τέτοια επιλογή).

Μια λέξη προσοχής

Έλαβα μια ταινία κολλημένη από δύο κομμάτια μισού μέτρου. Το μειονέκτημα αυτού είναι ένα ευάλωτο σημείο συγκόλλησης (οι επαφές μπορεί να σπάσουν με την πάροδο του χρόνου) και ένα αυξημένο κενό μεταξύ των LED.
Πριν από την αγορά, επικοινωνήστε με τον πωλητή σχετικά με αυτό το σημείο.

Τα καλώδια επαφής συγκολλήθηκαν στην ταινία και στις δύο πλευρές για να συνδέσουν πολλά κομμάτια σε σειρά, επειδή Δεν το χρειαζόμουν αυτό, οπότε ξεκόλλησα τα καλώδια από τη μία πλευρά, σφράγισα τα πάντα με ένα ουδέτερο στεγανωτικό και τύλιξα λίγο ακόμα μαύρη ηλεκτρική ταινία.



Προσαρμόζεται στο γυαλί χρησιμοποιώντας, για παράδειγμα, διαφανή κολλητική ταινία διπλής όψης.

Λεπτομέρειες εγκατάστασης

Απολίπανσα τις επιφάνειες, πρώτα κόλλησα κολλητική ταινία στον σωλήνα (θα το ονομάσω έτσι, παρόλο που η διατομή είναι ορθογώνια), έκοψα την προεξέχουσα περίσσεια της φαρδύτερης ταινίας, έσπρωξα τις άκρες του σωλήνα στις ρωγμές μεταξύ η οροφή και τα πάνω μέρη των διακοσμητικών πλαισίων των πίσω κολόνων (τα καλώδια επαφής με τον σύνδεσμο ήταν κρυμμένα πίσω από ένα πάνελ), το κεντράρωσαν και άρχισαν να το πιέζουν στο γυαλί, τραβώντας αργά το προστατευτικό στρώμα της ταινίας.
Δυστυχώς, δεν υπάρχει βίντεο - δεν υπήρχαν ελεύθερα χέρια για γυρίσματα και το αυτοκίνητο του καθενός είναι διαφορετικό.
Αν κάτι δεν είναι ξεκάθαρο, ρωτήστε στα σχόλια.
Η δοκιμή στη ζέστη του καλοκαιριού ήταν επιτυχής - τίποτα δεν ξεκόλλησε και δεν επιπλέει.
Το μόνο αρνητικό είναι ότι η γωνία του γυαλιού είναι ήπια, τα LED λάμπουν περισσότερο προς τα πάνω. Σε μια ηλιόλουστη μέρα είναι δύσκολο να το δεις, αλλά επειδή αυτά είναι διπλά σήματα,

Ας περάσουμε τώρα στην ηλεκτρονική γέμιση.
Το χρησιμοποίησα, αλλά το ανακάλυψα πριν από λίγο καιρό

Με περίπου το ίδιο κόστος παίρνουμε περισσότερα καλούδια

Το σκίτσο θα λειτουργήσει χωρίς ιδιαίτερες τροποποιήσεις στο Wemos κατά τον προγραμματισμό στο Arduino IDE και εάν εφαρμόσετε έναν μικρό διακομιστή web, τότε όταν συνδεθείτε σε αυτόν μέσω Wi-Fi, μπορείτε να αλλάξετε τις τιμές των μεταβλητών όπως ο χρόνος καθυστέρησης ανάμεσα στα φλας, το ποσοστό επιβράδυνσης κατά το φρενάρισμα έκτακτης ανάγκης κ.λπ.
Εδώ στο μέλλον, εάν κάποιος ενδιαφέρεται να υλοποιήσει ένα έργο στο ESP8266, μπορώ να δημοσιεύσω ένα παράδειγμα για την αλλαγή των ρυθμίσεων μέσω της διεπαφής web, την αποθήκευση τους στο EEPROM και μετά την ανάγνωσή τους.
Ο διακομιστής ιστού μπορεί να εκκινηθεί, για παράδειγμα, μέσω του φλας που ανάβει και του πεντάλ του φρένου όταν ανάβει η ανάφλεξη (στη διαδικασία εγκατάστασης, μετρήστε την κατάσταση των αντίστοιχων εισόδων).

Για να εφαρμόσω μια λειτουργία που αναβοσβήνει κατά το δυνατό φρενάρισμα, αγόρασα
Το σκίτσο παρακολουθεί το επίπεδο επιβράδυνσης κατά το πάτημα του πεντάλ του φρένου, εάν υπερβαίνει τα 0,5 G (απότομη επιβράδυνση, αλλά χωρίς φρένα που τσιρίζουν), τότε ενεργοποιείται μια λειτουργία που αναβοσβήνει για μερικά δευτερόλεπτα για να προσελκύσει επιπλέον προσοχή.
Τα σήματα ελέγχου στις εισόδους Arduino από τα «συν» των στοπ, των φλας και της όπισθεν παρέχονται μέσω γαλβανικής απομόνωσης - οπτοζεύκτες με αντιστάσεις περιορισμού ρεύματος, οι οποίες τελικά σχηματίζουν το επίπεδο LOW στις εισόδους Arduino (συνεχώς έλκονται σε θετικές αντιστάσεις 10 kOhm). .
Τροφοδοσία ρεύματος - 5 βολτ μέσω μετατροπέα DC-DC stepdown.
Όλο το αντικείμενο διπλώνεται σε ένα σάντουιτς και συσκευάζεται σε κατάλληλο κουτί, στο οποίο η κατεύθυνση εγκατάστασης σημειώνεται με ένα βέλος για τον σωστό προσανατολισμό του αισθητήρα βαρύτητας

Διάγραμμα και φωτογραφία



Η ονομαστική τιμή των αντιστάσεων έλξης (σε θετικό) είναι στάνταρ - 10 kOhm, περιορίζοντας το ρεύμα των αντιστάσεων οπτικού συζεύκτη - 1 kOhm. Αφαίρεσα τους οπτικούς συζεύκτες από παλιές πλακέτες, δύο ήταν PC123, δύο ήταν PC817.


Στην πρώτη φωτογραφία μπορείτε να δείτε δύο επιπλέον ακροδέκτες για τα φλας. Επειδή στο αυτοκίνητό μου υπάρχει βραχυκύκλωμα στη γείωση όταν είναι ενεργοποιημένος ο μοχλός της κολόνας του τιμονιού, συνέδεσα τα καλώδια στο μπλοκ μοχλού και στις εισόδους Arduino. Εάν ο μοχλός της κολόνας τιμονιού αλλάξει το συν ή αν πάρετε το σήμα από το «+» των φλας αριστερά/δεξιά, συνδέστε τα μέσω γαλβανικής απομόνωσης.



Λοιπόν, τώρα το ίδιο το σκίτσο (Arduino IDE)

#περιλαμβάνω #περιλαμβάνω //μερικά γενικά σχόλια // Απενεργοποίησα ένα από τα πιο εξωτερικά LED, γιατί... αντανακλώνται στα διακοσμητικά πάνελ των ραφιών //ορατή στο παράδειγμα αυτού του κύκλου για (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; // στη συνέχεια αλλάξτε τους κύκλους στο μπλοκ STOP για (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); }

Προσπάθησα να το σχολιάσω όσο το δυνατόν περισσότερο, αλλά αν υπάρχουν ερωτήσεις, θα προσπαθήσω να προσθέσω σχόλια (γι' αυτό το τοποθετώ στο κείμενο της κριτικής και όχι ως συνημμένο αρχείο). Αυτό, παρεμπιπτόντως, ισχύει και για άλλα σημεία της κριτικής - θα το συμπληρώσω επίσης εάν υπάρχουν σημαντικές ερωτήσεις στα σχόλια.

Και τέλος, μια επίδειξη της δουλειάς (για το βίντεο χρησιμοποίησα ένα σκίτσο με λειτουργία επίδειξης).

Ενημέρωση Έκανα ένα σκίτσο με μια λειτουργία επίδειξης ειδικά για να χωρέσουν τα πάντα σε ένα σύντομο βίντεο.
Το φως των φρένων αναβοσβήνει μόνο κατά το δυνατό φρενάρισμα (αυτό συζητήθηκε παραπάνω κατά το αργό φρενάρισμα και όταν στέκεστε σε μποτιλιαρίσματα, απλά ανάβει, χωρίς να ερεθίζει τους οδηγούς).
Η φωτεινότητα τη νύχτα δεν είναι υπερβολική, γιατί Λόγω της κλίσης του γυαλιού, τα φώτα κατευθύνονται περισσότερο προς τα πάνω παρά προς τα πίσω.
Τα τυπικά φώτα λειτουργούν ως συνήθως, αυτή η λωρίδα τα αντιγράφει.

Σκοπεύω να αγοράσω +97 Προσθήκη στα αγαπημένα Μου άρεσε η κριτική +89 +191

Πολλοί λάτρεις του αυτοκινήτου, προκειμένου να βελτιώσουν την εμφάνιση του αυτοκινήτου τους, συντονίζουν το «Swallow» τους με φώτα LED. Μία από τις επιλογές συντονισμού είναι ένα φλας σε λειτουργία, το οποίο εφιστά την προσοχή των άλλων χρηστών του δρόμου. Το άρθρο παρέχει οδηγίες για την εγκατάσταση και τη διαμόρφωση φλας με φώτα πορείας.

[Κρύβω]

οδηγίες συναρμολόγησης

Οι λαμπτήρες LED είναι στοιχεία ημιαγωγών που λάμπουν όταν εκτίθενται σε ηλεκτρικό ρεύμα.Το κύριο στοιχείο σε αυτά είναι το πυρίτιο. Ανάλογα με τις ακαθαρσίες που χρησιμοποιούνται, το χρώμα των λαμπτήρων αλλάζει.

Συλλογή φωτογραφιών "Πιθανές επιλογές για δυναμικούς δείκτες κατεύθυνσης"

Εργαλεία και υλικά

Για να φτιάξετε ένα φλας με τα χέρια σας, θα χρειαστείτε τα ακόλουθα εργαλεία:

  • Συγκολλητικό σίδερο?
  • πλαϊνοί κόφτες ή πένσες.
  • συγκολλητικό σίδερο και υλικό συγκόλλησης.
  • δοκιμαστής.

Πρέπει να προετοιμάσετε laminate από fiberglass από αναλώσιμα. Χρειάζεται για την κατασκευή πλακέτας τυπωμένου κυκλώματος στην οποία θα τοποθετηθεί το στοιχείο ημιαγωγού. Επιλέγονται τα απαιτούμενα LED. Ανάλογα με τα χαρακτηριστικά των LED και τις τιμές ρεύματος και τάσης του ενσωματωμένου δικτύου, υπολογίζονται τα χαρακτηριστικά των προστατευτικών αντιστάσεων. Χρησιμοποιώντας υπολογισμούς, επιλέγονται τα υπόλοιπα στοιχεία του δικτύου (ο συγγραφέας του βίντεο είναι ο Evgeny Zadvornov).

Ακολουθία εργασίας

Πριν κάνετε φλας, πρέπει να επιλέξετε ένα κατάλληλο σχέδιο.

Στη συνέχεια, με βάση το διάγραμμα, φτιάξτε μια πλακέτα τυπωμένου κυκλώματος και εφαρμόστε σημάδια σε αυτήν για να τοποθετήσετε μελλοντικά στοιχεία.

Η συναρμολόγηση αποτελείται από μια σειρά ενεργειών:

  1. Αρχικά, θα πρέπει να απενεργοποιήσετε το αυτοκίνητο αποσυνδέοντας τον αρνητικό πόλο από την μπαταρία.
  2. Στη συνέχεια, πρέπει να αφαιρέσετε τα παλιά φλας και να τα αποσυναρμολογήσετε προσεκτικά.
  3. Οι παλιοί λαμπτήρες πρέπει να ξεβιδωθούν.
  4. Οι αρμοί πρέπει να καθαριστούν από κόλλα, να απολιπανθούν, να πλυθούν και να αφεθούν να στεγνώσουν.
  5. Στη θέση κάθε παλιού στοιχείου, εγκαθίσταται ένα νέο φλας.
  6. Στη συνέχεια, η συναρμολόγηση και η τοποθέτηση των φώτων γίνεται με την αντίστροφη σειρά.
  7. Μετά την εγκατάσταση, τα καλώδια συνδέονται.

Στο επόμενο στάδιο, μια πρόσθετη σταθεροποιημένη πηγή ισχύος συνδέεται στο δίκτυο. Η είσοδός του λαμβάνει ισχύ από το ενδιάμεσο ρελέ και η έξοδος συνδέεται με μια δίοδο. Είναι καλύτερα να το τοποθετήσετε στον πίνακα οργάνων.

Κατά τη σύνδεση των LED, πρέπει να βεβαιωθείτε ότι η άνοδος είναι συνδεδεμένη στο συν της πηγής ισχύος και η κάθοδος στο μείον. Εάν η σύνδεση δεν γίνει σωστά, τα στοιχεία ημιαγωγών δεν θα ανάψουν και μπορεί ακόμη και να καούν.


Χαρακτηριστικά εγκατάστασης και διαμόρφωσης δεικτών κατεύθυνσης λειτουργίας

Μπορείτε να εγκαταστήσετε δυναμικά φλας αντί για συμβατικά LED. Για να γίνει αυτό, αφαιρείται και αποσυναρμολογείται η πλακέτα με LED και αντιστάσεις περιορισμού ρεύματος. Στον επαναλήπτη πρέπει να σκίσετε το γυαλί από το σώμα. Στη συνέχεια, θα πρέπει να κόψετε προσεκτικά τον ανακλαστήρα και να τον αφαιρέσετε.

Στη θέση του απομακρυσμένου ανακλαστήρα, τοποθετείται μια πλακέτα SMD 5730, στην οποία βρίσκονται κίτρινες λυχνίες LED. Δεδομένου ότι ο επαναλήπτης έχει καμπύλο σχήμα, η σανίδα θα πρέπει να αποκολληθεί και να λυγίσει λίγο. Πρέπει να κόψετε το εξάρτημα με τον σύνδεσμο από την παλιά πλακέτα και να το κολλήσετε για να συνδέσετε τον ελεγκτή. Στη συνέχεια όλα τα εξαρτήματα επιστρέφουν στη θέση τους.

Για να ρυθμίσετε το χρονισμό των φώτων LED που λειτουργούν, ένας διακόπτης είναι κολλημένος στον μικροελεγκτή. Όταν βρεθεί μια κατάλληλη ταχύτητα, οι βραχυκυκλωτήρες συγκολλούνται στη θέση του διακόπτη. Όταν συνδέετε δύο ακροδέκτες στη γείωση, ο ελάχιστος χρόνος μεταξύ των αναβοσβήσεών του LED θα είναι 20 ms. Όταν οι επαφές είναι κλειστές, αυτός ο χρόνος θα είναι 30 ms.


Θέμα τιμής

Μπορείτε να κάνετε ένα φλας από τα φώτα ημέρας. Το κόστος τους είναι 600 ρούβλια. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε LED RGB "pixel" ως πηγές φωτός σε ποσότητα 7 τεμαχίων για κάθε φλας που τρέχει. Το κόστος ενός στοιχείου είναι 19 ρούβλια. Για να ελέγξετε τα LED, πρέπει να αγοράσετε ένα Arduino UNO που κοστίζει 250 ρούβλια. Έτσι, το συνολικό κόστος θα είναι 1060 ρούβλια.

WiFi