Arduino Game Boy (4 / 4 steg)

Steg 4: Programmera din Arduino Gameboy

Det finns många program som du kan ladda ner till detta system. En av dem är lastbil lane (inte skapad av mig men modifierade för detta system)

Koden är:

#include < LiquidCrystal.h >
LiquidCrystal display
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

Ratt potentiometer
CONST int POTPIN = 1;
CONST int MAXPOT = 800; utan att behöva vända hjulet hela vägen till 1023 :)

Piezo speaker
CONST int SPEAKERPIN = 9;

CONST int RANDSEEDPIN = 0; en analog stift som inte är kopplad till något

CONST int MAXSTEPDURATION = 300; Börja långsamt, varje steg är 1 millisekunder kortare.
CONST int MINSTEPDURATION = 150; Detta är så fort det blir

CONST int NGLYPHS = 6;
specialtecknen definieras från 1 (inte 0),
Aktivera lcd.print() av null-terminerade strängar
byte tecken [NGLYPHS] [8] = {
1: bil upp
{B00000,
B01110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
2: bil ner
, {B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B01010,
B00000}
3: lastbil upp
, {B00000,
B11110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
4: lastbil ner
, {B00000,
B00000,
B00000,
B00000,
B11110,
B11111,
B01010,
B00000}
5: crash upp
, {B10101,
B01110,
B01110,
B10101,
B00000,
B00000,
B00000,
B00000}
6: krascha ner
, {B00000,
B00000,
B00000,
B10101,
B01110,
B01110,
B10101,
B00000}
};

CONST int NCARPOSITIONS = 4;

Varje position mappas till en kolumn med 2 tecken
Används för att meningsfullt när jag hade en 5: e position
där bilen eller krasch drogs som 2 glyfer
(kan inte göra det eftersom 0 avslutar strängar),
så det är ganska dumt nu, men det inte är trasigt :)
CONST char BLANK = 32.
char car2glyphs [NCARPOSITIONS] [2] = {
{1, TOM}, {2, TOMT}, {TOMT, 1}, {TOM, 2}
};
char truck2glyphs [NCARPOSITIONS] [2] = {
{3, TOMT}, {4, TOM}, {TOMT, 3}, {TOMT, 4}
};
char crash2glyphs [NCARPOSITIONS] [2] = {
{5, TOM}, {6, TOM}, {TOMT, 5}, {TOMT, 6}
};

CONST int ROADLEN = 15. LCD bredd (inte räknar vår bil)
int road [ROADLEN]; positioner i andra bilar
char line_buff [2 + ROADLEN]; AUX sträng för drawRoad()
int road_index;
int car_pos;
Off-the-grid position betyder tom kolumn, så MAXROADPOS
anger Sannolikheten för att en bil i en kolumn
t.ex. 3 * NCARPOSITIONS ger p = 1/3
CONST int MAXROADPOS = 3 * NCARPOSITIONS;
int step_duration;

int krasch; sant om kraschade
unsigned int crashtime; Millis() när kraschade
CONST int CRASHSOUNDDURATION = 250;

CONST char * INTRO1 = "Lastbilar framåt,";
CONST char * INTRO2 = "Kör försiktigt";
CONST int INTRODELAY = 2000.

void setup()
{
krasch = crashtime = road_index = 0;
step_duration = MAXSTEPDURATION;
line_buff [1 + ROADLEN] = '\0'; null avsluta det
randomSeed(analogRead(RANDSEEDPIN));
för (int jag = 0; jag < NGLYPHS; i ++) {
lcd.createChar(i+1,glyphs[i]);
}
för (int jag = 0; jag < ROADLEN; i ++) {
Road [i] =-1;
}
pinMode(SPEAKERPIN,OUTPUT);
analogWrite(SPEAKERPIN,0); att vara på den säkra sidan
LCD.BEGIN(16,2);
getSteeringWheel();
drawRoad();
lcd.setCursor(1,0);
LCD.Print(INTRO1);
lcd.setCursor(1,1);
LCD.Print(INTRO2);
Delay(INTRODELAY);
}

void loop() {
osignerade långa nu = millis ()-INTRODELAY;
om (! krasch) {
getSteeringWheel();
krasch = (car_pos==road[road_index]);
}
om (krascha) {
om (! crashtime) {
crashtime = nu;
drawRoad();
Spel över text
(hålla första 2 "crash" kolumner intakt)
lcd.setCursor(2,0);
LCD.Print ("kraschade efter");
lcd.setCursor(2,1);
LCD.Print(Now/1000);
LCD.Print ("sekunder.");
}
om ((now-crashtime) < CRASHSOUNDDURATION) {
analogWrite(SPEAKERPIN,random(255)); vitt brus
}
annat {
analogWrite(SPEAKERPIN,0); dramatisk efter krossa tysta :)
}
Delay(10); Vänta lite mellan skriver
}
annat {

int prev_pos = road [(road_index-1) % ROADLEN];
int this_pos = random(MAXROADPOS);
medan (abs(this_pos-prev_pos) < 2) {/ / inte jam vägen
this_pos = random(MAXROADPOS);
}
Road [road_index] = this_pos;
road_index = (road_index + 1) % ROADLEN;
drawRoad();
Delay(step_duration);
om (step_duration > MINSTEPDURATION) {
step_duration--; gå fortare
}
}
}
void getSteeringWheel() {
car_pos = map(analogRead(POTPIN),0,1024,0,NCARPOSITIONS);
}

void drawRoad() {
för (int jag = 0; jag < 2; i ++) {
om (krascha) {
line_buff [0] = crash2glyphs [car_pos] [i];
}
annat {
line_buff [0] = car2glyphs [car_pos] [i];
}
för (int j = 0; j < ROADLEN; j ++) {
int pos = road [(j+road_index) % ROADLEN];
line_buff [j + 1] = pos > = 0 & & pos < NCARPOSITIONS? truck2glyphs [pos] [i]: Tom;
}
lcd.setCursor(0,i);
LCD.Print(line_buff);
}
}

Se Steg
Relaterade Ämnen

Tal-kontrollerade Game Boy Advance

Detta är ett projekt jag arbetat med under min elektronik klass på Pomona College. Tack till Professor Dwight Whitaker och Tony Grigsby för deras hjälp och vägledning under hela projektet, och kredit till Jonathan Wong för idén till detta projekt!Ock...

Game Boy kostym

Även om min son är mer av en 3DS kinda kid, älskar han vintage videospel och alla saker Nintendo så han bestämde sig i år han ville vara och oldskool Nintendo Game Boy för Halloween. Här är hur jag gjorde honom till en med min symaskin.Steg 1: Monter...

Game Boy Dress

ingen spela, detta Game Boy dress är lätt att göra och perfekt för Halloween.Så tryck på pause på Tetris, och få ut din symaskin, eftersom det är dags att bygga denna sak!Steg 1: material För denna klänning, du behöver en grå tyg för basen, liksom vi...

Domaster & Tetrawing - Game Boy & Tetris spelet omvandla robotar!

Behold: Domaster & Tetrawing - heroic Nintendobots! Omvandla från Game Boy system & Tetris spelet till robot & bird, och tillbaka!Namnet Domaster är en sammanslagning av "Matrisskrivare med Stereo Sound", blurb skrivit ovan skärmarna...

Lägga till en Pro Sound / Line-utgång till en Super Game Boy

Välkommen. Idag installerar vi kallar mest "pro sound" utdata till en Super Game Boy. Det är en line-utgång som kringgår alla oönskade kretsar buller och ger dig en bättre signal-brus-förhållande (mindre hum, mer bas) och låter dig använda RCA,...

Debitera en Game Boy Advance SP och fortfarande har den inkopplad i en Gamecube!

jag spelade the Legend Zelda Wind Waker med min GBA SP ansluten till min Gamecube och det började ta slut juice. Så jag snabbt sprang till kylen och drog ut några apelsinjuice! Jag hällde den i ett glas och sprang till stackarn. Agera snabbt jag satt...

Game Boy 3.5mm Pro Sound DIY

IntroductionPro sound är en enkel modifiering som ger tydligare och starkare ljud via en 3.5mm audio out-uttag. Kunskapsnivån är grundläggande och är bra för nybörjare:MaterialUrsprungliga Game Boy DMG40W lödkolv28 gauge elektrisk tråd3.5mm ljudutgån...

Game Boy bakgrundsbelysning | Hur man installerar | Game Boy DMG

Kontrollera ut oss på Gilla oss på Facebook eller följ oss på twitter. Mer Game Boy och handhållna Installationsinstruktioner finns våra instruktioner sida.IntroduktionLägga en bakgrundsbelysning till du är game boy en av de enklaste, mest effektiva...

Game Boy kamera stativ hacka

Om du erkänner att Nintendos Game Boy kameran är lika cool som en frysta räkor eyestalk så - som jag - har du förmodligen varit frustrerad att det finns inget enkelt sätt att montera din gameboy på ett stativ som alla människor med hjärnor i deras sk...

Game Boy Pocket bakgrundsbelysning

nu när det har varit ca tretton år sedan GameBoy Pocket har varit ute, har jag beslutat att installera en bakgrundsbelysning i enheten. Ja, finns det en GameBoy ljus, och det finns alltid en GameBoy SP, men vi alla vet den självtillfredsställelse som...

DIY PS/2 tangentbord Adapter för LSDj (Game Boy)

Obs: Länk kablar alla variera i design. Vi kan inte garantera att denna handledning kommer att vara tillämpliga för din kabel.Delar som behövs:Gameboy & Gameboy Color Link-kabel (eftermarknad föredrog)DIN 6 / PS/2 kvinnliga adapter - http://www.digik...

Game Boy Color Ersätt högtalare

Detta instructable visar hur man byter en talare från en Game Boy Color. Dessa system har en vana att ha fabriken talaren misslyckas efter en tid. Den goda nyheten är, en ny högtalare är endast $1-2 på ebay, och det är en riktigt enkel fix. Det bara...

Nintendo Game Boy gjorde till en Digital klocka

I detta instructable jag ska visa dig hur jag gjorde min egen retro videospel tema digital klocka från en gammal trasig Nintendo Game Boy.Sak behövs; En gammal trasig Nintendo Game Boy du inte misstycker skära upp, billiga digital väckarklocka ungefä...

Game Boy hårddisk

Jag modded en bruten original gameboy till en hård driva fall. Strömindikatorn tänds när hårddisken är ansluten och blinkar när data överförs. Gameboy fungerar också som en cool sätt att lagra en game boy-spel jag förvandlas till ett memory stick ett...

Game Boy DMG vertikal linje reparera

vertikala linjen reparation för din Game Boy original. Besök HandHeldLegend.com för mer information.Försiktigt köra din lödkolv över LCD remsan nedanför skärmen. Försök inte detta för vågräta linjer eftersom det är en låg framgång och hög chans att s...

Game Boy LED DIY

Byta LED färg på din ursprungliga spel pojke DMG. Besök Hand Held Legend mer.MaterialTri-wing skruvmejselLödkolv/löda3mm lysdioder (diffus)2K ohms motståndLöda wickInstruktionerÖppna din Game Boy genom att ta bort 6 tri-wing skruvarna på baksidan. Oc...

Game Boy RCA Pro ljud DIY

IntroduktionRCA Pro Sound är en ändring för din Game Boy DMG att tillåta högre, klarare ljud.MaterialGame Boy DMG28 gauge trådLödkolv/lödaStepper bit/DrillTri-Wing skruvmejsel2 RCA panel mount-uttagSteg för steg1. öppna din Game Boy genom att ta bort...

Gameboy bakgrundsbelysning: Hur man bakgrundsbelysning en Game Boy (DMG)

Om du gillar vad vi gör, hitta vår butik på http://asmretro.com eller hitta oss på Facebook och Instagram!Obligatoriska delar:ASM Retro "täthet" Bakgrundsljus KitTriwing skruvmejselPhilips huvud skruvmejselMindre Philips huvud skruvmejselLödkolv...

Hur du använder skrivaren Game Boy

detta är i grunden en handbok för alla som har problem med att använda det Game Boy skrivare. Jag trodde det kan vara till nytta med tanke på att det finns en brist på pdf Game Boy skrivare manualer online. Idag kommer vi att överväga hur du använder...