Სარჩევი:

DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით: 4 ნაბიჯი (სურათებით)
DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით: 4 ნაბიჯი (სურათებით)

ვიდეო: DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით: 4 ნაბიჯი (სურათებით)

ვიდეო: DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით: 4 ნაბიჯი (სურათებით)
ვიდეო: DIY Givi V56 Topbox Lighting Kit 2024, ნოემბერი
Anonim
Image
Image
DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით
DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით
DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით
DIY Givi V56 Motorcycle Topbox Light Kit ინტეგრირებული სიგნალებით

როგორც მოტოციკლეტის მხედარი, ისედაც კარგად ვიცნობ, რომ ისე მომექცნენ, როგორც გზაზე უხილავი. ერთ რამეს, რასაც მე ყოველთვის ვამატებ ველოსიპედებს, არის ზედა ყუთი, რომელსაც ჩვეულებრივ აქვს ინტეგრირებული შუქი. მე ცოტა ხნის წინ გადავედი ახალ ველოსიპედზე და შევიძინე Givi V56 Monokey ყუთი, რადგან მას უამრავი ადგილი ჰქონდა ნივთებისთვის. ამ ყუთს აქვს ქარხნული განათების ნაკრები, რომელიც შედგება LED- ების ორი ზოლისგან თითოეული მხარისთვის. პრობლემა ის არის, რომ ეს ნაკრები დაახლოებით $ 70 ღირს და მხოლოდ მუხრუჭებს აკეთებს. არსებობს შემდგომი ბაზის ნაკრები, რომელიც, ალბათ, მსგავს რაღაცეებს აკეთებს და შეიძლება ცოტა უფრო ადვილი იყოს ინსტალაცია, მაგრამ თქვენი ფასი 150 დოლარამდე ადის. როგორც მარაგი ადამიანი და ვეძებ საბაბს, რომ გამოვცადო მიმართვადი LED ზოლები, მე გადავწყვიტე შევქმნა ინტეგრირებული სისტემა, რომელსაც არა მარტო სამუხრუჭე განათება ექნება, არამედ შუქნიშანი (ჩართული მოძრაობისას), შემობრუნების სიგნალები და საშიში განათება. მხოლოდ იმისთვის, რომ დავამატო, დამწყების თანმიმდევრობაც კი დავამატე…. რადგან შემეძლო. გაითვალისწინეთ, რომ ამას ბევრი შრომა დასჭირდა, თუმცა ბევრი რამ მქონდა გასარკვევი. მუშაობის მიუხედავად, მე საკმაოდ კმაყოფილი ვარ იმით, თუ როგორ მოხდა ეს. ვიმედოვნებთ, რომ ეს დასრულდება სხვისთვის სასარგებლო.

ამ სისტემის მუშაობის ძირითადი პრინციპი არის არდუინოს ერთეული, რომელიც ეძებს სიგნალებს ქინძისთავებზე: სამუხრუჭე შუქი, მარცხენა მოსახვევი და მარჯვენა მბრუნავი შუქი. მოტოციკლიდან 12 ვოლტიანი სიგნალის წასაკითხად, მე ვიყენებ ოპტოიზოლატორებს 12 ვ სიგნალის გადასაყვანად 5 ვ სიგნალად, რომლის წაკითხვაც არდუინოს შეუძლია. კოდი ელოდება ერთ -ერთ ამ სიგნალს და შემდეგ გამოსცემს ბრძანებებს LED ზოლზე FastLED ბიბლიოთეკის გამოყენებით. ეს არის საფუძვლები, ახლა დეტალებში რომ შეხვიდეთ.

მარაგები

ეს არის ის, რაც მე გამოვიყენე, რადგან უმეტესწილად მე უკვე მქონდა ისინი გარშემო. ცხადია, მათი გაცვლა შესაძლებელია საჭიროებისამებრ:

  1. არდუინო - მე გამოვიყენე ნანო ზომის გათვალისწინებით, მაგრამ თქვენ შეგიძლიათ გამოიყენოთ ის, რასაც გრძნობთ, სანამ ხუთი ქინძისთავი გაქვთ გამოსაყენებელი.
  2. 5V რეგულატორი - მე გამოვიყენე L7805CV, რომელსაც შეეძლო 1.5 ამპერი. ეს პროექტი გამოიყენებს 0.72 ამპერს LED- ებისთვის პლუს ძალა ნანოსთვის, ასე რომ 1.5 მშვენივრად მუშაობს ამ პროექტისთვის.
  3. კონდენსატორები - თქვენ დაგჭირდებათ ერთი 0.33 uF და ერთი 0.1 uF იმისათვის, რომ ძაბვის რეგულატორმა სწორად იმუშაოს.
  4. 3x ოპტოიზოლატორები - სიგნალის გარდაქმნის გაკეთება 12 ვ -დან 5 ვ -მდე. მე გამოვიყენე PC817X ტიპი, რომელსაც აქვს მხოლოდ ოთხი პინი, რაც ჩვენ გვჭირდება.
  5. რეზისტორები - დაგჭირდებათ ორი ტიპი, თითოეული ტიპის სამი. პირველი უნდა იყოს საკმარისი იმისათვის, რომ შეამციროს დენი ოპტოიზოლატორის IR LED საშუალებით. თქვენ დაგჭირდებათ მინიმუმ 600 ოჰმი, მაგრამ 700 უკეთესი იდეა იქნება მოტოციკლზე ძაბვის ცვალებადობის დამუშავება. სხვა უნდა იყოს სადღაც 10k და 20k შორის სწრაფი სიგნალისთვის ოპტოიზოლატორის მეორე მხარეს.
  6. პროტოტიპის დაფა - მე მქონდა რამოდენიმე ისეთი მცირე ზომის, რომ მოთავსებულიყო პატარა საპროექტო ყუთში მცირე ზომის მორთვით.
  7. პროექტის ყუთი - საკმარისად დიდი, რომ მოერგოს კომპონენტებს, მაგრამ იმდენად მცირეა, რომ ადვილად მოერგოს.
  8. მავთული - მე გამოვიყენე Cat 6 Ethernet მავთული, რადგან ბევრი მქონდა მის გარშემო. მას აქვს რვა მავთული, ყველა ფერით კოდირებული, რაც ეხმარება ყველა განსხვავებულ კავშირს და იყო საკმაოდ დიდი ლიანდაგი მიმდინარე გათამაშებების მოსაგვარებლად.
  9. შტეფსელი - ყველგან, სადაც გსურთ სისტემა ადვილად მოსახსნელი იყოს. მე გამოვიყენე წყალგაუმტარი შტეფსელი, რათა ზედა ყუთი ამოვიღო და გავუმკლავდე წვიმას ან წყალს, რომელიც მასზე მოდის. მე ასევე მჭირდებოდა პატარა შტეფსელი LED ზოლებისთვის, ასე რომ დიდი ხვრელების გაბურღვა არ მჭირდებოდა.
  10. Zip ჰალსტუხები და zip ჰალსტუხი წებოვანი სამაგრი, რომ ყველაფერი დაიჭიროს ადგილზე.
  11. შეკუმშეთ შეფუთვა კავშირების დასალაგებლად.

ნაბიჯი 1: წრის შექმნა

წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა

ცხადია, თუ თქვენ მიჰყვებით ჩემს აღნაგობას, თქვენ არ მოგიწევთ იმ ტესტების გავლა, რაც მე ჩავატარე. პირველი რაც გავაკეთე იყო დავრწმუნდი, რომ ჩემი კოდი მუშაობს და მე შემიძლია სწორად მივიღო სიგნალი ოპტოიზოლატორებიდან, ასევე სწორად გავაკონტროლო LED ზოლები. ერთი წუთი დასჭირდა იმის გარკვევას, თუ როგორ უნდა დაერთოს სიგნალის ქინძისთავები იზოლატორებს, მაგრამ ცდისა და შეცდომის შედეგად ვიპოვე სწორი ორიენტაცია. მე უბრალოდ გამოვიყენე სტანდარტული პროტოტიპის დაფა, რადგან მე მხოლოდ ერთს ვაშენებდი და კვალის ნიმუშის გააზრებას უფრო მეტი დრო დასჭირდებოდა, ვიდრე ღირდა. მიკროსქემის დაფის ზედა ნაწილი მშვენივრად გამოიყურება, მაგრამ ბოლოში ცოტა არეულია, მაგრამ მაინც ფუნქციონალურია.

ძირითადი დიზაინი იწყება 12 ვ სიმძლავრის ჩართვით ჩართული წყაროდან (მავთული, რომელიც ჩართულია მხოლოდ მოტოციკლის ჩართვისას). გაყვანილობის დიაგრამა ნამდვილად დაგეხმარებათ ამ მავთულის პოვნაში. ის იკვებება ძაბვის რეგულატორის ერთ მხარეს. 0.33 uF კონდენსატორი აკავშირებს ამ შეყვანას მიწასთან ძაბვის მარეგულირებელთან, რომელიც შემდეგ იკვებება მოტოციკლის მიწასთან. ძაბვის რეგულატორის გამომუშავებას ექნება 0.1uF კონდენსატორი მიბმული მიწასთან. ეს კონდენსატორები ხელს უწყობენ მარეგულირებლისგან ძაბვის გამოსწორებას. თუ თქვენ ვერ პოულობთ მათ მიკროსქემის სურათზე, ისინი ძაბვის რეგულატორის ქვეშ არიან. იქიდან, 5V ხაზი მიდის Vin– ზე Arduino– ზე, დენის პინზე, რომელიც შესანახი იქნება LED ზოლები, და ორი წყარო optoisolator, რომელიც შესანახი Arduino ქინძისთავები უზრუნველყოფს საჭირო 5V სიგნალი.

რაც შეეხება ოპტოიზოლატორებს, არის ორი მხარე: ერთი IR LED- ით და მეორე ტრანზისტორით და IR დეტექტორით. ჩვენ გვინდა გამოვიყენოთ IR LED მხარე 12V სიგნალის გასაზომად. მას შემდეგ, რაც LED- ს აქვს წინამორბედი ძაბვა 1.2V, ჩვენ გვჭირდება მიმდინარე შეზღუდვის რეზისტორი სერიულად. 12V - 1.2V = 10.8V და LED- ის გაშვება 18 mA– ზე (მე ყოველთვის მომწონს 20 mA– ზე ნაკლები სიცოცხლის ხანგრძლივობის გამო), თქვენ დაგჭირდებათ R = 10.8V/0.018A = 600 ohm– ის რეზისტორი. სატრანსპორტო საშუალებებზე ძაბვა ასევე უფრო მაღალია, პოტენციურად 14 ვ -მდე, ამიტომ უმჯობესია ამის დაგეგმვა, რაც დაახლოებით 710 ოჰმია, თუმცა 700 გონივრული იქნება. LED- ის გამომავალი გამომავალი კვებავს ისევ მიწას. ოპტოიზოლატორის გამომავალი მხარისთვის, შესასვლელი გამოიყენებს 5V სიგნალს მარეგულირებლისგან, ხოლო გამომავალი დაუკავშირდება სხვა რეზისტორს მიწამდე წასვლამდე. ეს რეზისტორი უბრალოდ უნდა იყოს დაახლოებით 10k - 20k ohm, ყოველ შემთხვევაში ეს არის ის, რაც აჩვენა ჩემმა მონაცემთა ცხრილმა. ეს იძლევა სიგნალის სწრაფ გაზომვას, რადგან ჩვენ არ გვაქვს საქმე ხმაურიან გარემოსთან. არდუინოს პინზე გამომავალი იქნება რეზისტორსა და ოპტოიზოლატორს შორის ისე, რომ როდესაც სიგნალი გამორთულია, პინი დაბალია და როდესაც სიგნალი არის პინზე მაღალი.

LED ზოლების ნათურებს აქვს სამი მავთული, რომლებიც დაკავშირებულია მათთან: სიმძლავრე, მიწა და მონაცემები. სიმძლავრე უნდა იყოს 5 ვ. ეს პროექტი სულ იყენებს 12 LED- ს (თუმცა მე უფრო მეტი LEDS მაქვს ზოლებზე, მაგრამ მე ვიყენებ მხოლოდ ყოველ მესამე LED- ს) და თითოეულს 60mA სჭირდება, როდესაც თეთრი სინათლე გამოიყენება სრული სიკაშკაშე. ეს იძლევა ჯამში 720 mA. ჩვენ კარგად ვართ ძაბვის მარეგულირებლის გამომავალი სიმძლავრის ფარგლებში, ამიტომ ჩვენ კარგად ვართ. უბრალოდ დარწმუნდით, რომ მავთული არის საკმარისად დიდი ლიანდაგი, რათა გაუმკლავდეს ძალას, მე გამოვიყენე 24 ლიანდაგი Cat 6 Ethernet მავთული. Ethernet მავთული იყო ის, რაც მე ვიჯექი გარშემო და მას აქვს 8 ფერის კოდირებული მავთული, ასე რომ კარგად გამოვიდა ამ პროექტისთვის. ერთადერთი მავთული, რომელიც შემდეგ უნდა გადავიდეს ტოპბოქსში არის ძალა და მიწა (რომელიც ორივე იშლება ზოლებად) და ორი მონაცემთა ხაზი (თითო თითოეულ ზოლზე).

დანარჩენი გაყვანილობა აკავშირებს არდუინოს ქინძისთავებს და კვებავს მას ენერგიით. ამ პროექტისთვის გამოყენებული ქინძისთავები იყო შემდეგი:

  1. Vin - დაკავშირებული 5V
  2. Gnd - მიწასთან დაკავშირებული
  3. Pin2 - უკავშირდება მარცხენა ზოლის მონაცემთა ხაზს
  4. Pin3 - დაკავშირებულია მარჯვენა ზოლის მონაცემთა ხაზთან
  5. Pin4 - უკავშირდება სამუხრუჭე სიგნალს ოპტოიზოლატორიდან
  6. Pin5 - უკავშირდება მარცხენა შემობრუნების სიგნალს ოპტოიზოლატორიდან
  7. Pin6 - დაკავშირებულია ოპტოიზოლატორის მარჯვენა შემობრუნების სიგნალთან

ნაბიჯი 2: გაყვანილობა და ინსტალაცია

გაყვანილობა და ინსტალაცია
გაყვანილობა და ინსტალაცია
გაყვანილობა და ინსტალაცია
გაყვანილობა და ინსტალაცია
გაყვანილობა და ინსტალაცია
გაყვანილობა და ინსტალაცია

მას შემდეგ, რაც წრე აშენდება, დრო მოდის რეალურად შეაერთოთ ეს თავის ადგილას. თქვენი ველოსიპედის გაყვანილობის სქემატური სქემის გამოყენებით, თქვენ უნდა იპოვოთ შემდეგი:

  • ჩართული კვების წყარო
  • გრუნტი
  • სამუხრუჭე სიგნალი შესულია
  • მარცხენა შემობრუნების სიგნალი
  • მარჯვნივ შემობრუნების სიგნალი

ჩემთვის, იყო ერთი შტეფსელი, რომელსაც ეს ყველაფერი ჰქონდა, ამიტომ მე უბრალოდ გამოვიყენე ეს. საკმარისი დროით, მე შეიძლება შემეძლოს იგივე მოდულის პოვნა და მოდულის მოდულის გაკეთება, მაგრამ მე ეს არ გავაკეთე, ამიტომ უბრალოდ მოვაშორე საიზოლაციო ადგილები და გავამაგრე ახალი მავთული მასზე. მე გამოვიყენე შტეფსელები ამ შემაერთებელ კავშირებზე, რათა დანარჩენი ამოვიღო, თუ მომავალში დამჭირდება. იქიდან მოვათავსე არდუინო, რომელიც ახლა დალუქულ პროექტის ყუთშია, იმ სავარძლის ქვეშ, სადაც დავამატე. შემდეგ გამომავალი კაბელი გადის თაროს ჩარჩოს წყალგაუმტარი სანთლისკენ, შემდეგ შედის ყუთში და უკანა მხარეს მიდის სახურავამდე, სადაც ის იყოფა თითოეულ მხარეს. მავთულები გადის სახურავის შიგნით იმ წერტილამდე, სადაც არის LED- ების კავშირი. მავთულის დამხმარე საშუალებაა გარე ფენის სამაგრზე დამაგრებული სამაგრების გამოყენებით წებოვანი საყრდენით. თქვენ შეგიძლიათ იპოვოთ ეს კაბელების დამონტაჟების განყოფილებაში სახლის გაუმჯობესების მაღაზიაში

მე გამოვიყენე ორი მინი JST შტეფსელი LED ზოლზე, რადგან მჭირდებოდა პატარა დიამეტრი მინიმალური დიამეტრის ხვრელის გასავლელად და რადგან მინდოდა დავრწმუნებულიყავი, რომ იყო საკმარისი მავთული მიმდინარე მოთხოვნების დასამუშავებლად. ისევ და ისევ, შეიძლება ზედმეტი იყო და მე არ მქონდა პატარა საცობები სამი მავთულის მოსახერხებელი. ყუთში არსებული ხვრელი სინათლის ზოლის მავთულის გასავლელად დალუქული იყო წყლის შესანარჩუნებლად. რაც შეეხება LED ზოლების პოზიციონირებას, რადგან მცირედი შეუსაბამობაა ინტერვალში (რეფლექტორის ხვრელებსა და LED- ებს შორის მანძილი იყო დაახლოებით 1 - 1.5 მმ) მე განვათავსე ისინი ისე, რომ ისინი გაანაწილონ სხვაობა LED- სა და ხვრელი მაქსიმალურად. შემდეგ მე გამოვიყენე ცხელი წებო, რათა დამეჭირა ისინი ადგილზე და გამწოვი ადგილი მთლიანად დამეხურა. LED ზოლები თავისთავად წყალგაუმტარია, ამიტომ არ არის პრობლემა, თუ სველდება. მიუხედავად იმისა, რომ ინსტალაცია ბევრი ჩანს, ეს აადვილებს სისტემას მომავალში ამოღებას ან ნაწილების შეცვლას, რადგან ეს შეიძლება მოხდეს.

ნაბიჯი 3: კოდი

ჩემი საწყისი კოდი უნდა იყოს ამ ინსტრუქციის დასაწყისში. მე ყოველთვის მძიმედ ვაკეთებ კომენტარს ჩემს კოდზე, ასე რომ მოგვიანებით ადვილი გასაგებია. პასუხისმგებლობის შეზღუდვის განაცხადი: მე არ ვარ პროფესიონალი კოდის მწერალი. კოდი დაიწერა იმ მეთოდით, რომელიც უფრო ადვილი იყო თავიდან და გარკვეული გაუმჯობესებები განხორციელდა, მაგრამ მე ვიცი, რომ ის შეიძლება უფრო დახვეწილი იყოს. მე ასევე ვიყენებ დაგვიანების () ფუნქციის მძიმე რაოდენობას დროისათვის, რომელიც არ არის იდეალური. თუმცა, სიგნალები, რომელსაც ერთეული იღებს, არ არის შედარებით სწრაფი სიგნალები, ამიტომ მე მაინც ვთვლი გამართლებულად, რომ გავაგრძელო მათი გამოყენება რაღაც მილიის მსგავსი (). მე ასევე ძალიან დაკავებული მამა და ქმარი ვარ, ამიტომ დროის გატარებას იმის გასაუმჯობესებლად, რაც საბოლოოდ არ შეცვლის ფუნქციას, არ არის სიაში მაღალი.

ამ პროექტისთვის საჭიროა მხოლოდ ერთი ბიბლიოთეკა, რომელიც არის FastLED ბიბლიოთეკა. მას აქვს ყველა კოდი WS2811/WS2812B ტიპის LED ზოლების გასაკონტროლებლად. იქიდან, მე დაფარავს ძირითად ფუნქციებს, რომლებიც გამოყენებული იქნება.

სტანდარტული განმარტებების გარდა პირველი არის თქვენი ორი ზოლის გამოცხადება. თითოეული ზოლისთვის გამოიყენებთ შემდეგ კოდს:

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

კოდის ეს ხაზი აყალიბებს პინ 2 -ს და განსაზღვრავს ამ ზოლს, როგორც ზოლს 0, მუდმივი NUM_LEDS- ით განსაზღვრული LED- ების რიცხვით, რაც ჩემს შემთხვევაში არის 16. ზოლს ეტიკეტი ეწოდება 1.

შემდეგი ხაზი, რომელიც მნიშვნელოვანი იქნება, არის ფერის განსაზღვრა.

leds [0] [1] = ფერი_მაღალი CRGB (r, g, b);

კოდის ეს ხაზი გამოიყენება სხვადასხვა გარეგნობით (ჩემი უმეტესობა მუდმივას იყენებს). ძირითადად, ეს კოდი აგზავნის მნიშვნელობას თითოეულ LED არხზე (წითელი, მწვანე, ლურჯი), რომელიც განსაზღვრავს თითოეულ სიკაშკაშეს. სიკაშკაშის მნიშვნელობა შეიძლება განისაზღვროს რიცხვით 0 - 255. თითოეული არხის სიკაშკაშის დონის შეცვლით, შეგიძლიათ განსაზღვროთ სხვადასხვა ფერი. ამ პროექტისთვის, მე მინდა თეთრი ფერი შეინარჩუნოს სინათლე რაც შეიძლება ნათელი. ერთადერთი ცვლილება, რასაც ვაკეთებ, არის სამივე არხზე სიკაშკაშის დონის ერთნაირი დაყენება.

კოდის შემდეგი ნაკრები გამოიყენება თითოეული შუქის ინდივიდუალურად განათებისთვის. გაითვალისწინეთ, რომ თითოეული ზოლისთვის, თითოეულ LED- ს აქვს მისამართი, რომელიც იწყება 0 – ით, უახლოესი მონაცემების ხაზის კავშირისთვის, ყველაზე მაღალი რაოდენობის LED– მდე მინუს 1. მაგალითად, ეს არის 16 LED ზოლები, ასე რომ ყველაზე მაღალია 16 - 1 = 15. ამის მიზეზი არის ის, რომ პირველი LED არის წარწერით 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// ეს შეცვლის შუქს ყოველი მესამე LED- ისთვის ბოლოდან პირველზე. leds [0] = დაბალი ფერი; // არჩეული ფერისთვის დააყენეთ ზოლის 0 LED ფერი. leds [1] = დაბალი_ფერი; // არჩეული ფერისთვის დააყენეთ ზოლის 1 LED ფერი. FastLED.show (); // აჩვენეთ მითითებული ფერები. leds [0] = CRGB:: შავი; // გამორთეთ მითითებული ფერი მოსამზადებლად მომდევნო ფერისთვის. leds [1] = CRGB:: შავი; დაგვიანება (150); } FastLED.show (); // აჩვენეთ მითითებული ფერები.

ამ კოდის მუშაობის პრინციპია ის, რომ ცვლადი (i) გამოიყენება for for loop– ში, როგორც LED მისამართი, რომელიც მითითებულია LED– ების სრულ რაოდენობაზე (NUM_LEDS). ამის მიზეზი ის არის, რომ მე მინდა, რომ განათება დაიწყოს ზოლის ბოლოს და არა დასაწყისში. პარამეტრი გამოდის ორივე ზოლზე (leds [0] და leds [1]), შემდეგ გაიცემა ბრძანება ცვლილების ჩვენებაზე. ამის შემდეგ ეს შუქი გამორთულია (CRGB:: შავი) და შემდეგი შუქი ანათებს. შავი მითითება არის კონკრეტული ფერი FastLED ბიბლიოთეკაში, ასე რომ მე არ მჭირდება 0, 0, 0 გამოცემა თითოეული არხისთვის, თუმცა ისინი იმავეს გააკეთებენ. For მარყუჟის წინსვლას 3 LED ერთდროულად (i = i-3), რადგან მე მხოლოდ ყველა სხვა LED. ამ მარყუჟის დასასრულს, სინათლის თანმიმდევრობა ერთი LED– დან მეორეზე გადავა მხოლოდ ერთი განათებით თითოეულ ზოლზე, ერთგვარი რაინდის მხედარის ეფექტი. თუ გსურთ თითოეული შუქი განათებული იყოს ისე, რომ ბარი აშენდეს, თქვენ უბრალოდ წაშლით ხაზებს, რომლებიც გამორთავს LED- ებს, რაც ხდება პროგრამის კოდის შემდგომ ნაკრებში.

for (int i = 0; i <dim; i ++) {// სწრაფად ჩაქრა განათება გაშვებული შუქის დონეზე. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// ეს აანთებს პოზიციის სინათლის ბოლო სამ შუქს. leds [0] = CRGB (rt, gt, bt); // არჩეული ფერისთვის დააყენეთ ზოლის 0 LED ფერი. leds [1] = CRGB (rt, gt, bt); // არჩეული ფერისთვის დააყენეთ ზოლის 1 LED ფერი. } FastLED.show (); დაგვიანება (3); }

კოდის ბოლო მაგალითი, რომელსაც LED- ებისთვის ვიყენებ, არის გაცვეთილი მარყუჟი. აქ, მე ვიყენებ დროებით სლოტებს თითოეული არხის სიკაშკაშისათვის (rt, gt, bt) და ვამატებ მათ 1 -ით, ყოველ ჩვენებას შორის დაყოვნებით, რათა მივაღწიო სასურველ გარეგნობას. ასევე გაითვალისწინეთ, რომ ეს კოდი ცვლის მხოლოდ ბოლო სამ LED- ს, რადგან ის ქრება ნათურებში, ასე რომ მე ვიწყებ 9 -ზე და არა 0 -ზე.

დანარჩენი LED კოდი არის მათი გამეორება. ყველაფერი დანარჩენი ორიენტირებულია სიგნალის ძებნაზე სამ სხვადასხვა მავთულზე. მარყუჟის () კოდის არე ეძებს სამუხრუჭე შუქებს, რომელსაც იგი აანთებს ერთხელ დარჩენამდე (ეს სურვილისამებრ რეგულირდება) ან მობრუნების სიგნალებს ეძებს. ამ კოდის გამო, რადგან მე ვერ ვივარაუდებდი, რომ მარცხენა და მარჯვენა მოსახვევის შუქები ზუსტად ერთსა და იმავე დროს აინთებოდა საფრთხეების გამო, მე ჯერ კოდს ვეძებ, შემდეგ მცირე დაგვიანების შემდეგ ვამოწმებ, ორივე მიუთითებს თუ არა საფრთხის შუქები ჩართულია. ერთი სახიფათო ნაწილი მქონდა შემობრუნების სიგნალები, რადგან სინათლე გარკვეული პერიოდის განმავლობაში ჩაქრება, როგორ გავარკვიო განსხვავება ჯერ კიდევ ჩართულ, მაგრამ გამორთულ პერიოდში და გაუქმებულ სიგნალს შორის? რა მივიღე იყო განხორციელების დაგვიანებით მარყუჟის, რომელიც უნდა გაგრძელდეს უმეტეს ვიდრე დაგვიანებით შორის სიგნალის ციმციმები. თუ შემობრუნების სიგნალი ჯერ კიდევ ჩართულია, მაშინ სიგნალის მარყუჟი გაგრძელდება. თუ სიგნალი არ ბრუნდება შეფერხების დასრულებისას, მაშინ ის ბრუნდება მარყუჟის დასაწყისში (). შეფერხების სიგრძის შესაცვლელად, შეცვალეთ რიცხვი მუდმივი სინათლისთვის დაგვიანებული გახსენება სინათლეში ყოველი 1 -ისთვის დაგვიანება იცვლება 100 ms- ით.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } დაყოვნება (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// ეს შეცვლის შუქს ყოველი მესამე LED- ისთვის ბოლოდან პირველზე. leds [0] = CRGB (0, 0, 0); // არჩეული ფერისთვის დააყენეთ ზოლის 0 LED ფერი. } for (int i = 9; i <NUM_LEDS; i = i +3) {// ეს დააყენებს ნათურებს, რომლებიც იყენებენ მხოლოდ ბოლო სამს. leds [0] = დაბალი ფერი; // არჩეული ფერისთვის დააყენეთ ზოლის 0 LED ფერი. } FastLED.show (); // გამომავალი პარამეტრების დაბრუნება; // როდესაც შემობრუნების სიგნალი აღარ არის ჩართული, დაბრუნდით მარყუჟზე. }

ვიმედოვნებთ, რომ დანარჩენი კოდი გასაგებია. ეს მხოლოდ სიგნალების შემოწმებისა და მოქმედების განმეორებითი ნაკრებია.

ნაბიჯი 4: შედეგები

შედეგები
შედეგები

გასაოცარი ის იყო, რომ ეს სისტემა მუშაობდა პირველად, როდესაც მას ველოსიპედზე შევუერთე. ახლა, მართალი გითხრათ, მე მანამდე ძლივს გამოვცადე ის სკამზე, მაგრამ მაინც ველოდი, რომ პრობლემა ან კორექტირება მექნებოდა. გამოდის, რომ მე არ მჭირდებოდა კოდში რაიმე სახის კორექტირება და ასევე კავშირები. როგორც ვიდეოში ხედავთ, სისტემა გადის ჩატვირთვის თანმიმდევრობით (რომელიც არ უნდა გქონდეთ), შემდეგ ნაგულისხმევად გადადის ნათურებზე. ამის შემდეგ ის ეძებს მუხრუჭებს, ამ შემთხვევაში ის აანთებს ყველა LED- ს სრულ სიკაშკაშეს და აანთებს მათ კიდევ ერთხელ სანამ დარჩება მუხრუჭებამდე. როდესაც შემობრუნების სიგნალი გამოიყენება, მე გავაკეთე გადახვევის ეფექტი იმ მხარეს, რომ შემობრუნება მითითებულია და მეორე მხარე იქნება ან შუქნიშანი ან სამუხრუჭე შუქი თუ ჩართულია. სახიფათო შუქები დროთა განმავლობაში აციმციმდება სხვა შუქებთან ერთად.

ვიმედოვნებ, რომ ამ დამატებითი განათებით, სხვა ადამიანებისთვის უფრო თვალსაჩინო ვიქნები. ყოველ შემთხვევაში, ეს სასიამოვნო დამატებაა იმისათვის, რომ ჩემი ყუთი გამოირჩეოდეს სხვაზე მეტად კომუნალური უზრუნველყოფის დროს. ვიმედოვნებ, რომ ეს პროექტი სხვისთვისაც სასარგებლოა, მაშინაც კი, თუ ისინი არ მუშაობენ მოტოციკლის ყუთის განათებით. მადლობა!

გირჩევთ: