Სარჩევი:

Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 ნაბიჯი (სურათებით)
Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 ნაბიჯი (სურათებით)
ვიდეო: Arduino & Neopixel Coke Bottle Party Light 2024, ნოემბერი
Anonim
Image
Image

ასე რომ, ჩემმა შვილმა დონმა შენიშნა ძალიან მაგარი წვეულების შუქი, რომელიც დამზადებულია ძველი კოქსის ბოთლებისგან და Glow Sticks- ის გუმბათოვანი შიგნიდან და მეკითხება, შეგვიძლია თუ არა მისი მომავალი სკოლის გამოცდების დასრულება PAYYY !!! დარწმუნებით ვამბობ, მაგრამ ნუთუ არ გირჩევნიათ ისეთი ადაფრუტის ნეოპიქსელის ბეჭდები, რომელთა შესახებაც ვკითხულობდით … ის ცარიელ მზერას მაძლევს. ფაქტია, რომ მან არ იცის რაზე ვსაუბრობ, მაგრამ მამამ აღმოაჩინა შესაძლებლობა, ეთამაშა იმ ნეოპიქსელურ ბეჭდებს, რომლებსაც ის კითხულობდა და ჩვენ ყველამ ვიცით ერთ -ერთი იმ 10 მიზეზის ერთ -ერთი, რის გამოც მამათა შვილები შვილობენ. საბაბი მაგარი გაჯეტებით თამაშისთვის, რომლებიც ყველას ეუბნება, რომ მათი შვილებისთვისაა.

ეს არის სუპერ მარტივი პროექტი, რომელიც მართლაც მშვენივრად გამოიყურება. ჩვენ ავაშენეთ 3 ძველი კოქსის ბოთლი, ხის ფირფიტა და სათამაშო მოედნის საყრდენი - სარდაფში მოთავსებული ნივთები - არდუინოსთან ერთად (ჩვენს შემთხვევაში ლეონარდო, მაგრამ ნებისმიერი Genuino დაფა გააკეთებს!) და სამი ნეოპიქსელის რგოლს. რა მე შევუკვეთე 9-LED ბეჭედი, მაგრამ დასრულდა 12-LED ბეჭედი იმავე ფასად. რაც ტკბილი იყო, მაგრამ ნიშნავდა ჭაბურღილების გადაკეთებას-12-LED რგოლები 35 მმ სიგანეა, 23 მმ-ისგან განსხვავებით. რაც დაგჭირდებათ:

  • Genuino/Arduino დაფა (ჩვენ გამოვიყენეთ ლეონარდო, მაგრამ თითქმის ნებისმიერი დაფა ამას გააკეთებს)
  • 3 ნეოპიქსელის რგოლი (თითოეული 12 LED): მიიღეთ ისინი ადაფრუტიდან და მხარი დაუჭირეთ მათ
  • 1000 µf 6.3 ვ ან უკეთესი კონდენსატორი
  • 300-500 ohm რეზისტორი
  • ხის ფირფიტა, ან ჯართის კვადრატი, ან ყველაფერი, რისი საშუალებითაც შეგიძლიათ დააყენოთ ნეოპიქსელები და დადგით კოქსის ბოთლები თავზე
  • ფირფიტის მთაზე რაღაც ფორმა - სათამაშო მოედნის ფრჩხილი ჩვენთვის მშვენივრად მუშაობდა
  • მე –9 კედლის მეჭეჭა
  • 40 მმ-იანი ხვრელი
  • ჭანჭიკები, თხილი, საყელურები, შუალედები
  • მყარი ძირითადი მავთული
  • Soldering რკინის და solder
  • პურის დაფა
  • პლასტიკური ჩანთა არდუინოსთვის. თქვენ შეგიძლიათ გამოხვიდეთ და იყიდოთ მართლაც ლამაზი პლასტმასის ქილა, რომელიც დამზადებულია მილიონწლიანი ნავთობისგან, რომელიც გაბურღულია მიწიდან მყიფე გარემოში და დამზადებულია პლანეტის მეორე მხარეს და კონტეინერში იგზავნება თქვენს ახლომდებარე საწყობში. ნავსადგურები სრულყოფილად არის განლაგებული და მიაწოდებს თქვენს კარს ფურგონით, რომელიც ნახშირორჟანგს ატმოსფეროში ასხამს. ან შეგიძლია გააკეთო ის, რაც მე გავაკეთე და გამოიყენო ძველი გადაყრილი პლასტმასის ყუთი.. ამ შემთხვევაში მედიცინის კაბინეტში მოთავსებული მადაგასკარის ბენდის დამხმარე ყუთი… და გახვრიტე მასში რამდენიმე ხვრელი. აქ მთავრდება ლექცია. Მოდი გავაკეთოთ…

ნაბიჯი 1: შექმენით ბაზა

გააკეთე ბაზა
გააკეთე ბაზა
გააკეთე ბაზა
გააკეთე ბაზა

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

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

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

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

შემდეგ ჩვენ სპრეის შეღებვა მთლიანად გოთური შავი.

ნაბიჯი 2: ნეოპიქსელის ბეჭდების მომზადება

ნეოპიქსელის ბეჭდების მომზადება
ნეოპიქსელის ბეჭდების მომზადება

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

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

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

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

ნაბიჯი 3: გაყვანილობა

გაყვანილობა
გაყვანილობა

გაააქტიურეთ ის, როგორც მან ზემოთ გაყინვა-არდუინოს პინ 6 ატარებს მონაცემებს პირველ რგოლზე, ამ ბეჭედიდან მონაცემების გადაცემა ხდება მომდევნო მონაცემებში, ამ მონაცემებიდან-ერთი მონაცემები ბოლო ბეჭდის შესახებ. თქვენ არ გჭირდებათ საბოლოო ბეჭდის მონაცემების ამოღება.

1000 μf ტევადობა მიდის პურის დაფის დადებით და უარყოფით რელსებს შორის. ეს თავსახური იცავს რგოლებს სიმძლავრის ვარდნისგან და რეკომენდებულია Adafruit NeoPixel Uberguide– ის საუკეთესო პრაქტიკული განყოფილებით. პირველი ნეოპიქსელის მონაცემების რეზისტორი ასევე რეკომენდირებულია ადაფრუტის მიერ-ეს არის 1K Fritzing– ში, მაგრამ რეკომენდებული წინააღმდეგობაა 300-500 Ohms.

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

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

"loading =" ზარმაცი "აღნიშნა, რომ ჩემს შვილს სურდა ამის მუსიკალურ-რეაქტიული ვერსია. მის მე -18 დაბადების დღემდე დასჭირდა ამის მიღწევა, მაგრამ აქ არის!

დამატებითი აღჭურვილობა:

1 ერთჯერადი ბოძი, ორმაგი სროლის გადამრთველი 1 ავტომატური მომატების კონტროლის მიკროფონი (მე გამოვიყენე AdaFruit's MAX9184) 1 1uF-100uF კონდენსატორი (ნებისმიერი მნიშვნელობა)

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

მე მინდოდა მორევის ტესტის ნიმუშის ან მუსიკის გამოყენების შესაძლებლობა, ამიტომ მე შევაერთე VIN- ზე გადართვის ცენტრალური ბილიკი და ერთი მიმაგრება 4 -ის მეოთხეზე, მეორე კი ლეონარდოს მე -8ზე. იმ ქინძისთავების ტესტირებისას HIGH ან LOW ჩვენ შეგვიძლია ვიცოდეთ რომელ მდგომარეობაშია გადამრთველი და შესაბამისად განვსაზღვროთ კოდი.

ნაბიჯი 7: მიკროფონის გაყვანილობა

მიკროფონის გაყვანილობა
მიკროფონის გაყვანილობა

მიაწოდეთ მიკროფონის შეყვანა 1-100µF კონდენსატორის საშუალებით ანალოგურ ქინძისთავში 0. თუ თქვენი კონდენსატორი პოლარიზებულია, გასასვლელი პინი მიდის დადებით მხარეს (მწვანე მავთული).

მადლობა CodeGirlJP- ს მისი Trinket-Color-by-Sound რუტინისთვის, რომელიც ქვემოთ მოვიყვანე:

// ხმის გააქტიურებული LED- ები Arduino და NeoPixels– ით

#ჩართეთ

#განსაზღვრეთ MIC_PIN A0 // ლეონარდოზე მიმაგრებულია მიკროფონი a0 pin- ზე

#განსაზღვრეთ LED_PIN 6 // NeoPixel LED strand ერთვის პინ 6 ლეონარდოზე #განსაზღვრეთ N_PIXELS 36 // პიქსელების რაოდენობა LED ძაფში !!!!!! დაარეგულირეთ პიქსელების რაოდენობა თქვენს კონფიგურაციაში. ეს სწორია ნეოპიქსელის 3 რგოლზე !!!!!! #განსაზღვრეთ N 100 // ნიმუშების რაოდენობა ყოველ ჯერზე წასაკითხად ნიმუშებს ეწოდება #განსაზღვრეთ ქრებოდა დაგვიანება 5 // თითოეული გაცვეთილი დროის გადადება #განსაზღვრეთ ხმაური დონე 30 // საშუალო მიკროფონის ხმაურის ფერდობის დონე ხმის გარეშე

// NeoPixel ზოლის ინიციალიზაცია ზემოთ მითითებული მნიშვნელობებით:

Adafruit_NeoPixel ზოლები = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

int ნიმუშები [N]; // შენახვის ნიმუში კოლექცია კომპლექტი

int პერიოდი ფაქტორი = 0; // თვალყური ადევნეთ ms- ის რაოდენობას პერიოდის გამოთვლისთვის int t1 = -1; // გამოვლენილი ფერდობის დრო> 100. int T; // პერიოდი დროებს შორის გაფართოვდა მილიწამამდე int ფერდობზე; // ორი შეგროვებული მონაცემთა ნიმუშის წერტილის დახრილობა ბაიტი პერიოდიChanged = 0; const int SwitchPinMusic = 4; // ჩამრთველი გადამრთველის პოზიციისთვის მუსიკა-მგრძნობიარობა const int SwitchPinSwirl = 8; // ჩამრთველი პოზიციის გადასატანად Test Pattern (swirl) int MusicbuttonState = 0; // გამორთული ლოგიკური ცვლადი მუსიკალური მგრძნობელობისთვის

// არდუინოს დაყენების მეთოდი

void setup () {

ზოლები. დაწყება ();

ledsOff (); დაგვიანება (500); ჩვენების ფერი (ბორბალი (100)); ზოლები. ჩვენება (); დაგვიანება (500); oddWheel (საჭე (100)); ზოლები. ჩვენება (); დაგვიანება (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, გადართული, დაცემული);

}

// არდუინოს მარყუჟის მეთოდი

void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // მაღალი თუ გადართულია მუსიკის მგრძნობელობაზე MusicbuttonState = digitalRead (SwitchPinMusic); // HIGH if გადართვა Test pattern while (SwirlbuttonState == LOW) {readSamples (); // მუსიკის შერჩევის რუტინის გაშვება SwirlbuttonState = digitalRead (SwitchPinSwirl); // შეამოწმეთ შეცვლილია თუ არა გადამრთველი} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); ხოლო (SwirlbuttonState == HIGH) {ცეკვა (); // გაუშვით swirly test pattern routine SwirlbuttonState = digitalRead (SwitchPinSwirl); // შეამოწმეთ შეცვლილია თუ არა გადამრთველი

}

}

void Dance () {

while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (ზოლები. ფერი (0, 255, 0), 50); // Green SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (ზოლები. ფერი (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe(strip. Color(0, 0, 0, 255), 50); // თეთრი RGBW // გაგზავნეთ თეატრის პიქსელის დევნა… SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (ზოლები. ფერი (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (ზოლები. ფერი (127, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (ზოლები. ფერი (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); ცისარტყელა (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); ცისარტყელა ველოსიპედი (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChaseRainbow (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // მიკროფონის მონაცემების წაკითხვა და დამუშავება void readSamples () {for (int i = 0; i0) {slope = sample - sample [i -1]; } else {ფერდობ = ნიმუშები - ნიმუშები [N -1]; } // შეამოწმეთ თუ არა ფერდობზე მეტი ხმაურის დონე - ხმა, რომელიც არ არის ხმაურის დონეზე გამოვლენილი, თუ (აბს (ფერდობზე)> ხმაურის დონე) {თუ (დახრილობა <0) {გამოთვლა პერიოდი (ი); if (periodChanged == 1) {displayColor (getColor (T)); }}} სხვა {ledsOff (); // TheaterChaseRainbow (50); } periodFactor += 1; დაგვიანება (1); }}

ბათილად გამოთვლა პერიოდი (int i)

{if (t1 == -1) {// t1 არ არის დაყენებული t1 = i; } else {// t1 შეიქმნა ასე calc პერიოდი int პერიოდი = periodFactor*(i - t1); პერიოდი შეიცვალა = T == პერიოდი? 0: 1; T = პერიოდი; //Serial.println(T); // გადატვირთეთ t1 ახალი i მნიშვნელობა t1 = i; periodFactor = 0; }}

uint32_t getColor (int პერიოდი)

{თუ (პერიოდი == -1) დაბრუნების ბორბალი (0); წინააღმდეგ შემთხვევაში, თუ (პერიოდი> 400) დაბრუნდება ბორბალი (5); სხვა მხრივ ბორბალი (რუკა (-1*პერიოდი, -400, -1, 50, 255)); }

void fadeOut ()

{for (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); ზოლები. ჩვენება (); // განახლების ზოლის დაყოვნება (fadeDelay); periodFactor += fadeDelay; }}

void fadeIn ()

{strip.setBrightness (100); ზოლები. ჩვენება (); // განახლების ზოლები // fade color in for (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); //strip.show (); // განახლების ზოლის დაყოვნება (fadeDelay); periodFactor+= fadeDelay; }}

void ledsOff ()

{fadeOut (); for (int i = 0; i

ბათილი ჩვენება ფერი (uint32_t ფერი)

{for (int i = 0; i

void oddWheel (uint32_t ფერი)

{for (int j = 0; j <256; j ++) {// დააბრუნეთ ყველა 256 ფერი ბორბალში for (int q = 0; q <3; q ++) {for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, საჭე ((i+j) % 255)); // ჩართეთ ყოველი მესამე პიქსელი} strip.show ();

დაგვიანება (1);

for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // გამორთეთ ყოველი მესამე პიქსელი}}} fadeIn (); }

// შეავსეთ წერტილები ერთმანეთის მიყოლებით ფერით

void colorWipe (uint32_t c, uint8_t ლოდინი) {for (uint16_t i = 0; i

ბათილი ცისარტყელა (uint8_t ლოდინი) {

uint16_t i, j;

for (j = 0; j <256; j ++) {for (i = 0; i

// ოდნავ განსხვავებული, ეს ცისარტყელას თანაბრად ანაწილებს მთელ ტერიტორიაზე

void rainbowCycle (uint8_t ლოდინი) {uint16_t i, j;

for (j = 0; j <256*5; j ++) {// ყველა ფერის 5 ციკლი საჭეზე (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); დაგვიანება (ლოდინი); }}

// თეატრის სტილის მცოცავი შუქები.

void theaterChase (uint32_t c, uint8_t ლოდინი) {for (int j = 0; j <10; j ++) {// გააკეთეთ 10 ციკლი დევნისათვის (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // ყოველი მესამე პიქსელის ჩართვა} strip.show ();

დაგვიანება (ლოდინი);

for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // გამორთეთ ყოველი მესამე პიქსელი}}}}

// თეატრის სტილის მცოცავი შუქები ცისარტყელას ეფექტით

void theaterChaseRainbow (uint8_t ლოდინი) {for (int j = 0; j <256; j ++) {// ციკლის ყველა 256 ფერი ბორბალზე (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255)); // ყოველი მესამე პიქსელის ჩართვა} strip.show ();

დაგვიანება (ლოდინი);

for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // გამორთეთ ყოველი მესამე პიქსელი}}}}

// შეიყვანეთ მნიშვნელობა 0 -დან 255 -მდე, რომ მიიღოთ ფერის მნიშვნელობა.

// ფერები არის გარდამავალი r - g - b - უკან r. uint32_t ბორბალი (ბაიტი WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {დაბრუნების ზოლი. ფერი (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; დაბრუნების ზოლი. ფერი (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; დაბრუნების ზოლი. ფერი (WheelPos * 3, 255 - WheelPos * 3, 0); }

void გადართულია () {

ზოლები. ჩვენება (); readSamples (); }

სანამ კომენტარებში მოვიკლავდი (დაიმახსოვრე იყავი კარგი პოლიტიკა !!) მივხვდი მას შემდეგ რაც ავტვირთე ეს რამდენად დაუდევარია ჩემი კოდი. არ არის საჭირო მუდმივად შეამოწმოთ ორივე Pin 4 და Pin 8 HIGH. ვინაიდან გადამრთველი არის ერთ ბოძზე ორმაგი სროლა, ერთის მნიშვნელობა შეიძლება გამოითვალოს მეორისგან: თქვენ მხოლოდ ერთი უნდა შეამოწმოთ. ასე რომ თქვენ შეგიძლიათ გაიაროთ და წაშალოთ ყველა მითითება MusicButtonState– ის კითხვისა და წერის შესახებ და უბრალოდ უფრო ეფექტურად გაატაროთ მთელი საქმე SwirlButtonState– ის ტესტირებით, თუ მეხსიერება არ გაქვთ ან სხვა რუტინებს აგრძელებთ. მაგრამ ზემოთ კოდი მუშაობს.

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

ისიამოვნეთ!

გირჩევთ: