Arduino matrisskrivare spelkonsol (4 / 7 steg)

Steg 4: Programmering konsolen



För att fungera Arduino skiss behöver du LedControl bibliotek bifogas i detta steg. Jag ladda upp den komplett Arduino skiss för orm spel för Nokia-telefonen. Du kan utveckla ditt eget spel. För att ladda upp den skiss första lägga till biblioteket till din arduino miljö, bara ladda upp skissen till din arduino, ta bort mikrokontroller från styrelsen och lägga den till din spelkonsol. Jag kommer lägga upp fler spel till konsolen i framtiden. . Bara det.

#include "LedControl.h"
anslutning till MAX7219 (data, clik, last, #of dispplay)
LedControl lc = LedControl(11,13,10,1);

riktning
CONST int topp = 0;
CONST int höger = 1;
CONST int botten = 2;
CONST int vänster = 3.
Snake längd
CONST int MAX_SNAKE_LENGTH = 16.

Variabler
Adafruit_8x8matrix matrix = Adafruit_8x8matrix(); Displayen
int riktning = höger; rörelseriktning
int snakeX [MAX_SNAKE_LENGTH]; X-koordinaterna för orm
int snakeY [MAX_SNAKE_LENGTH]; Y-koordinaterna för orm
int snakeLength = 3;
int poäng = 3. / /
osignerade långa prevTime = 0; för gamedelay (ms)
osignerade långa fördröjningstid = 500. Spel steg i ms

int fruitX, fruktig;
osignerade långa fruitPrevTime = 0;
osignerade långa fruitBlinkTime = 100;
osignerade långa bonusTime = 0;
osignerade långa bonusPrevTime = 0;
int fruitLed = sant;
int bonusLed = sant;
int bonusX, bonusY;

void setup() {
vakna upp MAX72XX från energisparläge
LC.Shutdown(0,false);
Ange en medelstark ljusstyrka för lysdioderna
lc.setIntensity (0, 15);
Stäng av alla lysdioder på displayen.
lc.clearDisplay(0);
Serial.BEGIN(9600);

randomSeed(analogRead(0));
pinMode(0,INPUT);
pinMode(17,INPUT);
pinMode(1,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
summern
pinMode(12,OUTPUT);

snakeX [0] = 0;
snakeY [0] = 4;
för (int jag = 1; jag < MAX_SNAKE_LENGTH; i ++) {
snakeX [i] = snakeY [i] = -1;
}
makeFruit();

}

void loop() {
Delay(10);
checkButtons(); om någon knapp trycks eller inte

osignerade långa currentTime = millis();
om (currentTime - prevTime > = fördröjningstid) {
NeXTstep();

prevTime = currentTime;
}
draw(); gör mellanmål & mat
}

void checkButtons() {
IF(digitalRead(3)==0)
riktning = topp;
annat if(digitalRead(4)==0)
riktning = höger;
annat if(digitalRead(5)==0)
riktning = vänster;
annat if(digitalRead(2)==0)
riktning = botten.
}

void draw() {
lc.clearDisplay(0);
drawSnake();
drawFruit();

}
void drawSnake() {
för (int jag = 0; jag < snakeLength; i ++) {
lc.setLed (0, snakeX [i], snakeY [i], true);
}
}
void drawFruit() {
om (inPlayField (fruitX, fruktig)) {
osignerade långa currenttime = millis();
om (currenttime - fruitPrevTime > = fruitBlinkTime) {
fruitLed = (fruitLed == true)? falska: sant;
fruitPrevTime = currenttime;
}
lc.setLed (0, fruitX, fruktig, fruitLed);
}
}
booleska inPlayField (int x, int y) {
tillbaka (x > = 0) & & (x < 8) & & (y > = 0) & & (y < 8);
}
void nextstep() {
för (int jag = snakeLength-1; jag > 0; i--) {
om ((direction == RIGHT) & & (snakeX [0]-snakeLength == 7))
snakeX [0] = -1;
annars om ((direction == LEFT) & & (snakeX [0] + snakeLength == 0))
snakeX [0] = 8.
annat snakeX [i] = snakeX [i-1];
om ((direction == TOP) & & (snakeY [0] + snakeLength == 0))
snakeY [0] = 8.
annars om ((direction == BOTTOM) & & (snakeY [0]-snakeLength == 7))
snakeY [0] =-1;
annars snakeY [i] = snakeY [i-1];
}
Switch(Direction) {
fall toppen:
snakeY [0] = snakeY [0] -1;
bryta;
fall rätt:
snakeX [0] = snakeX [0] + 1;
bryta;
fallet botten:
snakeY [0] = snakeY [0] + 1;
bryta;
fall kvar:
snakeX [0] = snakeX [0] -1;
bryta;
}
om ((snakeX [0] == fruitX) & & (snakeY [0] == fruktig)) {
snakeLength ++;
Score ++;
Tone(12,4500,50);
IF(snakeLength < MAX_SNAKE_LENGTH) {
makeFruit();
}
annat {
fruitX = fruktig = -1;
}
IF(score%8==0)
{
snakeLength = 3;
Fördröjningstid = fördröjningstid - 100.
}
}
snakeItSelf();
}
void makeFruit() {
int x, y;
x = random (0, 8);
y = random (0, 8);
samtidigt (isPartOfSnake (x, y)) {
x = random (0, 8);
y = random (0, 8);
}
fruitX = x;
Fruktig = y;
}

booleska isPartOfSnake (int x, int y) {
för (int jag = 0; jag < snakeLength-1; i ++) {
om ((x == snakeX[i]) & & (y == snakeY[i])) {
return true;
}
}
returnera false;
}
void snakeItSelf() {/ / kolla om mellanmål röra sig
för (int jag = 1; jag < snakeLength; i ++) {
om ((snakeX [0] == snakeX[i]) & & (snakeY [0] == snakeY[i]))
gameOver();
}
}
void gameOver() {
spel över ljud
Tone(12,1000,100);
Delay(100);
Tone(12,1500,200);
Delay(200);
Tone(12,2000,300);
Delay(300);
tonen (12, 494,500);
Delay(500);
lc.clearDisplay(0);
för (int r = 0; r < 8; r ++) {
för (int c = 0; c < 8; c ++) {
lc.setLed (0, r, c, hög);
Delay(50);
} delay(50);
}
Delay(300);
poäng = 3;
snakeLength = 3;
riktning = höger;
snakeX [0] = 3;
snakeY [0] = 4;
Fördröjningstid = 500.
loop();
}

void drawBonus() {
om (inPlayField (fruitX, fruktig)) {
osignerade långa bonusTime = millis();
om (bonusTime - bonusPrevTime > = 300) {
bonusLed = (bonusLed == true)? falska: sant;
bonusPrevTime = bonusTime;
}
lc.setLed (0, bonusX, bonusY, bonusLed);
}
}
void makeBonus() {
int x, y;
x = random (0, 8);
y = random (0, 8);
samtidigt (isPartOfSnake (x, y)) {
x = random (0, 8);
y = random (0, 8);
}
bonusX = x;
bonusY = y;
}

Se Steg
Relaterade Ämnen

DIY Arduino matrisskrivare armbandsur

Handleden klockor är fantastiska och fancy mode accessoarer för män och kvinnor. Beslutsfattare vilja alltid använda något annat. Min diy arduino matrisskrivare armbandsur är slutresultatet efter en månad. Klockan visar tid, datum och temperatur i tv...

Arduino MINTIA - spelkonsol i en Candy Box

Detta Instructables hur du kan använda en liten godis du vill skapa en Arduino färg spel konsolen.Steg 1: Introduktion till MINTIA MINTIA är en multi gunst tablett producerad av Asahi grupp mat, Ltd i Japan. Candy box design gör det mycket enkelt att...

Arduino - matrisskrivare LED TV skriva

1. målUppnå en penna som skriver om matris-skärm.2. krets analysMatrisskrivare skärmen handskrift består av tre huvuddelar: raden scanning krets, kolumn scanning krets visas, ljuspenna identifiering krets, blockdiagram nedan. Ljuspenna används häri i...

Misslyckande & framgångssaga av Arduino klocka

Jag beslutade att bygga en Arduino binära armbandsur. Jag vet ett armbandsur bör vara små i storlek som det är en bärbar projekt. För att valt jag utanpåliggande montering enhet (SMD) som SMD LED, TQFP Atmega IC och SMD motstånd. Som controller vald...

Med en matrisskrivare LED med en Arduino och SKIFT registrera

The Siemens DLO7135 Dot matrix LED är en fantastisk optoelektronik. Det har faktureras som en 5 x 7 matrisskrivare Intelligent Display (r) med minne/dekoder/Driver. Tillsammans med detta minne, den har en 96-teckens ASCII-display set med övre och små...

8 x 8 röda matrisskrivare med Arduino

Du behöver LedControl.h för Arduino IDE.Steg 1: Vad du behöver Arduino eller Arduino klon8 x 8 matrisskrivare med förare ombord5 manliga till kvinnliga hoppare ledningarOm du får det här eBay dess om $10 AU.Steg 2: ledningarVCC går in i 5v på Arduino...

TV-spelkonsol av Arduino

Jag kommer att ge kopplingsschemat och koden för spelet, kan du se arbetet av spelet i den bifogade filen.För att njuta av detta projekt måste du ha kunskap om:lödningatt göra kretsar på prefboard/prickade PCBprogrammera arduinoatt lägga till bibliot...

Matrisskrivare från en CD/DVD läsare med Arduino

Hallå!För en tid sedan samtidigt går igenom sidor här på Instructables, något fångar min uppmärksamhet, en skrivare gjord av en cd-läsare och jag blev förvånad.Jag tänkte: "Detta är otroligt, jag måste göra något!"Jag vet att dessa typer av proj...

Arduino Ping pong med 8 * 8 matrisskrivare & Max7219

Det finns massor av Arduino ping pong tutorial över internet. Men de flesta av dem är för två spelare. Som har ingen att spela med mig så jag var hitta en handledning som är för enskilda spelare. Lyckligtvis har jag hittat en men det är inte så tydli...

Raspberry Pi Nin10do "Light"-spelkonsol

Okej, innan vi börjar kan du titta på videon för att se vad slags spelkonsol som vi kommer att skapa...Det är en hallon Pi2 baserade gaming station där du kan spela alla dina favoritspel från Mario att GTA och Monkey Island till Load Runner...Konsole...

Hur man använder en sju Segment Display - Arduino handledning

En sju Segment Display, är en form av elektronisk skärm enhet för att Visa decimala siffror som är ett alternativ till de mer komplexa matrisskrivare visar.Sju segmenterar skärmar används i digitala klockor, elektroniska elmätare, grundläggande minir...

Arduino enkel 7 segment countdown tidtagare

I handboken Instructables kommer jag visa dig hur man gör en enkel - siffra två - timer med hjälp av Arduino uno ombord och 7 segmenterar skärmar.Vi kommer att kunna ställa in timern i våra program skiss genom att ändra värdet för en variabel. Vi kom...

Handheld Pong & inkräktare på billigt (Arduino kompatibel)

Ett retro handhållna spelsystem billigt nog för en barnens projekt. Möjliga? Absolut! Bara ta på Arduino och billiga kinesiska komponenter!Projektet var utformat som ett lödning projekt för en grupp av ett halvdussin 9 och 10 år gamla barn men det är...

Ultimata klassiska spelkonsol Joystick till USB-Adapter

Denna artikel beskriver hur du använder en Arduino Leonardo eller Arduino Micro göra upp till tre klassiska konsolen joysticks (e.g. Atari 2600, ColecoVision och möjligen andra) tillgänglig till en modern dator (e.g. Fönstren PC, Mac eller Linux). De...

Arduino handledning: Få reste distans med ADNS-9800 Laser Mouse Sensor

ADNS-9800 Laser gaming sensorn består av sensor och VCSEL i ett enda chip-på-board (COB) paket. ADNS-9800 ger förbättrade funktioner som programmerbar ram Betygsätt, programmerbar upplösning, konfigurerbara sömn och vakna tid att passa olika PC gamer...

Hur man gränssnitt LCD (16 X 2) till arduino

Detta instructables förklarar du vad gäller gränssnitt LCD (vätska kristall Dispaly) 16 X 2 till arduino.Några grundläggande punkter när det gäller LCD:-LCD består av 16 rader och 2 kolumner av 5 × 7 eller 5 × 8 LCD dot matriser.LCD är tillgängliga i...

Arduino countdown tidtagare med setup knappar

I handboken Instructables kommer jag visa dig hur man gör ditt eget Arduino två siffriga countdown tidtagare. Jag gjorde min egen krets med hjälp av ATmega328 micro controller men detta är ett valfritt steg. I den här guiden hjälper jag dig att göra...

74HC164 SKIFT Register och din Arduino

SKIFT register är en mycket viktig del av digital logik, de fungerar som lim mellan de parallella och seriella världarna. De minskar tråd räknas, pin och även hjälpa ta last av din cpu genom att kunna lagra sina data.De finns i olika storlekar, med o...

Arduino 8 * 8 ledde matrisen driver med 2 * 74HC595 SKIFT register

Jag köpte en 8 x 8 ledde matrisen inklusive en förare ombord med ett MAX7219CNG chip. Tyvärr detta chip inte fungerar korrekt. Så jag bestämde mig att bygga min egen drivrutin med hjälp av 2 74HC595 SKIFT register.Min lösning är baserad på den "Multi...