Mundarija:
- 1 -qadam: Komponentlar ro'yxati:
- 2 -qadam: Uskuna ulanishi
- 3 -qadam: dasturlash
- 4 -qadam: tajriba natijasi
Video: NeoPixels matritsasi: ilon o'yini: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Hali ham bolaligimizda o'yin qutisida yoki mobil telefonimizda o'ynagan ilon o'yini esingizdami? Bugun biz 8*8 NeoPixels Matrix yordamida ilon o'yinini yasashni o'rganamiz. Biz Arduino uno -ni boshqaruv markazi va ilonni boshqarish uchun Joystick sindirish moduli sifatida tanlaymiz.
1 -qadam: Komponentlar ro'yxati:
Uskuna:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X moslashuvchan 64 RGB LED 8*8 NeoPixels matritsasi
BKOUT_MD01 - 1 ta Joystick uzilish moduli
3 X qo'llanma chizig'i
Dasturiy ta'minot:
Arduino IDE
2 -qadam: Uskuna ulanishi
NeoPixels -ni D2 piniga ulang.
Joystick uzilish modulidagi "X" Arduino UNO kartasidagi A0 ulanish pinini, "Y" ulanish pinini A1, "K" A2 ulanish pinini.
3 -qadam: dasturlash
P#o'z ichiga oladi
#define PIN 2 // chiqish pin #dexine MAX_LED 64 // boncuk soni uint32_t c; int a = 0, raqam; belgisiz char huan = 0, ci = 0; belgisiz char u = 40; // imzosiz so'zlar guruhining shrift o'lchami char x = 0; imzosiz char Rang [3]; imzosiz 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 ta belgisiz chiroq [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},}; imzosiz belgi [8] = // Yuboriladigan so'zni belgilang {{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 },}; imzosiz char displayscore [8] [8]; int tezligiS = 400; // Ilon int balining boshlang'ich tezligi; // O'yin ballari int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // int SX, SY oziq -ovqat koordinatasi; // ilon boshining koordinatasi int KEY, K; int Yoqilgan; // char sx o'yinini qayta ishga tushirishni yoqish [64]; // Ilon tanasi char sy koordinatasi [64]; Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); bekor RANDOM () {A: FX = tasodifiy (0, 7); FY = tasodifiy (0, 7); for (int i = 0; i <3+ball; i ++) // Ilon tanasida oziq -ovqat paydo bo'lishining oldini olish {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Ilon harakatining kechikish davrida biz oziq -ovqat yaltirashi kabi ish qilishimiz va Joystick yo'nalishini o'qishimiz kerak (int t = 1; t 950 && KEY! = 5) { K = 8; } if if (yValue <50 && KEY! = 8) {K = 5; } if if (xValue 950 && KEY! = 4) {K = 6; }} // Bu erda siz klaviatura yo'nalishi ilonning harakat yo'nalishiga qarama -qarshi ekanligini solishtirishingiz mumkin. Agar u qarama -qarshi bo'lsa, klaviaturadan voz keching. /*********************************************** ************************************************ ************************************************ ************************************************ ********/ void gameover () {// Gameover dasturi to'xtatilgach, o'yinni qayta boshlash uchun markaziy tugmani bosing. imzosiz char qiymati, y; Rang [0] = tasodifiy (3, 18); // Rangni o'rnating. Parametr-R G B, diapazoni 0-255. Rang [1] = tasodifiy (3, 18); Rang [2] = tasodifiy (3, 18); c = strip. Color (Rang [1], Rang [0], Rang [2]); qiymat = ball / 10; qiymat = qiymat * 4; y = 0; uchun (son = qiymat; son <qiymat+4; son ++) {uchun (imzosiz char vertikal = 0; vertikal <8; vertikal ++) {displey skori [y] [vertikal] = belgi [son] [vertikal]; } y ++; } qiymat = % 10 ball; qiymat = qiymat * 4; uchun (son = qiymat; son <qiymat+4; son ++) {uchun (imzosiz char vertikal = 0; vertikal <8; vertikal ++) {displey skori [y] [vertikal] = belgi [son] [vertikal]; } y ++; } uchun (belgisiz char gorizontal = 0; gorizontal <8; gorizontal ++) {uchun (imzosiz char vertikal = 0; vertikal <8; vertikal ++) {if (displey skorlari [gorizontal] [vertikal] == 1) // Yorug'lik yoqilgan. {strip.setPixelColor (engil [gorizontal] [vertikal], v); } else strip.setPixelColor (ochiq [gorizontal] [vertikal], 0); }} strip.show (); // Ma'lumotni kechiktirishni yuborish (5000); K = 0; // Joystick yo'nalishini tiklash reset [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Ilon koordinatalari balini tiklash = 0; // O'yin ballari tezligini tiklashS = 400; // Ilonning boshlang'ich tezligi} void setup () {Serial.begin (9600); // kutubxona strip.begin () ni ishga tushiring; // Ma'lumot yuborish. Standart sifatida har bir nuqta rangini 0. Shunday qilib, har bir nuqta boshida yoritilmagan. strip.show (); K = 0; // Joystick sx [0] = 2 yo'nalishini tiklang; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Ilon koordinatalari balini tiklash = 0; // O'yin balini tiklash Rang [0] = tasodifiy (3, 18); // Rangni o'rnating. Parametr-R G B, diapazoni 0-255. Rang [1] = tasodifiy (3, 18); Rang [2] = tasodifiy (3, 18); c = strip. Color (Rang [1], Rang [0], Rang [2]); // Yashil qizil ko'k // Rangni belgilang (raqam = 0; son <24; son ++) {strip.setPixelColor (o'tish [son], c); } strip.show (); // Ma'lumot yuborish kechikishi (2000); Tasodif (); // Oziq -ovqat ishlab chiqarish} void mobile () {KEY = K; // Ilonning har bir harakati yo'nalishni bir marta o'zgartiradi. if (KEY == 8) // Ilon yuqoriga harakat {uchun (int i = 2 + ball; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Chegaradan nariga o'ting va boshqa tomondan davom eting sy [0] = 7; } if if (KEY == 5) // Ilonning pastga harakatlanishi {uchun (int i = 2 + ball; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Chegaradan nariga o'ting va boshqa tomondan davom eting sy [0] = 0; } if if (KEY == 4) // Ilon chap harakat {uchun (int i = 2 + ball; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Chegaradan nariga o'ting va boshqa tomondan davom eting sx [0] = 7; } if if (KEY == 6) // Ilonning o'ng harakati {uchun (int i = 2 + ball; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Chegaradan nariga o'ting va boshqa tomondan davom eting sx [0] = 0; } // Tugma bilan ilon tanasini siljiting} void displeylari () {for (number = 0; number <64; number ++) // Ekranni tozalash {strip.setPixelColor (raqam, 0); } strip.show (); Rang [0] = 40; // Rangni o'rnating. Parametr R G B, diapazoni 0-255. Rang [1] = 0; Rang [2] = 0; c = strip. Color (Rang [1], Rang [0], Rang [2]); // Yashil Qizil Ko'k // Rangni belgilash x = engil [FX] [FY]; // Oziq -ovqat tasmasini ko'rsatish.setPixelColor (x, c); Rang [0] = tasodifiy (3, 18); // Rangni o'rnating. Parametr R G B, diapazoni 0-255. Rang [1] = tasodifiy (3, 18); Rang [2] = tasodifiy (3, 18); c = strip. Color (Rang [1], Rang [0], Rang [2]); // Yashil qizil ko'k // Rangni belgilang (int i = 2 + ball; i> 0; i--) // Ilon tanasini ko'rsatish {x = light [sx [sy ; strip.setPixelColor (x, c); } Rang [0] = 0; // Rangni o'rnating. Parametr R G B, diapazoni 0-255. Rang [1] = 40; Rang [2] = 0; c = strip. Color (Rang [1], Rang [0], Rang [2]); // Yashil qizil ko'k // Rangni belgilash x = yorug'lik [sx [0] [sy [0]; // Ilon boshining tasmasini ko'rsatish.setPixelColor (x, c); strip.show (); // Ma'lumot yuborish} void loop () {mobile (); myDelay (speedS); // Within ichida) - kechikish vaqti. displeylar (); SX = sx [0]; SY = sy [0]; // ilon boshining koordinatasini oling (int i = 1; i <= 2+ball; i ++) {if (SX == sx && SY == sy ) gameover (); } // Ilon boshi uning tanasiga tegdimi, hukm qiling. Agar teginilsa, GameOver -ga o'ting. agar (SY == FY && SX == FX) {RANDOM (); ball ++; Rang [0] = 40; // Rangni o'rnating. Parametr R G B, diapazoni 0-255. Rang [1] = 0; Rang [2] = 0; c = strip. Color (Rang [1], Rang [0], Rang [2]); // Yashil Qizil Ko'k // Rangni belgilash x = engil [FX] [FY]; // Oziq -ovqat tasmasini ko'rsatish.setPixelColor (x, c); strip.show (); // Ma'lumotni yuboring, agar (! (ball 5 %)) {// Hisobga ko'ra ilon tezligini tezlashtiring. Har 5 ta oziq -ovqat, 100 millimetrga ko'payadi. tezlikS = tezlikS - 50; if (speedS <150) // Pastki chegara 200ms. Agar tezlik 200ms dan past bo'lsa, tezlik 200ms bo'lib qoladi. tezlikS = 150; }} // Oziq -ovqat iste'mol qilinadimi -yo'qligini hukm qiling. Agar ilon ovqat iste'mol qilgan bo'lsa, unda ballar ko'payadi va oziq -ovqat tasodifiy ravishda qayta tiklanadi. }
Tajriba natijasi
4 -qadam: tajriba natijasi
Nisbiy o'qishlar:
Bluetooth avtomobil FreaksBot
Birinchi munchoqni Arduino bilan 8*8 NeoPixels matritsasida yoqing
Micro: bit Tajriba 05: RGB LED - Elecfreaks Mirco: bit boshlang'ich to'plami
Juma mahsuloti xabari: LED musiqa chastotali spektrli displeyli lehim to'plami
Aqlli yorug'lik qilish uchun ElecFreaks Micro: bit Tinker to'plamidan foydalaning
Tavsiya:
3D bosma ilon roboti: 7 qadam (rasmlar bilan)
3D bosma ilon roboti: Men 3D printerni olganimda, u bilan nima qilishim mumkinligi haqida o'ylay boshladim. Men juda ko'p narsalarni chop etdim, lekin men 3D bosib chiqarish yordamida butun konstruktsiyani yaratmoqchi edim. Keyin robot hayvon yasash haqida o'yladim. Mening birinchi fikrim it yoki o'rgimchak yasash edi, lekin
IoT aqlli soatli nuqta matritsasi Wemosdan foydalaning ESP8266 - ESP matritsasi: 12 qadam (rasmlar bilan)
IoT aqlli soatli nuqta matritsasi Wemos-dan foydalaning ESP8266-ESP matritsasi: O'zingizning aqlli soatingizni yarating, u quyidagilarni bajarishi mumkin: Chiroyli animatsiya belgisiga ega soatni ko'rsatish Eslatma-1dan Eslatmaga-5ni ko'rsatish Taqvimni ko'rsatish Musulmonlarning namoz vaqtlarini ko'rsatish Ob-havo ma'lumotlarini ko'rsatish Yangiliklarni ko'rsatish Maslahatlarni ko'rsatish Bitcoin kursini ko'rsatish
Ilon o'yini: 4 qadam
Ilon o'yini: Salom bolalar, bugun men sizga Python -da ilonlarning asosiy o'yinini ko'rsataman va bu ta'tilda do'stlaringizni hayratda qoldiraman. Bu juda oddiy, sizga faqat python 3 va pygame install kerak. Bu ko'rsatmaga men pygame -ni qanday o'rnatish haqida video qo'shdim. Keyin
Arduino OLED ilon o'yini: 3 qadam
Arduino OLED ilon o'yini: Salom va xush kelibsiz, bizning OLED o'yinini qanday qilish bo'yicha ko'rsatmalarimizga xush kelibsiz, bu loyiha biz birinchi o'yinimizni arduino, soooo bilan o'tkazmoqchi bo'lganimizda, biz nokiyadan ko'ra qaerdan boshlash kerakligini o'yladik. klassik ilon (hech bo'lmaganda
C: 8 qadamda ilon o'yini
C: in Snake o'yini: ilon o'yini eski mobil telefonlarda mashhur bo'lib, uni c dasturi yordamida osonlikcha almashtirish mumkin edi. Ushbu loyihani yaratish uchun sizga c sintaksisi haqida asosiy tushuncha kerak. Misol: loop, while va hokazo uchun, bu turdagi o'yin loyihasini yaratish bilan sizning dasturchi