Sisukord:
Video: NeoPixelsi maatriks ja madu mäng: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Kas mäletate veel ussimängu, mida mängisime oma lapsepõlves oma mängukastis või mobiiltelefonis? Täna õpime, kuidas teha madumängu 8*8 NeoPixels Matrix abil. Juhtimiskeskuseks valime Arduino uno ja madu juhtimiseks Joystick breakout mooduli.
Samm: komponentide loend:
Riistvara:
1 X Freaduino UNO Rev.2.2 MB_EFUNO
1 X paindlik 64 RGB LED 8*8 NeoPixels maatriks
1 X Joystick breakout module BKOUT_MD01
3 X Juhtjoon
Tarkvara:
Arduino IDE
Samm: riistvaraühendus
Ühendage NeoPixels pistikuga D2.
"X" juhtkangi katkestusmoodulil ühendage tihvt A0 Arduino UNO plaadil, "Y" ühendage tihvt A1, "K" ühendage tihvt A2.
3. samm: programmeerimine
P#hulka
#define PIN 2 // Output Pin #define MAX_LED 64 // helmeste kogus uint32_t c; int a = 0, arv; allkirjastamata char huan = 0, ci = 0; allkirjastamata sümbol u = 40; // Sõnarühma fondi suurus unsigned char x = 0; allkirjastamata sümbol Värv [3]; allkirjastamata sümbol = {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 allkirjastamata sümbolit [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},}; unsigned char character [8] = // Määrake saadetav sõna {{0, 1, 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 },}; allkirjastamata sümbol displaycore [8] [8]; int kiirusS = 400; // Madu algkiirus int skoor; // Mängu tulemus int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Toidu koordinaat int SX, SY; // Madupea koordinaat int KEY, K; int Lubatud; // Luba mängu taaskäivitamine char sx [64]; // Madu keha koordinaat char sy [64]; Adafruit_NeoPixel riba = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); tühine RANDOM () {A: FX = juhuslik (0, 7); FY = juhuslik (0, 7); for (int i = 0; i <3+score; i ++) // Vältida toidu kuvamist madu kehal {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Madude liikumise viivitusperioodil peame tegema midagi toidusära taolist ja lugema juhtkangi suunda (int t = 1; t 950 && KEY! = 5) { K = 8; } else if (yVäärtus <50 && KEY! = 8) {K = 5; } else if (xVäärtus 950 && KEY! = 4) {K = 6; }} // Siin saate võrrelda, kas klaviatuuri suund on madu liikumissuunale vastupidine. Kui see on vastupidine, loobuge klaviatuurist. /************************************************ ************************************************* ************************************************* ************************************************* ********/ void gameover () {// Kui Gameoveri programm on peatunud, vajutage mängu taaskäivitamiseks keskset nuppu. allkirjastamata sümbolväärtus, y; Värv [0] = juhuslik (3, 18); // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = juhuslik (3, 18); Värv [2] = juhuslik (3, 18); c = riba. Värv (värv [1], värv [0], värv [2]); väärtus = skoor / 10; väärtus = väärtus * 4; y = 0; jaoks (number = väärtus; arv <väärtus+4; arv ++) {jaoks (allkirjastamata sümbol vertikaalne = 0; vertikaalne <8; vertikaalne ++) {displaycore [y] [vertical] = märk [number] [vertikaalne]; } y ++; } väärtus = skoor % 10; väärtus = väärtus * 4; jaoks (number = väärtus; arv <väärtus+4; arv ++) {jaoks (allkirjastamata sümbol vertikaalne = 0; vertikaalne <8; vertikaalne ++) {displaycore [y] [vertical] = märk [number] [vertikaalne]; } y ++; } jaoks (allkirjastamata sümbol horisontaalne = 0; horisontaalne <8; horisontaalne ++) {jaoks (allkirjastamata sümbol vertikaalne = 0; vertikaalne <8; vertikaalne ++) {if (displaycore [horisontaalne] [vertikaalne] == 1) // Otsustage, kas valgus on sisse lülitatud. {strip.setPixelColor (hele [horisontaalne] [vertikaalne], c); } else strip.setPixelColor (hele [horisontaalne] [vertikaalne], 0); }} strip.show (); // Andmete saatmise viivitus (5000); K = 0; // Lähtesta juhtkangi suund sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Lähtesta madu koordinaatide skoor = 0; // Lähtesta mängu skoor speedS = 400; // Madu algkiirus} void setup () {Serial.begin (9600); // Raamatukogu riba initsialiseerimine.begin (); // Andmete saatmine. Vaikimisi on iga punkti värv 0. Seega ei ole iga punkt alguses valgustatud. strip.show (); K = 0; // Joysticki suuna lähtestamine sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Lähtesta madu koordinaatide skoor = 0; // Lähtesta mängu tulemus Värv [0] = juhuslik (3, 18); // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = juhuslik (3, 18); Värv [2] = juhuslik (3, 18); c = riba. Värv (värv [1], värv [0], värv [2]); // Roheline Punane Sinine // Määra värv (number = 0; number <24; number ++) {strip.setPixelColor (mine [number], c); } strip.show (); // Andmete saatmise viivitus (2000); RANDOM (); // Toota toitu} void mobile () {KEY = K; // Iga madu liigutus muudab suuna korraks. kui (KEY == 8) // Madu ülespoole liikumine {jaoks (int i = 2 + skoor; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Mine piirist kaugemale ja jätka teisel pool sy [0] = 7; } else if (KEY == 5) // Madu allapoole liikumine {jaoks (int i = 2 + skoor; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Mine piirist kaugemale ja jätka teisel pool sy [0] = 0; } else if (KEY == 4) // Madu vasakule liikumine {jaoks (int i = 2 + skoor; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Mine piirist kaugemale ja jätka teisel pool sx [0] = 7; } else if (KEY == 6) // Madu paremale liikumine {jaoks (int i = 2 + skoor; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Mine piirist kaugemale ja jätka teisel pool sx [0] = 0; } // Liiguta madu keha nupuga} tühjad kuvab () {for (number = 0; number <64; number ++) // Kustuta ekraan {strip.setPixelColor (number, 0); } strip.show (); Värv [0] = 40; // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = 0; Värv [2] = 0; c = riba. Värv (värv [1], värv [0], värv [2]); // Roheline Punane Sinine // Määra värv x = hele [FX] [FY]; // Kuva toiduriba.setPixelColor (x, c); Värv [0] = juhuslik (3, 18); // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = juhuslik (3, 18); Värv [2] = juhuslik (3, 18); c = riba. Värv (värv [1], värv [0], värv [2]); // Roheline Punane Sinine // Määra värv (int i = 2 + skoor; i> 0; i--) // Kuva madu keha {x = hele [sx [sy ; strip.setPixelColor (x, c); } Värv [0] = 0; // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = 40; Värv [2] = 0; c = riba. Värv (värv [1], värv [0], värv [2]); // Roheline Punane Sinine // Määra värv x = hele [sx [0] [sy [0]; // Kuva ussipea riba.setPixelColor (x, c); strip.show (); // Saada andmed} void loop () {mobile (); myDelay (speedS); // Within piires) on viivitusaeg. kuvab (); SX = sx [0]; SY = sy [0]; // Hangi madu pea koordinaat (int i = 1; i <= 2+score; i ++) {if (SX == sx && SY == sy ) gameover (); } // Otsustage, kas madu pea puudutas keha. Kui puudutate, siis suunake edasi GameOveri. if (SY == FY && SX == FX) {RANDOM (); skoor ++; Värv [0] = 40; // Määra värv. Parameeter on R G B, vahemik 0–255. Värv [1] = 0; Värv [2] = 0; c = riba. Värv (värv [1], värv [0], värv [2]); // Roheline Punane Sinine // Määra värv x = hele [FX] [FY]; // Kuva toiduriba.setPixelColor (x, c); strip.show (); // Saada andmed, kui (! (skoor % 5)) {// Koostage madu kiirus vastavalt skoorile. Iga 5 söödud toidu kohta koguneb 100 ms. kiirusS = kiirusS - 50; if (speedS <150) // Alumine piir on 200 ms. Kui kiirus on väiksem kui 200 ms, jääb kiirus 200 ms. kiirusS = 150; }} // Otsustage, kas toitu süüakse. Kui madu sõi toitu, siis pluss skoor ja uuendage toitu juhuslikult. }
Katse tulemus
4. samm: katse tulemus
Suhtelised näidud:
FreaksBot Bluetooth -auto
Süütage esimene helmes 8*8 NeoPixels maatriksil koos Arduinoga
Micro: bit Eksperiment 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course
Reede tootepostitus: LED -muusika sagedusspektri ekraaniga jootekomplekt
Kasutage nutika valguse loomiseks ElecFreaks Micro: bit Tinker Kit
Soovitan:
3D -trükitud madu robot: 7 sammu (piltidega)
3D -prinditud madu robot: Kui ma sain oma 3D -printeri, hakkasin mõtlema, mida ma sellega teha saan. Trükkisin palju asju, kuid tahtsin 3D -printimise abil teha terve konstruktsiooni. Siis mõtlesin teha robotlooma. Minu esimene mõte oli teha koer või ämblik, aga ennäe
Madu leivalaual: 3 sammu (piltidega)
Madu leivalaual: "Kas teie telefonis on mänge?" "Mitte täpselt." Sissejuhatus: Snake on inseneride lemmikprojektiks saanud lihtsalt juhitav, hõlpsasti programmeeritav ja Nokia 6110 poolt jäädvustatud. Seda on rakendatud kõigest LED -maatriksitest, L
Simoni mäng - lõbus mäng!: 5 sammu
Simoni mäng - lõbus mäng !: Viide: siinPärast pikka nädalavahetust peate kindlasti kõvasti proovima, et täita kõik ülesanded ja töö, mille eest vastutate. Meil on aeg oma aju treenida, kas pole? Peale nende igavate ja mõttetute mängude on olemas ka mäng nimega Simon Game
Arduino OLED madu mäng: 3 sammu
Arduino OLED Snake Game: Tere ja tere tulemast, meie juhendite juurde, kuidas OLED -mängu teha ja arduino teha, see projekt sündis, kui me üritasime oma esimest mängu arduinoga teha, niiii, mõtlesime, kust alustada paremini kui nokia klassikaline madu (vähemalt
Lülitiga kohandatavad mänguasjad: munakaugjuhtimisega madu on ligipääsetav!: 7 sammu (piltidega)
Lülitiga kohandatavad mänguasjad: munaga kaugjuhtimisega madu on ligipääsetav !: Mänguasjade kohandamine avab uusi võimalusi ja kohandatud lahendusi, mis võimaldavad piiratud motoorsete võimete või arenguhäiretega lastel mänguasjadega iseseisvalt suhelda. Paljudel juhtudel ei suuda kohandatud mänguasju vajavad lapsed