Arduino Game Boy (4 / 4 paso)

Paso 4: Programar tu Arduino Gameboy

Hay muchos programas que puedes bajar a este sistema. En ellos es carro lane (no creado por mi pero modificado para este sistema)

El código es:

#include < LiquidCrystal.h >
LiquidCrystal pantalla
inicializar la biblioteca con los números de los pines de interfaz
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

Potenciómetro de volante
const int POTPIN = 1;
const int MAXPOT = 800; no hay necesidad de girar la rueda hasta 1023 :)

Altavoz piezoeléctrico
const int SPEAKERPIN = 9;

const int RANDSEEDPIN = 0; un pin analógico que no está conectado a nada

const int MAXSTEPDURATION = 300; Comience lentamente, cada paso es más corto 1 millisec.
const int MINSTEPDURATION = 150; Esto es tan rápido como se pone

const int NGLYPHS = 6;
los glifos se definirá a partir de 1 (no 0),
para permitir lcd.print() de cadenas terminadas en null
glifos de Byte [NGLYPHS] [8] = {}
1: coche para arriba
{B00000,
B01110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
2: coche
, {B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B01010,
B00000}
3: camión hasta
, {B00000,
B11110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
4: camión abajo
, {B00000,
B00000,
B00000,
B00000,
B11110,
B11111,
B01010,
B00000}
5: accidente hasta
, {B10101,
B01110,
B01110,
B10101,
B00000,
B00000,
B00000,
B00000}
6: desplome abajo
, {B00000,
B00000,
B00000,
B10101,
B01110,
B01110,
B10101,
B00000}
};

const int NCARPOSITIONS = 4;

Cada posición se asigna a una columna de 2 glifos
Utilizado para hacer sentido cuando había una 5ª posición
en coche o accidente fue dibujado como 2 pictogramas
(no puede hacer eso desde 0 termina cuerdas),
por lo que ahora es un poco tonta, pero no rompió :)
const char blanco = 32;
char car2glyphs [NCARPOSITIONS] [2] = {}
{1, ESPACIO EN BLANCO}, {2, BLANCO}, {EN BLANCO, 1}, {EN BLANCO, 2}
};
char truck2glyphs [NCARPOSITIONS] [2] = {}
{3, ESPACIO EN BLANCO}, {4, ESPACIO EN BLANCO}, {EN BLANCO, 3}, {EN BLANCO, 4}
};
char crash2glyphs [NCARPOSITIONS] [2] = {}
{5, ESPACIO EN BLANCO}, {6, ESPACIO EN BLANCO}, {EN BLANCO, 5}, {EN BLANCO, 6}
};

const int ROADLEN = 15; Ancho de la pantalla LCD (sin contar nuestro coche)
camino int [ROADLEN]; posiciones de otros coches
char line_buff [2 + ROADLEN]; cadena de AUX para drawRoad()
int road_index;
int car_pos;
Posición Off the grid significa columna vacía, tan MAXROADPOS
determina la probabilidad de que un coche en una columna
por ejemplo, 3 * NCARPOSITIONS da p = 1/3
const int MAXROADPOS = 3 * NCARPOSITIONS;
int step_duration;

accidente de int; True si se estrelló
unsigned int crashtime; Millis() cuando se estrelló
const int CRASHSOUNDDURATION = 250;

const char * INTRO1 = "Adelante, camiones";
const char * INTRO2 = "Conduzca con cuidado";
const int INTRODELAY = 2000;

void setup()
{
accidente = crashtime = road_index = 0;
step_duration = MAXSTEPDURATION;
line_buff [1 + ROADLEN] = '\0'; null terminarlo
randomSeed(analogRead(RANDSEEDPIN));
para (int i = 0; i < NGLYPHS; i ++) {}
lcd.createChar(i+1,glyphs[i]);
}
para (int i = 0; i < ROADLEN; i ++) {}
camino [i] =-1;
}
pinMode(SPEAKERPIN,OUTPUT);
analogWrite(SPEAKERPIN,0); en el lado seguro
LCD.Begin(16,2);
getSteeringWheel();
drawRoad();
lcd.setCursor(1,0);
LCD.Print(INTRO1);
lcd.setCursor(1,1);
LCD.Print(INTRO2);
Delay(INTRODELAY);
}

void loop() {}
sin firmar largo ahora = millis ()-INTRODELAY;
Si (! crash) {}
getSteeringWheel();
accidente = (car_pos==road[road_index]);
}
Si {} (desplome)
Si (! crashtime) {}
crashtime = ahora;
drawRoad();
Juego sobre el texto
(mantener intacta la 2 primeras columnas de "crash")
lcd.setCursor(2,0);
LCD.Print ("Crashed después");
lcd.setCursor(2,1);
LCD.Print(Now/1000);
LCD.Print ("segundos.");
}
Si ((now-crashtime) < CRASHSOUNDDURATION) {}
analogWrite(SPEAKERPIN,random(255)); ruido blanco
}
Else {}
analogWrite(SPEAKERPIN,0); crush post dramático silencio :)
}
Delay(10); Esperar un poco entre escrituras
}
Else {}

int prev_pos = camino [(road_index-1) % ROADLEN];
int this_pos = random(MAXROADPOS);
mientras que (abs(this_pos-prev_pos) < 2) {/ / no jam el camino
this_pos = random(MAXROADPOS);
}
camino [road_index] = this_pos;
road_index = (road_index + 1) % ROADLEN;
drawRoad();
Delay(step_duration);
Si (step_duration > MINSTEPDURATION) {}
step_duration--; ir más rápido
}
}
}
void getSteeringWheel() {}
car_pos = map(analogRead(POTPIN),0,1024,0,NCARPOSITIONS);
}

void drawRoad() {}
para (int i = 0; i < 2; i ++) {}
Si {} (desplome)
line_buff [0] = crash2glyphs [car_pos] [i];
}
Else {}
line_buff [0] = car2glyphs [car_pos] [i];
}
para (int j = 0; j < ROADLEN; j ++) {}
int pos = camino [(j+road_index) % ROADLEN];
¿line_buff [j + 1] = pos > = 0 & & pos < NCARPOSITIONS? truck2glyphs [pos] [i]: espacio en blanco;
}
lcd.setCursor(0,i);
LCD.Print(line_buff);
}
}

Artículos Relacionados

Jugar traje de Game Boy gigante

Jugar traje de Game Boy gigante

He pensado durante mucho tiempo sería un divertido traje para construir y, aun cuando sólo tenía 24 horas para que esto ocurra, yo confiaba en que podría conseguir algo trabajando incluso si fuera jugable. Al final, fue sorprendentemente sin problema
Discurso controlado por Game Boy Advance

Discurso controlado por Game Boy Advance

Este es un proyecto trabajado en mi clase de electrónica en el Pomona College. Gracias al profesor Dwight Whitaker y Tony Grigsby por su ayuda y orientación a lo largo de este proyecto y el crédito a Jonathan Wong por la idea de este proyecto!Además,
T-Game Boy

T-Game Boy

Cuando era un chico pude jugar a Super Mario cuando visite a mi prima. Como no tengo mi propia consola del juego que no pude obtener suficiente de Mario. Desde entonces Super Mario siempre tiene un aura tan interesante.Que aburrido un fin de semana q
Cómo cambiar la batería en un carro de oro/plata Game Boy de pokemon

Cómo cambiar la batería en un carro de oro/plata Game Boy de pokemon

este instructable muestra cómo reemplazar una batería en un carro de pokemon oro/plata.Si tuyo borra tu save y no deja guardar más y lo más probable es que usted tendrá que reemplazar la batería.Esto puede funcionar con otros juegos de Game Boy pero
Game Boy 3.5mm Pro Sound DIY

Game Boy 3.5mm Pro Sound DIY

IntroductionSonido Pro es una simple modificación que produce, el sonido más fuerte a través de un audio de 3,5 mm jack de salida. Nivel de habilidad es básica y es genial para principiantes:MaterialesOriginal Game Boy DMGSoldador de 40WAlambre eléct
Emulador de Game Boy en Nonjailbroken Iphone A

Emulador de Game Boy en Nonjailbroken Iphone A

esta es mi entrada en los Gadgets y Hacking concurso, si pareció útil o disfrutar leyendo, por favor voten por mí.En este instructable, mostrará usted cómo poner GBA4ios en tu iPhone nonjailbroken. GBA4ios es un emulador de Game Boy que juegos Gamebo
Nintendo Game Boy se convirtió en un reloj Digital

Nintendo Game Boy se convirtió en un reloj Digital

En este instructable te voy a mostrar cómo hice mi propio reloj digital temática de videojuegos retro de un viejo roto a Nintendo Game Boy.Lo que necesita; Un viejo roto Nintendo Game Boy no le importa cortar, barato reloj despertador digital sobre e
Game Boy Light con pilas: otro proyecto con SUGRU

Game Boy Light con pilas: otro proyecto con SUGRU

los amamos, juego con ellos y están parados como uno de los móviles más grandes consolas de todos los tiempos. Pero usted todavía no puede jugar en la oscuridad. n este proyecto lo soluciono uno de Game Boy Color más molestos defectos sin el uso de l
El control de una Game Boy con un controlador NES! ¿

El control de una Game Boy con un controlador NES! ¿

Todavía tiene ese Game Boy en tu armario?¿que NES el regulador?¡ busto de les!(:Paso 1: Artículos que necesitas:-Música (opcional, pero recomendado)-Soldador-Artículos de soldadura: alambre, soldadura, etc..-Controlador Nes.-Game Boy (este instructab
Transformación de LEGO Game Boy Advance - "Vantage"

Transformación de LEGO Game Boy Advance - "Vantage"

después de juego de mis creaciones más populares de LEGO--réplicas de sistemas y juegos de video juego que se transforman en robots de Hasbro-esque, he creado otra figura de acción personalizada para mi serie! Sólo que esta vez, no sólo tienen una fo
Reproductor de CD de Game Boy

Reproductor de CD de Game Boy

construir un reproductor de CD con un GameBoy antigua, un disco ATAPI y algunos electrónicos. El reproductor de CD es un tipo de cartucho de juego para reproducir CD. Esta es la versión final, conéctelo a un GameBoy y escuchar música!¿quieres ver cóm
RaspiBoy, Gameboy frambuesa Pi, SuperPiBoy: Un RaspberryPi dentro de una Game Boy

RaspiBoy, Gameboy frambuesa Pi, SuperPiBoy: Un RaspberryPi dentro de una Game Boy

¿Tienes un caso de Gameboy? ¿Tienes RaspberryPi? Ahora vamos a construir un RaspiBoy. Es un RaspberryPi dentro corriendo varios emuladores de Game Boy. Te hace sentir de nuevo los viejos tiempos y uno de los mejores gadgets para Retrogaming.Mi RaspiB
Game Boy Android Gamepad

Game Boy Android Gamepad

ACTUALIZACIÓN: Cómo disponibles ahoraQuería jugar emuladores de Nintendo en mi teléfono, pero no me gustó la entrada de pantalla táctil. He escuchado esta queja y otra vez, todo sobre el ' red. He visto algunos grandes buscando soluciones producidos
Adaptador de teclado PS/2 DIY de LSDj (Game Boy)

Adaptador de teclado PS/2 DIY de LSDj (Game Boy)

Nota: Cables de enlace todos varían en el diseño. No podemos garantizar que este tutorial sea aplicable para su cable.Piezas necesarias:Gameboy y Gameboy Color Cable de enlace (del mercado de accesorios preferido)DIN 6 / Adaptador hembra PS/2 - http: