Мазмұны:
- 1 -қадам: компоненттер тізімі:
- 2 -қадам: Жабдыққа қосылу
- 3 -қадам: бағдарламалау
- 4 -қадам: эксперимент нәтижесі
Бейне: NeoPixels матрицасы: Жылан ойыны: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Бала кезімізде ойын қорабында немесе ұялы телефонда ойнаған жыландар ойыны әлі есіңізде ме? Бүгін біз 8*8 NeoPixels Matrix көмегімен жылан ойынын жасауды үйренеміз. Біз басқару орталығы ретінде жылуды басқару үшін Arduino uno мен Joystick разряд модулін таңдаймыз.
1 -қадам: компоненттер тізімі:
Жабдық:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X икемді 64 RGB LED 8*8 NeoPixels матрицасы
1 X джойстиктің үзілу модулі BKOUT_MD01
3 X бағыттаушы сызық
Бағдарламалық қамтамасыз ету:
Arduino IDE
2 -қадам: Жабдыққа қосылу
NeoPixels қосқышын D2 түйреуішіне қосыңыз.
Joystick ажырату модуліндегі «X» Arduino UNO тақтасындағы A0 түйреуішін, «Y» қосқыш A1, «K» қосқыш A2 түйреуішін қосады.
3 -қадам: бағдарламалау
P#қамтиды
#PIN 2 анықтаңыз // шығыс түйрегіші #dexine MAX_LED 64 // бисер саны uint32_t c; int a = 0, сан; белгісіз char huan = 0, ci = 0; белгісіз char u = 40; // белгісіз сөздер тобының қаріп өлшемі char x = 0; белгісіз таңба Түс [3]; белгісіз 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 белгісіз шам [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},}; белгісіз таңба [8] = // Жіберілетін сөзді орнату {{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 },}; белгісіз таңбалар дисплейі [8] [8]; int жылдамдығыS = 400; // Жылан int балының бастапқы жылдамдығы; // int xValue ойынының бағасы; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Тағамның координаты int SX, SY; // Жылан басының координаты int KEY, K; int Қосылған; // char sx [64] ойынын қайта қосуды қосу; // Жылан денесінің char sy координаты [64]; Adafruit_NeoPixel жолағы = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = random (0, 7); FY = кездейсоқ (0, 7); for (int i = 0; i <3+score; i ++) // Жылан денесінде тағамның пайда болуына жол бермеу {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Жылан қозғалысының кешігуі кезінде біз тағамның жарқылын жасауымыз керек және Joystick бағытын оқуымыз керек (int t = 1; t 950 && KEY! = 5) { K = 8; } if if (yValue <50 && KEY! = 8) {K = 5; } else if (xValue 950 && KEY! = 4) {K = 6; }} // Мұнда сіз пернетақта бағыты жыланның қозғалу бағытына қарама -қарсы екенін салыстыра аласыз. Егер ол керісінше болса, пернетақтадан бас тартыңыз. /************************************************* ************************************************ ************************************************ ************************************************ ********/ void gameover () {// Gameover бағдарламасы тоқтаған соң, ойынды қайта бастау үшін орталық түймені басыңыз. белгісіз таңбалық мән, у; Түс [0] = кездейсоқ (3, 18); // Түсті орнатыңыз. Параметр-R G B, ауқымы 0-255. Түс [1] = кездейсоқ (3, 18); Түс [2] = кездейсоқ (3, 18); c = strip. Color (Түс [1], Түс [0], Түс [2]); мән = балл / 10; мән = мән * 4; y = 0; for (number = value; number <value+4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = таңба [сан] [тік]; } y ++; } мән = балл % 10; мән = мән * 4; for (number = value; number <value+4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = таңба [сан] [тік]; } y ++; } үшін (белгісіз таңба көлденең = 0; көлденең <8; көлденең ++) {үшін (белгісіз таңба тік = 0; тік <8; тік ++) {if (дисплей ұпайы [көлденең] [тік] == 1) // Жарықтың бар -жоғын бағалаңыз қосулы. {strip.setPixelColor (ашық [көлденең] [тік], в); } else strip.setPixelColor (ашық [көлденең] [тік], 0); }} strip.show (); // Деректерді жіберуді кешіктіру (5000); K = 0; // Джойстиктің бағытын қалпына келтіру sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Жылан координатасының есебін қалпына келтіру = 0; // Ойын ұпайының жылдамдығын қалпына келтіруS = 400; // Жыланның бастапқы жылдамдығы} void setup () {Serial.begin (9600); // Library strip.begin () инициализациялау; // Деректерді жіберу. Әр нүктенің түсін 0 деп әдепкі етіп орнатыңыз. Сондықтан әрбір нүкте басында жарықтандырылмайды. strip.show (); K = 0; // Джойстик схемасын қалпына келтіру sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Жылан координатасының есебін қалпына келтіру = 0; // Ойын есебін қалпына келтіру Түс [0] = кездейсоқ (3, 18); // Түсті орнатыңыз. Параметр-R G B, ауқымы 0-255. Түс [1] = кездейсоқ (3, 18); Түс [2] = кездейсоқ (3, 18); c = strip. Color (Түс [1], Түс [0], Түс [2]); // Жасыл қызыл көк // Түсті орнатыңыз (сан = 0; сан <24; сан ++) {strip.setPixelColor (өту [сан], в); } strip.show (); // Деректерді жіберуді кешіктіру (2000); RANDOM (); // Тамақ өндіру} void mobile () {KEY = K; // Жыланның әрбір қозғалысы бағытты бірден өзгертеді. if (KEY == 8) // Жыланның жоғары қарай қозғалысы {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) // Шекарадан шығып, екінші жағынан жалғастыр sy [0] = 7; } else if (KEY == 5) // Жыланның төмен қарай қозғалысы {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) // Шекарадан шығып, екінші жағынан жалғастырыңыз sy [0] = 0; } if if (KEY == 4) // Жыланның солға қозғалысы {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) // Шекарадан шығып, екінші жағынан жалғастырыңыз sx [0] = 7; } else if (KEY == 6) // Жыландардың оңға қозғалысы {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) // Шекарадан шығып, екінші жағынан жалғастырыңыз sx [0] = 0; } // Жылан денесін} батырмасымен жылжытыңыз} void display () {for (number = 0; number <64; number ++) // Экранды тазалау {strip.setPixelColor (сан, 0); } strip.show (); Түс [0] = 40; // Түсті орнатыңыз. Параметр R G B, диапазоны 0-255. Түс [1] = 0; Түс [2] = 0; c = strip. Color (Түс [1], Түс [0], Түс [2]); // Жасыл Қызыл Көк // Түсті орнату x = ақшыл [FX] [FY]; // Тамақтану жолағын көрсету.setPixelColor (x, c); Түс [0] = кездейсоқ (3, 18); // Түсті орнатыңыз. Параметр R G B, диапазоны 0-255. Түс [1] = кездейсоқ (3, 18); Түс [2] = кездейсоқ (3, 18); c = strip. Color (Түс [1], Түс [0], Түс [2]); // Жасыл Қызыл Көк // Түсті орнату (int i = 2 + балл; i> 0; i--) // Жылан денесін көрсету {x = light [sx [sy ; strip.setPixelColor (x, c); } Түс [0] = 0; // Түсті орнатыңыз. Параметр R G B, диапазоны 0-255. Түс [1] = 40; Түс [2] = 0; c = strip. Color (Түс [1], Түс [0], Түс [2]); // Жасыл Қызыл Көк // Түсті орнату x = ақшыл [sx [0] [sy [0]; // Жылан басының жолағын көрсету.setPixelColor (x, c); strip.show (); // Деректерді жіберу} void loop () {mobile (); myDelay (speedS); // Within ішінде) - кешіктіру уақыты. көрсетеді (); SX = sx [0]; SY = sy [0]; // Жылан басының координатасын алыңыз (int i = 1; i <= 2+балл; i ++) {if (SX == sx && SY == sy ) gameover (); } // Жылан басы оның денесіне тигенін тексеріңіз. Егер ол тиіп кетсе, GameOver -ге жіберіңіз. егер (SY == FY && SX == FX) {RANDOM (); ұпай ++; Түс [0] = 40; // Түсті орнатыңыз. Параметр R G B, диапазоны 0-255. Түс [1] = 0; Түс [2] = 0; c = strip. Color (Түс [1], Түс [0], Түс [2]); // Жасыл Қызыл Көк // Түсті орнату x = ақшыл [FX] [FY]; // Тамақтану жолағын көрсету.setPixelColor (x, c); strip.show (); // Деректерді жіберу егер (! (балл % 5)) {// Ұпайға сәйкес жылан жылдамдығын тездетіңіз. Әр 5 тағам жейді, 100 мс. жылдамдықS = жылдамдықS - 50; if (speedS <150) // Төменгі шегі - 200 мс. Егер жылдамдық 200 мс төмен болса, жылдамдық 200 мс қалады. жылдамдықS = 150; }} // Тамақ жеді ме, жоқ па, соны бағалаңыз. Егер жылан тамақ жеген болса, онда плюс ұпай жинап, тағамды кездейсоқ жаңартады. }
Эксперимент нәтижесі
4 -қадам: эксперимент нәтижесі
Салыстырмалы оқулар:
Bluetooth көлігі FreaksBot
Бірінші моншақты Arduino көмегімен 8*8 NeoPixels матрицасына жағыңыз
Микро: бит эксперименті 05: RGB светодиоды - Elecfreaks Mirco: бит стартерлік жиынтығы
Жұма өнімі: LED музыкалық жиілік спектрлі дисплейлі дәнекерлеу жинағы
Ақылды жарық жасау үшін ElecFreaks Micro: bit Tinker жиынтығын қолданыңыз
Ұсынылған:
3D басып шығарылған жылан роботы: 7 қадам (суреттермен)
3D басып шығарылған жылан роботы: Мен 3D принтер алғаннан кейін мен онымен не істеуге болатынын ойлай бастадым. Мен көп нәрсені басып шығардым, бірақ мен 3D басып шығару арқылы бүтін құрылысты жасағым келді. Содан кейін мен робот жануар жасау туралы ойладым. Менің бірінші ойым ит немесе паук жасау болды, бірақ
Жылан: пайдасыз машина: 5 қадам
Жылан: пайдасыз машина: Сіз бала кезіңізде Nokia -да жылан ойнайтынын білесіз бе? Бір сәтте жылан өз құйрығын қуа бастайды, сол кезде сіз ойынның аяқталатынын білдіңіз. Біз мұны роботқа айналдыруды шештік, тек ойын ешқашан
Жылан ойыны: 4 қадам
Жыландар ойыны: Сәлеметсіңдер ме, балалар, бүгін мен сендерге Python -да қарапайым жылан ойынын қалай жасау керектігін көрсетемін және осы демалыста достарды таң қалдырамын. Бұл сізге өте қажет - python 3 және pygame install. Бұл нұсқаулықта мен pygame қалай орнатылатыны туралы бейне қостым. Кейін
Arduino OLED жылан ойыны: 3 қадам
Arduino OLED жыландар ойыны: Сәлеметсіз бе, OLED ойынын қалай жасауға болатындығы туралы біздің нұсқауларға қош келдіңіз, бұл жоба біз бірінші ойынымызды arduino, soooo -мен жасауға тырысқан кезде пайда болды, біз нокиядан гөрі қайдан бастау керек деп ойладық. классикалық жылан (кем дегенде
C: 8 қадамдағы жылан ойыны
Game in Snake in C: Snake ойыны ескі ұялы телефондарда танымал болды, оны c бағдарламасының көмегімен оңай айыруға болады. Бұл жобаны құру үшін сізге c синтаксисінің негізгі түсінігі қажет. Мысалы: цикл үшін, цикл кезінде және т.б. Ойынның осы түрін құра отырып, сіздің бағдарламашыңыз