Სარჩევი:

ციკლონი LED არკადული თამაში: 4 ნაბიჯი
ციკლონი LED არკადული თამაში: 4 ნაბიჯი

ვიდეო: ციკლონი LED არკადული თამაში: 4 ნაბიჯი

ვიდეო: ციკლონი LED არკადული თამაში: 4 ნაბიჯი
ვიდეო: ციკლონი უკვე საქართველოშია 2024, სექტემბერი
Anonim
Image
Image
დააინსტალირეთ ფიქსაციაში
დააინსტალირეთ ფიქსაციაში

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

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

ეს სასწავლო იყო უზარმაზარი რესურსი ჩემი ძირითადი კოდირებისთვის.

ნაბიჯი 1: შეაგროვეთ მასალები

  • ძირითადი კომპონენტები:

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

      • 5V 3A LED- ებისთვის
      • 9V 1A არდუინოსთვის
  • ჩარჩო:

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

    • სათადარიგო გაყვანილობა თქვენი წრისთვის
    • 10K (ჩამოსაშლელი რეზისტორი ჩამრთველისთვის) და 470 ohm (LED მავთულხლართებზე)
    • გაბურღეთ ხვრელების შესაქმნელად თქვენი LED- ები და შექმენით ნებისმიერი საჭირო ხვრელი თქვენს მოწყობილობაში მავთულის გასავლელად
    • Soldering რკინის soldering თქვენი ჩართვა PCB
    • ცხელი წებოს იარაღი LED- ების დასაფიქსირებლად თქვენს მოწყობილობაზე
    • Velcro ან ჩარჩოს ერთად უზრუნველყოფის რაიმე საშუალება
    • შუასადებები არჩევითია ხვრელებისათვის, რომლებიც გაბურღულია მავთულის გასავლელად

ნაბიჯი 2: ატვირთეთ კოდი

დარწმუნდით, რომ გადმოწერეთ და დაამატეთ "FastLED" ბიბლიოთეკა

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

// ციკლონის თამაში

#მოიცავს "FastLED.h" // 50-მდე #განსაზღვრეთ NUM_LEDS 40 #განსაზღვრეთ CENTER_LED 21 #განსაზღვრეთ DATA_PIN 7 #განსაზღვრეთ LED_TYPE WS2811 #განსაზღვრეთ COLOR_ORDER RGB // დიაპაზონი 0-64 #განსაზღვრეთ სიკაშკაშე 50 // სირთულის დონის განსაზღვრა #define EASY 1 #განსაზღვრეთ საშუალო 2 #განსაზღვრეთ HARD 3 #განსაზღვრეთ ON_SPEED 4 #განსაზღვრეთ SONIC_SPEED 5 #განსაზღვრეთ ROCKET_SPEED 6 #განსაზღვრეთ LIGHT_SPEED 7 #განსაზღვრეთ MISSION_IMPOSSIBLE 8 // სირთულის დაწყება სირთულეში = 1; // LED– ების მასივის განსაზღვრა CRGB leds [NUM_LEDS]; // მოიგო მოთამაშემ ეს რაუნდი? ეს ტეგი გამოიყენება სირთულის პარამეტრებისთვის. bool wonThisRound = ყალბი; // ველოსიპედის განათების საწყისი მდებარეობა int LED მისამართი = 0; // თამაში გადის? bool Playing = true; // ეს არის პირველი გამარჯვება? bool CycleEnded = ჭეშმარიტი; // ღილაკის დეტალები const int buttonPin = 9; int ღილაკი სახელმწიფო = 0; // led ბიბლიოთეკის ინიციალიზაცია და arduino ფუნქციები void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); სერიული.დაწყება (9600); } // ხორცი და კარტოფილი // ორი რეჟიმი - თამაში და თამაშის დასრულება void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {დაკვრა = ყალბი; // მომხმარებელმა დააჭირა ღილაკს და LED შეჩერდა გამარჯვებულ მისამართზე. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: შავი; } leds [CENTER_LED] = CRGB:: წითელი; leds [LEDaddress] = CRGB:: მწვანე; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LED მისამართი); // პოულობს მანძილს განათებულ led და led ცენტრს შორის, თუ (diff == 0) {wonThisRound = true; // მოთამაშემ წარმატებით დაამარცხა დონე თუ (სირთულე! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (სირთულე == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } სირთულე = 0; } გაზრდა სირთულე (); wonThisRound = ყალბი; } else {დაგვიანებით (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LED მისამართი = 0; დაგვიანება (250); buttonState = digitalRead (ღილაკი პინი); if (buttonState == LOW) {დაკვრა = ჭეშმარიტი; }} // PLAYING if (დაკვრა) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: შავი; // გამორთავს ყველა leds} leds [CENTER_LED] = CRGB:: წითელი; // ადგენს ცენტრში led ფერი მწვანე leds [LEDaddress] = CRGB:: Green; // აყენებს cyling led ფერი წითელს FastLED.show (); // ინიციალიზებს სინათლის ციკლის LED მისამართს ++; // განათავსებს სინათლის ციკლს ერთ დროს ერთდროულად, თუ (LEDaddress == NUM_LEDS) {LEDaddress = 0; } დაგვიანებით (getTime (სირთულე)); buttonState = digitalRead (ღილაკი პინი); if (buttonState == HIGH) {დაკვრა = ყალბი; CycleEnded = ჭეშმარიტი; }}} // დონის პარამეტრები int getTime (int diff) // აბრუნებს დროის შეფერხებას led მოძრაობის სიძნელეზე {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; შესვენება; საქმე საშუალო: timeValue = 80; შესვენება; საქმე HARD: timeValue = 60; შესვენება; საქმე ON_SPEED: timeValue = 40; შესვენება; საქმე SONIC_SPEED: timeValue = 30; შესვენება; საქმე ROCKET_SPEED: timeValue = 20; შესვენება; საქმე LIGHT_SPEED: timeValue = 13; შესვენება; საქმე MISSION_IMPOSSIBLE: timeValue = 7; } დაბრუნების დროValue; // დააბრუნეთ შეფერხების თანხა} // მოგების სირთულე გაზრდის პარამეტრებს ბათილად გაზრდის სირთულე () {if (სირთულე! = MISSION_IMPOSSIBLE && wonThisRound) {სირთულე ++; }} // დაკარგული LED ჩვენება void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); დაგვიანება (500); fill_solid (leds, NUM_LEDS, CRGB:: შავი); FastLED.show (); დაგვიანება (500); } // მოიგო LED ჩვენება void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {სტატიკური uint8_t ელფერი = 0; Serial.print ("x"); // პირველი გადაიტანეთ led ერთი მიმართულებით for (int i = 0; i = 0; i--) {// დააყენეთ i'th led წითელი leds = CHSV (ელფერი ++, 255, 255); // აჩვენეთ leds FastLED.show (); // ახლა, როდესაც ჩვენ ვაჩვენეთ leds, გადატვირთეთ i'th led შავი // leds = CRGB:: შავი; fadeall (); // დაელოდეთ ცოტა ხანს, სანამ ჩვენ შემოვივლით და კვლავ გავიმეოროთ (10); }}

ნაბიჯი 3: დააინსტალირეთ Fixture- ში

დააინსტალირეთ ფიქსაციაში
დააინსტალირეთ ფიქსაციაში
დააინსტალირეთ ფიქსაციაში
დააინსტალირეთ ფიქსაციაში

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

Velcro იყო ძალიან სასარგებლო ასევე LED მოწყობილობის ელექტრონიკის საბინაო მოწყობილობის უზრუნველსაყოფად. მე ასევე ვიყენებდი velcro არდუინოს. ეს ძალიან მოსახერხებელი გახდა Arduino– ს გამოსაყვანად, თუკი ოდესმე მომინდა კოდის შეცვლა.

გირჩევთ: