Mündəricat:
- Addım 1: Komponentlərin siyahısı:
- Addım 2: Avadanlıq Bağlantısı
- Addım 3: Proqramlaşdırma
- Addım 4: Təcrübə Nəticəsi
Video: NeoPixels Matrix: İlan Oyunu: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Uşaqlıqda oyun qutumuzda və ya mobil cihazımızda oynadığımız ilan oyununu hələ də xatırlayırsınızmı? Bu gün 8*8 NeoPixels Matrix ilə ilan oyununun necə ediləcəyini öyrənəcəyik. İdarə mərkəzi olaraq Arduino uno və ilanı idarə etmək üçün Joystick breakout modulu seçirik.
Addım 1: Komponentlərin siyahısı:
Avadanlıq:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Flexible 64 RGB LED 8*8 NeoPixels Matrix
1 X Joystick qırılma modulu BKOUT_MD01
3 X Bələdçi Xətti
Proqram təminatı:
Arduino IDE
Addım 2: Avadanlıq Bağlantısı
NeoPixelləri D2 pininə qoşun.
Arduino UNO lövhəsindəki Joystick qırılma modulundakı "X" pin A0, "Y" bağlama pimi A1, "K" birləşdirici pin A2.
Addım 3: Proqramlaşdırma
P#daxildir
#define PIN 2 // Çıxış Pin #dexine MAX_LED 64 // Boncuk miqdarı uint32_t c; int a = 0, ədəd; işarəsiz char huan = 0, ci = 0; işarəsiz char u = 40; // İmzasız söz qrupunun şrift ölçüsü char x = 0; işarəsiz simvol Rəng [3]; imzasız char go = {2, 3, 4, 5, 9, 14, 17, 20, 22, 26, 27, 29, 34, 35, 36, 37, 41, 46, 49, 54, 58, 59, 60, 61}; // 24 işarəsiz işarə [8] [8] = {{0, 1, 2, 3, 4, 5, 6, 7}, {15, 14, 13, 12, 11, 10, 9, 8}, {16, 17, 18, 19, 20, 21, 22, 23}, {31, 30, 29, 28, 27, 26, 25, 24}, {32, 33, 34, 35, 36, 37, 38, 39}, {47, 46, 45, 44, 43, 42, 41, 40}, {48, 49, 50, 51, 52, 53, 54, 55}, {63, 62, 61, 60, 59, 58, 57, 56},}; işarəsiz simvol [8] = // Göndəriləcək sözü təyin edin {{0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, // 0 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, // 1 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 2 {0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 3 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, // 4 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 5 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 6 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, // 7 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 8 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 9 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 },}; imzasız char displayscore [8] [8]; int sürətiS = 400; // ilan int hesabının ilkin sürəti; // int xValue oyun hesabı; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Qida koordinatı int SX, SY; // İlan başının koordinatı int KEY, K; int Enabled; // Oyunu yenidən başlatmağı aktiv et char sx [64]; // İlan bədəninin koordinatları char sy [64]; Adafruit_NeoPixel şeridi = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = təsadüfi (0, 7); FY = təsadüfi (0, 7); for (int i = 0; i <3+score; i ++) // Yılan bədənində qida görüntüsünün qarşısını almaq {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// İlan hərəkətinin gecikmə dövründə qida parıltısı kimi bir şey etməli və Joystickin istiqamətini oxumalıyıq (int t = 1; t 950 && KEY! = 5) { K = 8; } başqa if (yValue <50 && KEY! = 8) {K = 5; } başqa əgər (xValue 950 && KEY! = 4) {K = 6; }} // Burada klaviatura istiqamətinin ilanın hərəkət istiqaməti ilə zidd olub olmadığını müqayisə edə bilərsiniz. Bunun əksinədirsə, klaviaturadan imtina edin. /*********************************************** ************************************************ ************************************************ ************************************************ ********/ void gameover () {// Gameover proqramı dayandıqdan sonra oyunu yenidən başlatmaq üçün mərkəzi düyməni basın. işarəsiz char dəyəri, y; Rəng [0] = təsadüfi (3, 18); // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = təsadüfi (3, 18); Rəng [2] = təsadüfi (3, 18); c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); dəyər = bal / 10; dəyər = dəyər * 4; y = 0; for (sayı = dəyər; sayı <dəyər+4; sayı ++) {üçün (işarəsiz char vertikal = 0; şaquli <8; dikey ++) {displayscore [y] [vertikal] = simvol [sayı] [dik]; } y ++; } dəyər = bal % 10; dəyər = dəyər * 4; for (sayı = dəyər; sayı <dəyər+4; sayı ++) {üçün (işarəsiz char vertikal = 0; şaquli <8; dikey ++) {displayscore [y] [vertikal] = simvol [sayı] [dik]; } y ++; } üçün (işarəsiz char üfüqi = 0; üfüqi <8; üfüqi ++) {üçün (işarəsiz simli şaquli = 0; şaquli <8; şaquli ++) {if (displayscore [horizontal] [vertical] == 1) // İşığın olub olmadığını mühakimə edin aktivdir. {strip.setPixelColor (işıq [üfüqi] [şaquli], c); } başqa strip.setPixelColor (işıq [üfüqi] [şaquli], 0); }} strip.show (); // Məlumat göndərmə gecikməsi (5000); K = 0; // Joystick istiqamətini sıfırlayın sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // İlan koordinat hesabını sıfırlayın = 0; // Oyunun hesab sürətini sıfırlayınS = 400; // ilanın ilkin sürəti} boşluq qurulması () {Serial.begin (9600); // Kitabxana strip.begin () başlatın; // Məlumat göndərin. Varsayılan olaraq hər bir nöqtənin rəngini 0 olaraq təyin edin. Yəni hər nöqtə əvvəlində işıqlandırılmır. strip.show (); K = 0; // Joystick sx istiqamətini sıfırlayın sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // İlan koordinat hesabını sıfırlayın = 0; // Oyun hesabını sıfırlayın Rəng [0] = təsadüfi (3, 18); // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = təsadüfi (3, 18); Rəng [2] = təsadüfi (3, 18); c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); // Yaşıl Qırmızı Mavi // Rəng təyin edin (sayı = 0; sayı <24; sayı ++) {strip.setPixelColor (gedin [sayı], c); } strip.show (); // Məlumat göndərmə gecikməsi (2000); RANDOM (); // Yemək istehsal et} void mobile () {KEY = K; // İlanın hər hərəkəti istiqamətini birdəfəlik dəyişir. if (KEY == 8) // Yılanın yuxarıya doğru hərəkəti {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Sərhəddən kənara çıxın və digər tərəfdən davam edin sy [0] = 7; } if if (KEY == 5) // Snake downward motion {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Sərhəddən kənara çıxın və digər tərəfdən davam edin sy [0] = 0; } else if (KEY == 4) // İlanın sol hərəkəti {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Sərhədi keçin və digər tərəfdən davam edin sx [0] = 7; } if if (KEY == 6) // Snake right motion {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Sərhəddən kənara çıxın və digər tərəfdən davam edin sx [0] = 0; } // İlan gövdəsini düymə ilə hərəkət etdirin} void display () {for (number = 0; number <64; number ++) // Ekranı təmizləyin {strip.setPixelColor (sayı, 0); } strip.show (); Rəng [0] = 40; // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = 0; Rəng [2] = 0; c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); // Yaşıl Qırmızı Mavi // Rəngi təyin edin x = işıq [FX] [FY]; // Qida şeridini göstərin.setPixelColor (x, c); Rəng [0] = təsadüfi (3, 18); // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = təsadüfi (3, 18); Rəng [2] = təsadüfi (3, 18); c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); // Yaşıl Qırmızı Mavi // Rəng təyin edin (int i = 2 + skor; i> 0; i--) // İlan gövdəsini göstər {x = light [sx [sy ; strip.setPixelColor (x, c); } Rəng [0] = 0; // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = 40; Rəng [2] = 0; c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); // Yaşıl Qırmızı Mavi // Rəngi təyin edin x = işıq [sx [0] [sy [0]; // İlan başının zolağını göstərin.setPixelColor (x, c); strip.show (); // Məlumat göndər} void loop () {mobile (); myDelay (speedS); // (ərzində) gecikmə vaxtıdır. göstərilir (); SX = sx [0]; SY = sy [0]; // ilan başının koordinatını alın (int i = 1; i <= 2+hesab; i ++) {if (SX == sx && SY == sy ) gameover (); } // İlan başının bədəninə dəyib -dəymədiyini mühakimə edin. Toxunduqda GameOver -ə keçin. əgər (SY == FY && SX == FX) {RANDOM (); bal ++; Rəng [0] = 40; // Rəng təyin edin. Parametr R G B, 0-255 aralığındadır. Rəng [1] = 0; Rəng [2] = 0; c = strip. Color (Rəng [1], Rəng [0], Rəng [2]); // Yaşıl Qırmızı Mavi // Rəngi təyin edin x = işıq [FX] [FY]; // Qida şeridini göstərin.setPixelColor (x, c); strip.show (); // Məlumat göndər (əgər (% 5 bal)) {// Hesabına görə ilan sürətini artır. Yediyiniz hər 5 yemək, 100 ms sürətlənir. sürət S = sürət S - 50; if (speedS <150) // Alt limit 200ms -dir. Sürət 200ms -dən aşağıdırsa, sürət 200ms olaraq qalır. sürət S = 150; }} // Yemək yeyilib yemədiyini mühakimə et. İlan yemək yeyirsə, üstəgəl puanları artırır və yeməyi təsadüfi olaraq canlandırır. }
Təcrübə Nəticəsi
Addım 4: Təcrübə Nəticəsi
Nisbi oxunuşlar:
FreaksBot Bluetooth Avtomobil
İlk Boncuğu Arduino ilə 8*8 NeoPixels Matrix -də yandırın
Mikro: bit Təcrübə 05: RGB LED - Elecfreaks Mirco: bit Başlanğıc Kit Kursu
Cümə Məhsul Yazısı: LED Musiqi Frekans Spektrli Ekran Lehim Kiti
Ağıllı İşıq etmək üçün ElecFreaks Micro: bit Tinker Kitindən istifadə edin
Tövsiyə:
3D çaplı ilan robotu: 7 addım (şəkillərlə birlikdə)
3D Çaplı İlan Robotu: 3D printerimi əldə edəndə onunla nə edə biləcəyimi düşünməyə başladım. Çox şey çap etdim, amma 3D çapdan istifadə edərək bütöv bir tikinti etmək istədim. Sonra robot heyvan hazırlamaq barədə düşündüm. İlk fikrim bir it və ya hörümçək etmək idi, amma
İlan: Yararsız Maşın: 5 addım
İlan: Yararsız Maşın: Uşaq ikən bilirsən və Nokia -da ilan oynayırdın? Müəyyən bir anda ilan öz quyruğunu qovmağa başlayacaq və oyunun bitmək üzrə olduğunu bildiyiniz zaman. Bunu robot halına gətirməyə qərar verdik, ancaq oyun heç vaxt
Çörək taxtasında ilan: 3 addım (şəkillərlə)
Çörək taxtasında ilan: " Telefonunuzda hər hansı bir oyun varmı? &Quot; " Tam olaraq deyil. " Giriş: Nəzarət etmək asandır, proqramlaşdırmaq asandır və Nokia 6110 tərəfindən əbədiləşdirilən Snake mühəndislər arasında ən sevimli layihəyə çevrilib. LED matrislərindən başlayaraq hər şeyə tətbiq edildi, L
İlan Oyunu: 4 addım
İlan Oyunu: Salam Uşaqlar, Bu gün sizə Pythonda əsas ilan oyununun necə ediləcəyini və bu tətildə dostlarınızı heyrətləndirəcəyəm. Python 3 və pygame quraşdırmağınız lazım olan bu çox sadədir. Bu təlimatda pygame -in necə qurulacağına dair bir video əlavə etdim. Sonra
Portativ İlan: 3 addım
Portativ Yılan: Bu, öz portativ ilan oyununuzu necə etmək barədə bir dərsdir! Lazım olan tək şey bir arduino, bəzi elektronika və hər şeyi həll etmək üçün bir yol. Bütün ehtiyacların siyahısı:- Arduino uno (1)- Joystick modulu (1)- Led Matrix (1)- bəzi tellər (10