Სარჩევი:
- ნაბიჯი 1: საჭირო ნაწილები
- ნაბიჯი 2: შეცვალეთ ქუდი
- ნაბიჯი 3: შეაერთეთ იგი
- ნაბიჯი 4: პროგრამირება
- ნაბიჯი 5: მოწინავე და არჩევითი: კოდის შიგნით
ვიდეო: ლამაზი LED ქუდი: 5 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
მე ყოველთვის მინდოდა არდუინოს პროექტის გაკეთება, მაგრამ არასოდეს მქონია რაიმე დიდი იდეა, სანამ ჩემი ოჯახი არ მიიწვიეს ქუდების წვეულებაზე. ორი კვირის განმავლობაში, მე დავინტერესდი, შემიძლია თუ არა დავგეგმო და შევასრულო მოძრაობის მიმართ მგრძნობიარე LED ანიმაციური ქუდი. თურმე შემეძლო! ალბათ ცოტათი გადავსულვარ, მაგრამ მთლიანი პროექტი დაახლოებით $ 80 დაჯდა. ექსპერიმენტებითა და გარკვეული კოდირებით შეგიძლიათ ამის გაკეთება ნაკლებ ფასად.
გოლი ქუდით იყო შემდეგი:
- განათების ნაკრები გადაადგილეთ ქუდის ცენტრალური წინა ნაწილიდან უკანა მხარეს, თითო შუქი თითოეულ მხარეს
- შეცვალეთ სინათლის გადაადგილების სიჩქარე, რომელიც ნაკარნახევია ქუდის დახრით წინ და უკან
- მიეცით შუქს შებრუნების უფლება, როდესაც ქუდის ზოლი დაიხარა ქვემოთ (ანუ მიბაძეთ სიმძიმის ეფექტს შუქებზე)
- შეცვალეთ ფერი ქუდის დახრის საფუძველზე მარცხნიდან მარჯვნივ
- იგრძენით შოკი და აჩვენეთ სპეციალური ეფექტი
- შეიგრძენით ტარების ტრიალი და აჩვენეთ სპეციალური ეფექტი
- მთლიანად შეინახეთ იგი ქუდში
ნაბიჯი 1: საჭირო ნაწილები
მე გამოვიყენე შემდეგი ძირითადი კომპონენტები (ამაზონის არა შვილობილი ბმულები შედის):
- Teensy LC მიკროკონტროლერი - მე შევარჩიე ის ჩვეულებრივ Arduino– ში მისი მცირე ზომის გამო და მას აქვს სპეციალური კავშირი ჩემი LED– ების გასაკონტროლებლად, ასევე ძლიერი ბიბლიოთეკისა და საზოგადოების მხარდაჭერისთვის.
- Bosch BNO055 დაფუძნებული პოზიციური სენსორი - გულწრფელად გითხრათ ერთ -ერთი პირველი, რაც მე ვიპოვე დოკუმენტაცია. გაცილებით იაფი ვარიანტებია, მაგრამ Bosch– ის გააზრებისთანავე ის ბევრს გააკეთებს თქვენთვის, რასაც სხვაგვარად მოგიწევთ კოდში გაკეთება
- WS2812 მიმართვადი LED ზოლები - მე ავირჩიე 1 მეტრის სიგრძე 144 LED- ით მეტრზე. ამ სიმკვრივის არსებობა ეხმარება შუქს უფრო მეტად გამოიყურებოდეს როგორც მოძრავი, ვიდრე ცალკეული ელემენტები ანათებენ თანმიმდევრობით.
და შემდეგი მცირე კომპონენტები:
- ქუდი - ნებისმიერი ქუდი ქუდიანი სამაჯურით გააკეთებს. ეს არის 6 დოლარიანი ქუდი ადგილობრივი მაღაზიიდან. თუ მას აქვს ნაკერი უკანა ნაწილში, უფრო ადვილი იქნება გაყვანილობის გავლა. მიაქციეთ ყურადღება, თუ ქუდის ბენდი არის წებოვანი, რადგან ეს ასევე გამოიწვევს დამატებით სირთულეს. ეს არის შეკერილი ზემოდან, მაგრამ ქვედა ადვილად იწევს ზემოთ.
- 4.7K ohm რეზისტორები
- 3x AAA ბატარეის ყუთი - 3 AAA ბატარეის გამოყენებით გამოდის ძაბვა ზუსტად იმ დიაპაზონში, რაც ელექტრონიკას სურს, რაც ამარტივებს ნივთებს. AAA ჯდება ქუდში უფრო ადვილად ვიდრე AA და ჯერ კიდევ აქვს დიდი გაშვების დრო.
- მცირე ლიანდაგის მავთული - მე გამოვიყენე მყარი მავთული, რომელიც წინა LED– ის პროექტით მქონდა დაგებული.
- Soldering რკინის და solder
- ზოგიერთი სპანდექსი, რომელიც შეესაბამება ქუდის შიდა ფერს და ძაფს
შემოთავაზებული, მაგრამ არჩევითი:
- სწრაფი კონექტორები ბატარეის მავთულისთვის
- დამხმარე ხელების ინსტრუმენტი, ეს ნივთები ძალიან მცირეა და ძნელად შესაკრავია
ნაბიჯი 2: შეცვალეთ ქუდი
თქვენ დაგჭირდებათ ქუდის ადგილი ელექტრონიკის დასაყენებლად და ადგილი ბატარეისთვის. ჩემი მეუღლე პროფესიონალურად მუშაობს ტანსაცმელში, ამიტომ ვთხოვე რჩევა და დახმარება. ჩვენ დავამთავრეთ ორი ჯიბის შექმნა სპანდექსით. პირველი პატარა ჯიბე წინ მიმართულია ისე, როგორც ქუდი, ასე რომ როდესაც ელექტრონიკა დამონტაჟებულია, პოზიტიური სენსორი საკმაოდ კარგად იჭერს ადგილს, მაგრამ საჭიროების შემთხვევაში ადვილად მოიხსნება. მეორე ჯიბე უკანა მხარეს არის ბატარეის შეკვრა ადგილზე.
ჯიბეები ითესებოდა ძაფით, რომელიც ეხამებოდა ქუდის ფერს, ყველა გრძელი გვირგვინის ხაზს. ქუდისა და მასალის სტილის მიხედვით იგი დამზადებულია YMMV– სგან ამ ტექნიკით.
ჩვენ ასევე აღმოვაჩინეთ, რომ ქუდის ბუდე ერთ მხარეს არის ჩასმული და ის სრულად იყო შეკერილი ქუდი იმ ადგილას. ჩვენ მოგვიწია ორიგინალური ნაკერის ამოღება, რათა LED- ები გაშვებულიყო ბენდის ქვეშ. მშენებლობის დროს იგი დაიჭირეს ქინძისთავებით, შემდეგ კი დასრულებისთანავე შეკერეს შესატყვისი ძაფით.
საბოლოოდ ჩვენ გავხსენით ნაკერი ქუდის უკანა მხარეს, თუ იგი დაფარულია ბენდით. ჩვენ ჩავალაგეთ მავთულის აღკაზმულობა, რომელიც მოდიოდა შუქდიოდებით იმ ნაკერის გავლით და გავაფორმეთ პირველი შტრიხი ზოლში, რომელიც იყო ზუსტად ნაკერზე. შემდეგ ჩვენ შემოვიხვიეთ LED- ები ქუდის გარშემო და დავჭრათ ზოლები ისე, რომ ბოლო LED იყოს პირველის გვერდით. LED ზოლები შეიძლება დაიჭიროს ქუდის ზოლთან ერთად, თუმცა თქვენი ზოლისა და მასალის მიხედვით შეიძლება დაგჭირდეთ LED- ების დაცვა სამკერვალო ან წებოთი.
ნაბიჯი 3: შეაერთეთ იგი
Teensy დაფა და LED- ები იმუშავებენ ყველგან 3.3 ვ -დან 5 ვ -მდე სიმძლავრისთვის. ამიტომაც ავირჩიე 3 AAA ბატარეის გამოყენება, გამომავალი ძაბვა 4,5 ვ ლამაზად არის ამ დიაპაზონში და მათ აქვთ ბევრი სამუშაო დრო ისე, რომ მე დავაპროგრამე LED- ები მუშაობისთვის. თქვენ უნდა შეძლოთ კარგად გაატაროთ 8 საათის განმავლობაში.
დენის გაყვანილობა
მე დავაკავშირე ბატარეის ყუთიდან და LED- ებიდან პოზიტიური და უარყოფითი მხარეები, შემდეგ შევიყვანე Teensy– ზე შესაბამის ადგილებში. ბატარეის დადებითი უნდა იყოს დაკავშირებული დიაგრამაში Teensy– ის ზედა მარჯვენა პინთან (წარწერით Vin დაფაზე), ხოლო ნეგატივი შეიძლება შეყვანილ იქნეს ნებისმიერ PIN– ზე, რომელსაც ეტიკეტი აქვს GND. მოხერხებულად არის ერთი უშუალოდ დაფის მოპირდაპირე მხარეს, ან Vin pin– ის გვერდით. დაფის სრული პინოგრამის დიაგრამა შეგიძლიათ იხილოთ ამ გვერდის ბოლოში. ზოგიერთ შემთხვევაში დაფის შეკვეთისას მოყვება ქაღალდის ასლი.
თუ თქვენ გეგმავთ კოდის გაშვებას, რომელსაც აქვს ჩართული მხოლოდ რამდენიმე LED ერთდროულად, შეგიძლიათ ჩართოთ LED- ები Teensy– დან, 3.3v გამომავალი და GND– ის გამოყენებით, თუმცა თუ თქვენ ცდილობთ ზედმეტი ენერგიის ამოღებას, შეგიძლიათ დააზიანეთ დაფა. ასე რომ, საკუთარი თავისთვის ყველაზე მეტი ვარიანტის მისაღებად უმჯობესია LED- ები პირდაპირ აკუმულატორის წყაროს მიაწოდოთ.
LED- ების გაყვანილობა
მე ავირჩიე Teensy LC ამ პროექტისთვის, რადგან მას აქვს პინი, რომელიც ბევრად უფრო ამარტივებს მისამართის LED- ების მიერთებას. დაფის ბოლოში არის პინი, რომელიც მეორეა მარცხენა სარკეებიდან Pin #17, მაგრამ ასევე აქვს 3.3 ვ. ეს არის მოხსენიებული, როგორც გაყვანა და სხვა დაფებზე თქვენ უნდა შეაერთოთ რეზისტორი ამ ძაბვის უზრუნველსაყოფად. Teensy LC– ის შემთხვევაში შეგიძლიათ უბრალოდ დააკავშიროთ ეს pin პირდაპირ თქვენი LED- ების მონაცემთა მავთულზე.
პოზიციის სენსორის გაყვანილობა
ზოგიერთი ხელმისაწვდომი BNO055 დაფა ბევრად უფრო მკაცრია ძაბვის მიმართ და მხოლოდ 3.3 ვ. ამის გამო, მე შევიყვანე Vin BNO055 დაფაზე Teensy– ზე გამოყოფილი 3.3 ვ გამომავალიდან, რომელიც მე –3 პინია მარჯვნივ. ამის შემდეგ შეგიძლიათ დაუკავშიროთ GND BNO055– ზე ნებისმიერ GND– ს Teensy– ზე.
BNO055 პოზიციის სენსორი იყენებს I2c თინეიჯერებს სასაუბროდ. I2c მოითხოვს გაყვანის საშუალებას, ასე რომ მე მოვახერხე ორი 4.7K ohm რეზისტორი Teensy– ზე 3.3v გამომავალიდან 18 და 19. ქინძისთავებამდე. შემდეგ მე 19 მავთულხლართზე დავამაგრე SCL პინზე BNO055 დაფაზე და 18 SDA პინზე.
გაყვანილობის რჩევები/ხრიკები
ამ პროექტის განსახორციელებლად მე გამოვიყენე მყარი მავთული, ვიდრე გადაკეტილი. მყარი მავთულის ერთ -ერთი უპირატესობა არის მსგავსი პროტოტიპის დაფებზე შედუღება. თქვენ შეგიძლიათ მოაშოროთ მავთული, მოაბრუნოთ იგი 90 გრადუსამდე და ჩასვათ ერთ -ერთი ტერმინალის ქვედა ნაწილში, ისე რომ მავთულის გაჭრილი ბოლო დაკიდეს თქვენს დაფაზე. თქვენ მხოლოდ მცირეოდენი შესადუღებელი გჭირდებათ ტერმინალთან მისატანად და ზედმეტად ადვილად გათიშავთ.
მყარი მავთული შეიძლება იყოს უფრო რთული მუშაობა, როგორც წესი, სურს დარჩეს ისე, როგორც არის მოხრილი. თუმცა ამ პროექტისთვის ეს იყო უპირატესობა. მე მოჭრილი და ჩამოყალიბებული ჩემი მავთულები ისე, რომ ორიენტაციის პოზიციური სენსორი იქნება თანმიმდევრული როგორც მე ჩასმული და ამოღებული ელექტრონიკის საწყისი ქუდი tweaking და პროგრამირების.
ნაბიჯი 4: პროგრამირება
ახლა, როდესაც ყველაფერი აწყობილია, დაგჭირდებათ Arduino თავსებადი პროგრამირების ინსტრუმენტი. მე გამოვიყენე ნამდვილი Arduino IDE (მუშაობს Linux, Mac და PC). თქვენ ასევე დაგჭირდებათ Teensyduino პროგრამული უზრუნველყოფა Teensy დაფასთან დასაკავშირებლად. ეს პროექტი ძლიერ იყენებს FastLED ბიბლიოთეკას, რათა შეასრულოს LED- ების ფერი და პოზიცია.
დაკალიბრება
პირველი, რისი გაკეთებაც გსურთ, არის წასვლა Kris Winer– ის შესანიშნავი GitHub საცავი BNO055– ისთვის და ჩამოტვირთოთ მისი BNO_055_Nano_Basic_AHRS_t3.ino ესკიზი. დააინსტალირეთ ეს კოდი სერიული მონიტორის საშუალებით და ის გეტყვით, არის თუ არა BNO055 დაფა სათანადოდ ონლაინში და გადის თავის თვითტესტებს. ის ასევე დაგეხმარებათ BNO055- ის დაკალიბრებაში, რაც მოგცემთ უფრო თანმიმდევრულ შედეგებს მოგვიანებით.
დაწყება Fancy LED ესკიზით
Fancy LED ქუდის კოდი სპეციალურად არის მიმაგრებული და ასევე ჩემს GitHub საცავზე. მე ვგეგმავ უფრო მეტ შესწორებას კოდზე და ისინი განთავსდება GitHub რეპოზე. ფაილი ასახავს კოდს, როდესაც ეს ინსტრუქცია გამოქვეყნდა. ესკიზის გადმოტვირთვისა და გახსნის შემდეგ არის რამდენიმე რამ, რაც თქვენ უნდა შეცვალოთ. უმნიშვნელოვანესი მნიშვნელობების შესაცვლელად არის ყველაზე მეტად #განსაზღვრული განცხადებები:
ხაზი 24: #განსაზღვრეთ NUM_LEDS 89 - შეცვალეთ ეს LED- ების რეალურ რაოდენობაზე თქვენს LED ზოლზე
სტრიქონი 28: #განსაზღვრეთ SERIAL_DEBUG ყალბი - თქვენ ალბათ გინდათ ამის ჭეშმარიტება ისე რომ ნახოთ გამომავალი სერიულ მონიტორზე
პოზიციის გამოვლენის კოდი
პოზიციის გამოვლენა და თქვენი შეცვლის უმეტესი ნაწილი იწყება 742 ხაზიდან და გადის 802. ჩვენ ვიღებთ Pitch, Roll და Yaw მონაცემებს პოზიციის სენსორიდან და ვიყენებთ მას მნიშვნელობების დასადგენად. დამოკიდებულია იმაზე, თუ როგორ არის დამონტაჟებული თქვენი ელექტრონიკა, შეიძლება დაგჭირდეთ მათი შეცვლა. თუ თქვენ აამაგრებთ პოზიციის სენსორს ჩიპით ქუდის ზედა ნაწილისკენ და დაფაზე დაბეჭდილი ისარი X– ის გვერდით მიმართულია ქუდის წინ, თქვენ უნდა ნახოთ შემდეგი:
- მოედანი თავით აკოცებს
- როლი თავზე იხრება, მაგ. შეეხეთ თქვენს ყურს თქვენს მხარზე
- უი რომელი მიმართულებაა. თქვენ წინაშე ხართ (ჩრდილოეთი, დასავლეთი და ა.
თუ თქვენი დაფა დამონტაჟებულია სხვა ორიენტაციაში, თქვენ უნდა შეცვალოთ Pitch/Roll/Yaw, რათა მოიქცნენ ისე, როგორც თქვენ გსურთ.
Roll პარამეტრების შესაცვლელად შეგიძლიათ შეცვალოთ შემდეგი #განსაზღვრული მნიშვნელობები:
- ROLLOFFSET: თქვენი ქუდი სტაბილური და რაც შეიძლება ცენტრირებული იყოს, თუ Roll არ არის 0, შეცვალეთ ეს სხვაობით. ანუ თუ თქვენ ხედავთ როლს -20 საათზე, როდესაც თქვენი ქუდი ცენტრშია, გააკეთეთ ეს 20.
- ROLLMAX: მაქსიმალური მნიშვნელობა როლის გაზომვისათვის. ყველაზე ადვილია ქუდის ტარება და მარჯვენა ყურის გადატანა მარჯვენა მხრისკენ. სერიული მონიტორის გამოყენებისას თქვენ დაგჭირდებათ გრძელი USB კაბელი.
- ROLLMIN: ყველაზე დაბალი მნიშვნელობა როლის გაზომვისთვის გამოსაყენებლად, როდესაც თავი დახრილია მარცხნივ
ანალოგიურად, Pitch– ისთვის:
- MAXPITCH - მაქსიმალური მნიშვნელობა როდესაც ეძებთ მაღლა
- MINPITCH - მინიმალური მნიშვნელობა, როდესაც ქვემოდან იყურები
- PITCHCENTER - სიმაღლის მნიშვნელობა, როდესაც თქვენ პირდაპირ იყურებით წინ
თუ ფაილის ზედა ნაწილში SERIALDEBUG დაყენებული გაქვთ true, თქვენ უნდა ნახოთ სერიული მონიტორის Roll/Pitch/Yaw გამომავალი მიმდინარე მნიშვნელობები, რათა დაგეხმაროთ ამ მნიშვნელობების შეცვლაში.
სხვა პარამეტრები, რომელთა შეცვლაც გსურთ
- MAX_LED_DELAY 35 - ყველაზე ნელი, რომლის გადაადგილებაც LED ნაწილაკს შეუძლია. ეს არის მილიწამებში. ეს არის დაგვიანება ერთი LED– დან მეორეზე სტრიქონში გადასვლისგან.
- MIN_LED_DELAY 10 - მარხვა, რომლის გადაადგილებაც შეუძლია LED ნაწილაკს. როგორც ზემოთ არის მილიწამებში.
დასკვნა
თუ თქვენ უკვე შორს წახვედით, უნდა გქონდეთ სრულად ფუნქციონირებადი და სახალისო LED ქუდი! თუ გსურთ მეტი გააკეთოთ, მომდევნო გვერდზე მოცემულია დამატებითი ინფორმაცია პარამეტრების შეცვლისა და საკუთარი საქმის კეთების შესახებ. ასევე ზოგიერთი ახსნა იმისა, თუ რას აკეთებს ჩემი დანარჩენი კოდი.
ნაბიჯი 5: მოწინავე და არჩევითი: კოდის შიგნით
ზემოქმედების და ბრუნვის გამოვლენა
ზემოქმედების/დატრიალების გამოვლენა ხდება BNO055- ის მაღალი G სენსორული ფუნქციების გამოყენებით. თქვენ შეგიძლიათ შეცვალოთ მისი მგრძნობელობა შემდეგი ხაზებით initBNO055 ():
- ხაზი #316: BNO055_ACC_HG_DURATION - რამდენ ხანს უნდა გაგრძელდეს ღონისძიება
- ხაზი #317: BNO055_ACC_HG_THRESH - რამდენად მძიმე უნდა იყოს ზემოქმედება
- ხაზი #319: BNO055_GYR_HR_Z_SET - ბრუნვის სიჩქარის ბარიერი
- ხაზი #320: BNO055_GYR_DUR_Z - რამდენ ხანს უნდა გაგრძელდეს როტაცია
ორივე მნიშვნელობა არის 8 ბიტიანი ორობითი, ამჟამად გავლენა არის B11000000, რაც არის 192 255 – დან.
როდესაც ზემოქმედება ან დატრიალება გამოვლინდება, BNO055 ადგენს მნიშვნელობას, რომელსაც კოდი ეძებს მარყუჟის დასაწყისში:
// ნებისმიერი გამომწვევი გაჩენის გამოვლენა, ანუ მაღალი G ბაიტის გამო intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS); if (intStatus> 8) {გავლენა (); } else if (intStatus> 0) {დატრიალება (); }
მოძებნეთ კოდში ზემოთ არსებული ბათილი ზემოქმედების () ხაზი, რათა შეცვალოთ ქცევა ზემოქმედებაზე, ან ბათილი დატრიალება () დატრიალების ქცევის შესაცვლელად.
დამხმარეები
მე შევქმენი მარტივი დამხმარე ფუნქცია (void setAllLeds ()) ყველა LED- ების სწრაფად დაყენებისათვის ერთ ფერში. ერთი გამოიყენეთ ყველა მათგანის გამორთვისთვის:
setAllLeds (CRGB:: შავი);
ან შეგიძლიათ აირჩიოთ FastLED ბიბლიოთეკის მიერ აღიარებული ნებისმიერი ფერი:
setAllLeds (CRGB:: წითელი);
ასევე არსებობს fadeAllLeds () ფუნქცია, რომელიც დაბნელებს ყველა LED- ს 25%-ით.
ნაწილაკების კლასი
გაყვანილობის გასაადვილებლად, მინდოდა გამოვიყენო LED- ების ერთი სტრიქონი, მაგრამ მომექცნენ, რომ იქცევიან მრავალჯერადი სიმების მსგავსად. ვინაიდან ეს იყო ჩემი პირველი მცდელობა, მინდოდა რაც შეიძლება მარტივი ყოფილიყო, ასე რომ მე ვიმუშავებ ერთ სტრიქონად ორ ნაწილად, ხოლო შუა LED (ებ) ი იქ იქნება გაყოფილი. ვინაიდან ჩვენ შეიძლება გვქონდეს ლუწი რიცხვი ან კენტი რიცხვი, ჩვენ უნდა გავითვალისწინოთ ეს. ვიწყებ გლობალური ცვლადებით:
/ * * ცვლადი და კონტეინერები LED- ებისთვის */ CRGB leds [NUM_LEDS]; სტატიკური ხელმოუწერელი int curLedDelay = MAX_LED_DELAY; სტატიკური int centerLed = NUM_LEDS / 2; სტატიკური int maxLedPos = NUM_LEDS / 2; სტატიკური bool oddLeds = 0; სტატიკური ბოულის ნაწილაკიDir = 1; static bool speedDir = 1; ხელმოუწერელი გრძელი dirCount; ხელმოუწერელი გრძელი ელფერი;
და რამდენიმე კოდი კონფიგურაციაში ():
თუ (NUM_LEDS % 2 == 1) {oddLeds = 1; maxLedPos = NUM_LEDS/2; } else {oddLeds = 0; maxLedPos = NUM_LEDS/2 - 1; }
თუ ჩვენ გვაქვს კენტი რიცხვები, ჩვენ გვსურს გამოვიყენოთ 1/2 წერტილი შუაში, წინააღმდეგ შემთხვევაში გვინდა 1/2 წერტილი - 1. ამის დანახვა ადვილია 10 ან 11 LED- ით:
- 11 LED: 11/2 მთელი რიცხვებით უნდა შეფასდეს 5 -მდე და კომპიუტერები ითვლიან 0. -დან. ასე რომ, 0 - 4 არის ერთი ნახევარი, 6 - 10 არის მეორე ნახევარი და 5 მათ შორის. ჩვენ ვმუშაობთ #5 -ში ამ შემთხვევაში, თითქოს ის ორივეს ნაწილია, ანუ ეს არის #1 LED- ების ორივე ვირტუალური სტრიქონისთვის
- 10 LED: 10/2 არის 5. მაგრამ მას შემდეგ, რაც კომპიუტერები ითვლიან 0 -დან, ჩვენ უნდა ამოვიღოთ ერთი. შემდეგ გვაქვს 0 - 4 ერთი ნახევრისთვის, ხოლო 5 - 9 მეორისთვის. #1 პირველი ვირტუალური სტრიქონისთვის იქნება 4, ხოლო #1 მეორე ვირტუალური სტრიქონისთვის იქნება #5.
შემდეგ ჩვენს ნაწილაკების კოდში ჩვენ უნდა გავაკეთოთ გარკვეული დათვლა ჩვენი საერთო პოზიციიდან LED სტრიქონზე არსებულ პოზიციებზე:
if (oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } else {Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; }
კოდს ასევე აქვს პირობები, როდესაც ნაწილაკს შეუძლია შეცვალოს მიმართულებები, ამიტომ ჩვენ ასევე უნდა გავითვალისწინოთ ეს:
if (particleDir) {if ((currPos == NUM_LEDS/2) && oddLeds) {currPos = 0; } else if ((currPos == NUM_LEDS/2 - 1) && (! oddLeds)) {currPos = 0; } else {currPos ++; }} სხვა {if ((currPos == 0) && oddLeds) {currPos = centerLed; } else if ((currPos == 0) && (! oddLeds)) {currPos = centerLed - 1; } else {currPos--; }}
ჩვენ ვიყენებთ დანიშნულ მიმართულებას (particleDir), რომ გამოვთვალოთ რომელი LED უნდა იყოს შემდეგ განათებული, მაგრამ ჩვენ ასევე უნდა გავითვალისწინოთ, მივაღწიეთ LED სტრიქონის რეალურ დასასრულს, ან ჩვენს ცენტრალურ წერტილს, რომელიც ასევე ასრულებს დასასრულს თითოეული ვირტუალური სტრიქონი.
მას შემდეგ რაც ამ ყველაფერს გავარკვევთ, საჭიროების შემთხვევაში ვანთებთ შემდეგ შუქს:
if (particleDir) {if (oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } else {Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; }} სხვა {if (oddLeds) {Pos1 = centerLed - currPos; Pos2 = centerLed + currPos; } else {Pos1 = centerLed - currPos; Pos2 = (centerLed -1) + currPos; }} leds [Pos1] = CHSV (currHue, 255, 255); leds [Pos2] = CHSV (currHue, 255, 255); FastLED.show ();}
რატომ ხდება ეს საერთოდ კლასი? როგორც არის, ეს საკმაოდ მარტივია და ნამდვილად არ სჭირდება კლასში ყოფნას. თუმცა, მე მაქვს სამომავლო გეგმები კოდის განახლების მიზნით, რათა მოხდეს ერთზე მეტი ნაწილაკის ერთდროულად წარმოქმნა და ზოგიერთი პირიქით მუშაობს, ზოგი კი წინ მიიწევს. მე ვფიქრობ, რომ არსებობს მართლაც დიდი შესაძლებლობები მრავალი ნაწილაკის გამოყენებით ტრიალის გამოვლენისთვის.
გირჩევთ:
ხელნაკეთი ხელნაკეთი ლამაზი ნათურა: 5 ნაბიჯი (სურათებით)
წვრილმანი ხელნაკეთი ლამაზი ლამპა: მე ვარ კოლეჯის სტუდენტი, რომელიც ამჟამად გადის კლასს სქემებზე. გაკვეთილის მსვლელობისას, მე მქონდა იდეა გამომეყენებინა ძალიან მარტივი სქემა დაწყებითი სკოლის მოსწავლეებისთვის განკუთვნილი პრაქტიკული პროექტის შესაქმნელად, სახალისო, შემოქმედებითი და ინფორმაციული. ეს პროექტი მოიცავს
ქუდი არა ქუდი - ქუდი იმ ადამიანებისთვის, ვინც ნამდვილად არ ატარებს ქუდებს, მაგრამ სურთ ქუდის გამოცდილება: 8 ნაბიჯი
ქუდი არა ქუდი - ქუდი მათთვის, ვინც ნამდვილად არ ატარებს ქუდს, მაგრამ ისურვებდა ქუდის გამოცდილებას: მე ყოველთვის ვისურვებდი, რომ მე ვყოფილიყავი ქუდი, მაგრამ მე არასოდეს მიპოვია ქუდი, რომელიც ჩემთვის მუშაობს. ეს " ქუდი არაა ქუდი, " ან მომხიბლავი, როგორც მას ეძახიან არის ჩემი ქუდის პრობლემის ზედა ქერქის გადაწყვეტა, რომელშიც შეიძლება დავესწრო კენტუკის დერბის, ვაკუუმს
გააკეთეთ ლამაზი საიუველირო ყუთი Fusion– ის გამოყენებით: 7 ნაბიჯი (სურათებით)
გააკეთე ლამაზი საიუველირო ყუთი Fusion– ის გამოყენებით: ეს არის ერთ – ერთი ყველაზე საყვარელი რამ, რაც მე გავაკეთე Fusion– თან ერთად. მე გამოვიყენე მინა, როგორც მასალა, რადგან ის დამეხმარება გადახედვაში. ვიცი შენი ძვირფასეულობის ძებნის ტკივილი;)
ლამაზი DIY Bluetooth სპიკერის აშენება: 9 ნაბიჯი (სურათებით)
მშვენიერი წვრილმანი Bluetooth სპიკერის მშენებლობა: უკვე დიდი ხანია რაც რაღაც მაგარი ავაშენე. ახლა, როდესაც საშობაო არდადეგებია, ვფიქრობდი ამის გაკეთება. Bluetooth დინამიკები არ არის იაფი. და თუ გსურთ ბრენდირებული/კარგი ჟღერადობა, დაიწყეთ ფულის შეგროვება სულ მცირე ერთი თვით ადრე. იაფი
ლამაზი საწოლის ღამის განათება: 6 ნაბიჯი (სურათებით)
ლამაზი საწოლის ღამის შუქები: ეს არის მომავლის საწოლის განათების სისტემა! ისინი ირთვება, როდესაც საწოლიდან გადიხარ შუა ღამეს და ითიშება, როდესაც შენს კომფორტულ ოცნების მანქანაში შედიხარ. ასე რომ აღარ არის ღამის უბედური შემთხვევები და დამსხვრეული თითები !! ეს ძალიან ადვილი მოსაპოვებელია