Mündəricat:

DIY Givi V56 İnteqrasiya Siqnallı Motosiklet Topbox Light Kit: 4 Addım (Şəkillərlə)
DIY Givi V56 İnteqrasiya Siqnallı Motosiklet Topbox Light Kit: 4 Addım (Şəkillərlə)

Video: DIY Givi V56 İnteqrasiya Siqnallı Motosiklet Topbox Light Kit: 4 Addım (Şəkillərlə)

Video: DIY Givi V56 İnteqrasiya Siqnallı Motosiklet Topbox Light Kit: 4 Addım (Şəkillərlə)
Video: Givi v56 maxia4 led часть2 модернизация кофра гиви быстрый оазъем 2024, Noyabr
Anonim
Image
Image
DIY Givi V56 İnteqrasiya Siqnalları olan Motosiklet Topbox Light Kit
DIY Givi V56 İnteqrasiya Siqnalları olan Motosiklet Topbox Light Kit
DIY Givi V56 İnteqrasiya Siqnalları olan Motosiklet Topbox Light Kit
DIY Givi V56 İnteqrasiya Siqnalları olan Motosiklet Topbox Light Kit

Bir motosiklet sürücüsü olaraq, yolda görünməz olduğum kimi davranmağı çox yaxşı bilirəm. Velosipedlərimə əlavə etdiyim bir şey, ümumiyyətlə inteqrasiya olunmuş bir işığı olan üst qutudur. Bu yaxınlarda yeni bir velosipedə keçdim və əşyalar üçün çox yer olduğu üçün Givi V56 Monokey qutusunu aldım. Bu qutunun hər tərəfi üçün iki LED şeridi olan zavod işıq dəsti üçün bir yer var. Problem bu dəstin təxminən 70 dollar olmasıdır və yalnız əyləc edir. Yəqin ki, oxşar işlər görən və quraşdırılması bir az daha asan ola biləcək bir satış dəsti var, amma qiymətiniz 150 dollara qədər gedir. Bacarıqlı bir insan olaraq və ünvanlı LED şeritlərini sınamaq üçün bir bəhanə axtararaq, təkcə əyləc işıqları deyil, həm də işləyən işıqlar (hərəkət edəndə yanan), dönmə siqnalları və təhlükə işıqları olan bir sistem qurmağa qərar verdim. Sadəcə olaraq, hətta bir başlanğıc sırası da əlavə etdim …. çünki bacardım. Diqqət yetirin ki, başa düşməyim çox şey olsa da, bunun üçün çox iş apardım. İşə baxmayaraq, bunun necə baş verdiyindən çox məmnunam. Ümid edirik ki, bu başqası üçün faydalı olacaq.

Bu sistemin necə işlədiyinin əsas əməliyyatı, Arduino cihazının sancaqlardakı siqnalları axtarmasıdır: əyləc işığı, sola dönmə işığı və sağa dönmə işığı. Motosikletdən gələn 12 volt siqnalını oxumaq üçün, 12V siqnalını Arduinonun oxuya biləcəyi 5V siqnalına çevirmək üçün optoizolatorlardan istifadə etdim. Kod daha sonra bu siqnallardan birini gözləyir və FastLED kitabxanasından istifadə edərək LED şeridinə əmrlər verir. Əsaslar budur, indi detallara girməliyik.

Təchizat

İstifadə etdiyim şeylərdir, çünki çox vaxt onlarda yatmışdım. Aydındır ki, lazım olduqda dəyişdirilə bilər:

  1. Arduino - Ölçüləri nəzərə almaq üçün bir nano istifadə etdim, ancaq istifadə etmək üçün beş sancağınız olduğu müddətcə istədiyiniz kimi istifadə edə bilərsiniz.
  2. 5V tənzimləyicisi - 1.5 amper gücündə olan bir L7805CV istifadə etdim. Bu layihə LEDlər üçün 0.72 amper və nano üçün güc istifadə edəcək, buna görə 1.5 bu layihə üçün əla işləyir.
  3. Kondansatörler - gərginlik tənzimləyicisinin düzgün işləməsi üçün bir 0.33 uF və bir 0.1 uF lazımdır.
  4. 3x optoisolators - 12V -dən 5V -ə qədər siqnal çevirmək. Yalnız ehtiyac duyduğumuz dörd sancağı olan PC817X tipini istifadə etdim.
  5. Rezistorlar - hər növdən üçə iki növə ehtiyacınız olacaq. Birincisi, optoisolator IR LED vasitəsilə cərəyanı azaltmaq üçün kifayətdir. Ən azı 600 ohm ehtiyacınız olacaq, ancaq motosikletdəki dəyişən gərginliyi idarə etmək üçün 700 daha yaxşı bir fikir olardı. Optoisolatorun digər tərəfində sürətli bir siqnal üçün digərinin 10k ilə 20k arasında bir yerdə olması lazımdır.
  6. Prototip lövhəsi - Kiçik bir kəsmə ilə kiçik bir layihə qutusuna sığacaq qədər kiçik ölçülərim var idi.
  7. Layihə qutusu - komponentlərə uyğun olacaq qədər böyükdür, amma uyğunlaşdırmaq üçün kifayət qədər kiçikdir.
  8. Tel - Ətrafda oturduğum üçün Cat 6 ethernet telindən istifadə etdim. Bu, bütün fərqli əlaqələrə kömək edən və cari çəkilişləri idarə etmək üçün kifayət qədər böyük bir ölçü olan bütün rəng kodlu səkkiz teldən ibarətdir.
  9. Fişlər - sistemin asanlıqla çıxarıla biləcəyini istədiyiniz yerdə. Üst qutunun çıxarılmasını və üzərinə düşən yağış və ya suyu idarə etmək üçün suya davamlı bir fiş istifadə etdim. LED şeritləri üçün daha kiçik fişlərə ehtiyacım var idi, buna görə də böyük deliklər qazmaq lazım deyildi.
  10. Hər şeyi yerində saxlamaq üçün fermuar bağlayıcıları və fermuarlı yapışqan bağlayıcılar.
  11. Bağlantıları səliqəyə salmaq üçün bükün.

Addım 1: Dövrün qurulması

Dövrə qurulması
Dövrə qurulması
Dövrə qurulması
Dövrə qurulması
Dövrə qurulması
Dövrə qurulması

Aydındır ki, quruluşumu izləyirsinizsə, etdiyim testlərin miqdarından keçməyəcəksiniz. Etdiyim ilk şey, kodumun işlədiyinə əmin olmaq və optoizolatorlardan düzgün bir şəkildə siqnal ala bilməyim, həmçinin LED şeridlərini düzgün idarə etməyim idi. Siqnal sancaqlarını izolyatorlara necə bağlamağın ən yaxşı olduğunu anlamaq üçün bir az vaxt lazım idi, amma sınaq və səhv yolu ilə düzgün istiqamət tapdım. Mən yalnız standart bir prototip lövhəsi istifadə etdim, çünki yalnız birini qururdum və bir iz nümunəsini anlamaq dəyərindən daha çox vaxt aparacaqdı. Elektron lövhənin yuxarı hissəsi əla görünür, amma alt hissəsi bir az qarışıq kimi görünür, amma heç olmasa funksionaldır.

Əsas dizayn, 12V gücünün açar bir mənbədən daxil olması ilə başlayır (yalnız motosiklet açıldıqda işləyən bir tel). Bir tel diaqramı həqiqətən bu teli tapmağa kömək edə bilər. Bu, gərginlik tənzimləyicisinin bir tərəfinə verilir. 0.33 uF bir kondansatör, bu girişi gerilim tənzimləyicisindəki yerə bağlayır və sonra motosikletlə yerə qaytarılır. Gərginlik tənzimləyicisinin çıxışı yerə bağlanmış 0.1uF kondansatörə malik olacaq. Bu kondansatörler tənzimləyicidən gələn gərginliyi hamarlaşdırmağa kömək edir. Onları dövrə lövhəsinin şəkilində tapa bilmirsinizsə, onlar gərginlik tənzimləyicisinin altındadır. Oradan 5V xətti, Arduino üzərindəki Vinə, LED şeritlərini qidalandıracaq güc pininə və iki lazımlı 5V siqnalını təmin edən Arduino pinlərinə daxil olacaq optoisolatorun Mənbə tərəfinə gedir.

Optoisolatorlara gəldikdə, iki tərəf var: biri İQ LED ilə, digəri isə transistorlu və IR detektoru ilə. 12V siqnalını ölçmək üçün IR LED tərəfini istifadə etmək istəyirik. LED 1.2V irəli bir gərginliyə malik olduğundan, bir sıra cərəyan məhdudlaşdıran bir rezistora ehtiyacımız var. 12V - 1.2V = 10.8V və LED -i 18 mA -da işlətmək üçün (həmişə ömür boyu 20 mA -dan az işləməyi sevirəm) R = 10.8V/0.018A = 600 ohm rezistora ehtiyacınız olacaq. Nəqliyyat vasitələrindəki gərginliklər də daha yüksəkdir, potensial olaraq 14V -ə qədərdir, buna görə də təxminən 710 ohm olan bir plan qurmaq daha yaxşıdır, baxmayaraq ki, 700 ağlabatan olandan çoxdur. LED tərəfinin çıxışı daha sonra yerə qaytarılır. Optoisolatorun çıxış tərəfi üçün giriş tənzimləyicidən 5V siqnalını istifadə edəcək, sonra yerə çıxmadan əvvəl çıxış başqa bir rezistora qoşulacaq. Bu rezistorun yalnız 10k - 20k ohm ətrafında olması lazımdır, ən azından məlumat cədvəlim göstərdi. Səs -küylü bir mühitlə məşğul olmadığımız üçün bu sürətli bir siqnal ölçüsü verəcəkdir. Arduino pininə çıxış müqavimət ilə optoizolatorun çıxışı arasında çıxacaq, belə ki siqnal sönəndə pin aşağı olur və pin üzərində siqnal yüksəkdir.

LED şerit işıqları üç telə malikdir: Güc, torpaq və məlumat. Güc 5V olmalıdır. Bu layihədə cəmi 12 LED istifadə olunur (zolaqlarda daha çox LED olsa da, ancaq hər üçüncü LEDdən istifadə edirəm) və ağ işıq tam parlaqlıqda istifadə edildikdə hər biri 60mA çəkir. Bu cəmi 720 mA verir. Gərginlik tənzimləyicisinin çıxış gücündəyik, buna görə də yaxşıyıq. Telin gücü idarə etmək üçün kifayət qədər böyük bir ölçü olduğuna əmin olun, 24 ölçülü Cat 6 ethernet teli istifadə etdim. Ethernet teli, ətrafında oturduğum bir şey idi və 8 rəngli kodlu telləri var, buna görə də bu layihə üçün yaxşı işləndi. Topbox -un özünə getməli olan yeganə tellər güc və torpaqdır (hər ikisi də zolaqlar arasında bölünür) və iki məlumat xətti (hər zolaq üçün bir).

Qalan naqillər arduino üzərindəki sancaqlara qoşulur və ona güc verir. Bu layihə üçün istifadə olunan sancaqlar aşağıdakılardır:

  1. Vin - 5V -a qoşulub
  2. Gnd - yerə bağlıdır
  3. Pin2 - Sol zolaq məlumat xəttinə bağlıdır
  4. Pin3 - Sağ zolaq məlumat xəttinə bağlıdır
  5. Pin4 - optoisolatordan Əyləc siqnalına bağlıdır
  6. Pin5 - optoisolatordan sola dönmə siqnalına bağlıdır
  7. Pin6 - optoisolatordan sağa dönmə siqnalına bağlıdır

Addım 2: Kabel çəkmə və quraşdırma

Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kabel və Quraşdırma
Kabel və Quraşdırma
Kabel və Quraşdırma
Kabel və Quraşdırma

Dövrə qurulduqdan sonra, əslində bunu yerində bağlamağın vaxtı gəldi. Velosipediniz üçün elektrik sxemini istifadə edərək aşağıdakıları tapmalısınız.

  • Keçmiş enerji təchizatı
  • Zəmin
  • Əyləc siqnalı
  • Sola dönmə siqnalı
  • Sağa Dönmə Siqnalı

Mənim üçün, bunların hamısının olduğu tək bir fiş var idi, buna görə də istifadə etdim. Kifayət qədər vaxt keçdikcə, eyni fiş üslubunu tapa bilərdim və sadəcə bir modul bağlaya bilərdim, amma tapmadım, buna görə də yerlərdə izolyasiyanı çıxarıb ona yeni teli lehimlədim. Gələcəkdə ehtiyac duyduğum yerdə qalan hissəni çıxara biləcəyim üçün bu birləşdirilmiş bağlantılarda fişlərdən istifadə etdim. Oradan, indi möhürlənmiş bir layihə qutusunda olan Arduino'yu bağladığım oturacağın altına qoydum. Çıxış kabeli daha sonra raf çərçivəsi boyunca su keçirməyən bir fişə qədər uzanır, sonra qutuya daxil olur və arxa tərəfi boyunca hər tərəfə bölündüyü qapağa keçir. Tellər, qapaq içərisində LED -lər üçün əlaqələrin olduğu nöqtəyə qədər uzanır. Tel, yapışqan bir dayaq ilə Açıq dərəcəli fermuar bağlayıcılarına bağlanan fermuar bağlarından istifadə etməklə kömək edir. Bunları bir ev təmir mağazasının kabel quraşdırma bölməsində tapa bilərsiniz

Minimum diametrli bir çuxurdan keçmək üçün kifayət qədər kiçik bir fişə ehtiyacım olduğundan və mövcud tələbləri yerinə yetirmək üçün kifayət qədər tel olduğundan əmin olmaq istədiyim üçün LED şeridlərində iki mini JST fiş istifadə etdim. Yenə də həddindən artıq çox ola bilərdi və əlində üç telli kiçik fişlərim yox idi. İşıq şeridi tellərinin keçəcəyi qutudakı çuxur suyun çıxmaması üçün möhürlənmişdir. LED şeritlərinin yerləşdirilməsinə gəldikdə, aralıqda kiçik bir uyğunsuzluq olduğu üçün (reflektordakı və LED -lərdəki deliklər arasındakı məsafədə təxminən 1 - 1,5 mm fərq var idi) onları LED ilə LED arasındakı fərqi bölmək üçün yerləşdirdim. mümkün qədər çuxur. Daha sonra onları yerə yapışdırmaq üçün isti yapışqan və ərazini tamamilə bağlamaq üçün mastik istifadə etdim. LED şeritlərin özləri suya davamlıdır, buna görə islananda heç bir problem yoxdur. Quraşdırmaq çox şey kimi görünsə də, bu, gələcəkdə sistemin sökülməsini asanlaşdırır və ya ola biləcəyi üçün hissələri dəyişdirmək lazımdır.

Addım 3: Kod

Mənbə kodum bu Təlimatın başında olmalıdır. Kodumu həmişə şərh edirəm, buna görə daha sonra başa düşmək daha asandır. İmtina: Mən peşəkar kod yazan deyiləm. Kod əvvəlcə işə başlamağı asanlaşdıran və bəzi təkmilləşdirmələr edilən bir üsulla yazılmışdır, amma bilirəm ki, daha da təkmilləşdirilə bilər. Zamanlama üçün çox ideal olmayan gecikmə () funksiyasından da istifadə edirəm. Bununla birlikdə, vahidin aldığı siqnallar müqayisədə sürətli siqnallar deyildir, buna görə də millis () kimi bir şeydən istifadə edərək onları saxlamağa haqq qazandım. Mən də çox məşğul bir ata və ərəm, buna görə də funksiyanı dəyişdirməyəcək bir şeyi yaxşılaşdırmaq üçün vaxt sərf edirəm və siyahıda yüksək deyil.

Bu layihə üçün FastLED kitabxanası olan yalnız bir kitabxana lazımdır. Bu, WS2811/WS2812B tipli LED şeritlərini idarə etmək üçün bütün kodlara malikdir. Oradan istifadə ediləcək əsas funksiyaları əhatə edəcəyəm.

Standart təriflərdən başqa birincisi, iki zolağınızı elan etməkdir. Hər zolaq üçün aşağıdakı kodu istifadə edəcəksiniz:

FastLED.addLeds (led [0], NUM_LEDS);

Pin 2 -ni quran bu kod xətti, bu zolağı sabit NUM_LEDS ilə müəyyən edilmiş LED sayı olan 0 zolaq olaraq təyin edir, bu da mənim vəziyyətimdə 16 olaraq təyin olunur. İkinci zolağı təyin etmək üçün 2 3 olacaq (pin3 üçün) və zolaq 1 şeridi ilə etiketlənəcək.

Növbəti vacib olacaq rəng xətti.

ledlər [0] [1] = Yüksək CRGB (r, g, b);

Bu kod xətti fərqli görünüşlərdə istifadə olunsa da (əksəriyyətim sabitdir). Əsasən, bu kod hər bir LED kanalına (qırmızı, yaşıl, mavi) hər bir parlaqlığı təyin edən bir dəyər göndərir. Parlaqlıq dəyəri 0 - 255 rəqəmi ilə müəyyən edilə bilər. Hər bir kanalın parlaqlıq səviyyəsini dəyişdirərək fərqli rənglər təyin edə bilərsiniz. Bu layihə üçün işığın mümkün qədər parlaq olmasını təmin etmək üçün ağ rəngdə olmasını istəyirəm. Buna görə etdiyim tək dəyişiklik, parlaqlıq səviyyəsini hər üç kanalda eyni şəkildə təyin etməkdir.

Növbəti kod dəsti hər bir işığı ayrı -ayrı işıqlandırmaq üçün istifadə olunur. Diqqət yetirin ki, hər bir zolaq üçün hər bir LED -in 0 -dan başlayaraq məlumat xətti bağlantısına ən yaxın olanı mənfi 1 -ə malik olan ən yüksək LED -ə qədər aparır. Məsələn, bunlar 16 LED şerididir, buna görə də ən yüksək 16 - 1 = 15. Bunun səbəbi ilk LED -in 0 olmasıdır.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Bu, sondan birinciyə keçən hər üçüncü LED -in işığını dəyişəcək. led [0] = Color_low; // Şeridi 0 LED rəngini seçilmiş rəngə qoyun. led [1] = Color_low; // Şerit 1 LED rəngini seçilmiş rəngə təyin edin. FastLED.show (); // Quraşdırılmış rəngləri göstərin. led [0] = CRGB:: Qara; // Növbəti rəng üçün hazırlıqda təyin olunan rəngi söndürün. led [1] = CRGB:: Qara; gecikmə (150); } FastLED.show (); // Quraşdırılmış rəngləri göstərin.

Bu kodun işləmə üsulu, bir döngə içərisində (i) LED ünvanı olaraq istifadə edilməsidir ki, daha sonra tam LED sayına (NUM_LEDS) istinad edilir. Bunun səbəbi, işıqların başlanğıcdan çox zolağın sonunda başlamasını istəyirəm. Ayar hər iki zolağa (ledlər [0] və ledlər [1]) çıxarılır, sonra dəyişikliyi göstərmək üçün bir əmr verilir. Bundan sonra bu işıq söndürülür (CRGB:: Qara) və növbəti işıq yanır. Qara istinad FastLED kitabxanasında müəyyən bir rəngdir, buna görə də hər bir kanal üçün 0, 0, 0 vermək məcburiyyətində deyiləm, amma eyni şeyi edərlər. For loop, hər bir LED-dən istifadə etdiyim üçün bir anda 3 LED-i (i = i-3) inkişaf etdirir. Bu döngənin sonuna qədər, işıq ardıcıllığı bir şeriddə yalnız bir işıq yandırmaqla bir LED -dən digərinə keçəcək, bir növ Knight Rider effekti. Çubuğun qurulması üçün hər bir işığı yandırmaq istəyirsinizsə, proqramdakı növbəti kod dəstində baş verən LED -ləri söndürən xətləri silmək kifayətdir.

for (int i = 0; i <dim; i ++) {// İşıqları sürətlə işıq səviyyəsinə qədər söndürün. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Bu mövqe işığı üçün son üç işığı yandıracaq. led [0] = CRGB (rt, gt, bt); // Şeridi 0 LED rəngini seçilmiş rəngə təyin edin. led [1] = CRGB (rt, gt, bt); // Şerit 1 LED rəngini seçilmiş rəngə təyin edin. } FastLED.show (); gecikmə (3); }

LEDlər üçün istifadə etdiyim son kod nümunəsi solğun bir döngədir. Burada, hər bir kanalın (rt, gt, bt) parlaqlığı üçün müvəqqəti yuvalardan istifadə edirəm və istədiyim görüntüyə çatmaq üçün hər bir nümayiş arasında gecikmə ilə 1 artırıram. Həm də unutmayın ki, bu kod yalnız son üç LED -i dəyişir, çünki işıqlar sönür, buna görə 0 -dan 9 -dan başlayıram.

LED kodunun qalan hissəsi bunların təkrarlanmasıdır. Qalan hər şey üç fərqli teldə bir siqnal axtarmağa yönəlib. Kodun Loop () sahəsi əyləc işıqlarını axtarır ki, yanmazdan əvvəl bir dəfə yanıb -sönəcək (bu arzu olunarsa tənzimlənir) və ya dönmə siqnalları axtarılır. Bu kod üçün, sola və sağa dönmə işıqlarının təhlükələr üçün eyni vaxtda yandırılacağını güman edə bilmədiyim üçün əvvəlcə koddan birini axtarmalıyam, sonra kiçik bir gecikmədən sonra hər ikisinin də göstərildiyini yoxlayıram. təhlükə işıqları yanır. İşığın bir müddət sönəcəyi üçün məndə çətin olan bir şey, dönüş siqnalları idi, buna görə hələ də açıq olan, lakin sönən dövrdə və ləğv edilmiş bir siqnal arasındakı fərqi necə deyə bilərəm? Ağlıma gələn şey, siqnalların yanıb -sönməsi arasındakı gecikmədən daha uzun davam edəcək bir gecikmə döngəsi tətbiq etmək idi. Dönüş siqnalı hələ də açıqdırsa, siqnal döngəsi davam edəcək. Gecikmə bitəndə siqnal geri dönmürsə, döngənin başlanğıcına qayıdır (). Gecikmənin uzunluğunu tənzimləmək üçün daimi işığın sayını dəyişdirin İşıqda hər 1 üçün yadda saxlama Gecikməni 100 ms dəyişir.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); əgər (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } gecikmə (100); } üçün (int i = 0; i <NUM_LEDS; i = i +3) {// Bu, sondan birinciyə keçən hər üçüncü LED üçün işığı dəyişəcək. led [0] = CRGB (0, 0, 0); // Şeridi 0 LED rəngini seçilmiş rəngə qoyun. } üçün (int i = 9; i <NUM_LEDS; i = i +3) {// Bu, yalnız son üçü işləyən işıqları quracaq. led [0] = Color_low; // Şeridi 0 LED rəngini seçilmiş rəngə qoyun. } FastLED.show (); // Çıxış parametrlərinin qaytarılması; // Dönüş siqnalı artıq açılmadıqdan sonra döngəyə qayıdın. }

Ümid edirik ki, kodun qalan hissəsi öz -özünə başa düşüləndir. Sadəcə təkrarlanan yoxlama və siqnallar üzərində hərəkətlər dəstidir.

Addım 4: Nəticələr

Nəticələr
Nəticələr

Təəccüblü tərəfi, bu sistemin velosipedə bağladığım ilk dəfə işləməsi idi. İndi, ədalət üçün bundan əvvəl skamyada çox sınaqdan keçirdim, amma yenə də bir problem və ya düzəliş olacağını gözləyirdim. Məlum oldu ki, kodda və əlaqələrdə heç bir düzəliş etməyimə ehtiyac yox idi. Videoda gördüyünüz kimi, sistem başlanğıc ardıcıllığından keçməlidir (buna ehtiyacınız yoxdur), sonra işığa çevrilir. Bundan sonra əyləcləri axtarır, bu halda bütün LED -ləri tam parlaqlığa qədər yandıracaq və əyləclər açılana qədər sönməzdən əvvəl bir dəfə yanıb sönəcək. Dönüş siqnalı istifadə edildikdə, dönüşün göstərildiyi tərəfə sürüşmə effekti verdim və digər tərəf yanarsa ya yanan işıqlar, ya da əyləc işığı olacaq. Təhlükə işıqları digər işıqlarla eyni vaxtda yanıb sönəcək.

İnşallah bu əlavə işıqlarla başqa insanlara daha çox görünərəm. Ən azından, xidmət təmin edərkən qutumu başqalarından bir az daha çox fərqləndirmək gözəl bir əlavədir. Ümid edirəm ki, bu layihə motosikletin üst qutusu işıqlandırması ilə işləməsələr də başqaları üçün faydalıdır. Təşəkkürlər!

Tövsiyə: