Olá Amigos,
Na década de 80 existiam vários modelos de relógio Casio com Game embutido e era uma febre entre a molecada. Usei um LCD Nokia 5110 , alguns botões, um Garagino e um pote de Tupperware para replicar o jogo que vinha com relógio Casio Game-10. Vejam o vídeo:
Componentes utilizados:
1 - Arduino Garagino
1 - LCD Nokia 5110
4 - Botões (chave momentânea)
1 - Buzzer
1 - Bateria 9V
1 - 7805 (conversor de tensão)
2 - Capacitores de 100nF
4 - Resistores de 330
Segue a ligação dos pinos utilizados no projeto:
Arduino
10 - Positivo do Buzzer
08 - Positivo do botão que movimenta a nave
11 - Positivo do botão de contole de som e led do LCD
09 - Positivo do Botão de tiro
03 - LCD - Serial clock out (SCLK)
04 - LCD - Serial data out (DIN)
05 - LCD - Data/Command select (D/C)
07 - LCD - chip select (CS/CE)
06 - LCD - reset (RST)
02 - LCD - BL (Back Light)
Pos - Buzzer - Botão Nave
- Botão Luz e Som
- Saida do 7805
- VCC do LCD
Neg - Resistor (330) do Buzzer
- Resistor (330) do Botão nave
- Resistor (330) do Botão Luz e Som
- Negativo do 7805
- GND do LCD
Buzzer
Pos - Positivo do Arduino
Neg - Pino 10 do Arduino
- Resistor (330)
Botão Nave
Pos - Positivo do Arduino
Neg - Pino 08 do Arduino
- Resistor (330)
Botão Tiro
Pos - Positivo do Arduino
Neg - Pino 09 do Arduino
- Resistor (330)
Botão Luz e som
Pos - Positivo do Arduino
Neg - Pino 11 do Arduino
- Resistor (330)
Botão Início
Polo1 - Positivo da bateria
Polo2 - Entrada do 7805
Bateria (9V)
Pos - Polo 1 do botão inicio
Neg - Negativo do 7805
7805 (Usar capacitores de 100nF entre os polos)
Ent - Polo 2 do botão inicio
Sai - Positivo do Arduino
Neg - Negativo da bateria
- GND do Arduino
LCD
rst - Pino 06 do Arduino
ce - Pino 07 do Arduino
dc - Pino 05 do Arduino
din - Pino 04 do Arduino
clk - Pino 03 do Arduino
vcc - Positivo do Arduino
bl - Pino 02 do Arduino
gnd - Ground do Arduino
Seguem as bibliotecas utilizadas:
E o código:
/////////////////////////////////////////
// Arduino - Casio Game 10 //
// Autor: Charles Set/2013 V.1.2 //
/////////////////////////////////////////
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include "pitches.h" //biblioteca para emitir notas musicais
int buzz = 10; //som
int bot_nave = 8; //botão mira no pino 8
int sbot_nave; //leitura do botão
int bot_som = 11; //botão de som e luz
int sbot_som;
int som_cont = 0; //contrador das funções som e luz
boolean luz;
boolean som = true;
int nave_cont = 1; //contador para posição da mira
int bot_tiro = 9; //botão de tiro no pino 9
int sbot_tiro; //leitura do botão
int tiro_posic = 0; //contador para posição da mira
int tiro_cont = 0;
int nave_posic = 2;
int inimigo_cont = 1;
int inimigo1_cont = 0;
int start_tiro = 0; //checa que o tiro foi disparado
int inimigo_posic = 2; //posição da nave inimiga
int tiroi_cont = 0;
int start_tiroi = 0;
int tiroi_posic = 0;
int nivel = 100;
int bonus = 0;
int pontos = 0;
String pontosf;
int vidas = 3;
int num1 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
boolean demomode = true;
int ds = 1;
int contraste = 40;
int contraste_cont = 0;
// pin 3 - Serial clock out (SCLK)
// pin 4 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 7 - LCD chip select (CS/CE)
// pin 6 - LCD reset (RST)
// pin 2 - LCD BL (Back Light)
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);
static unsigned char PROGMEM nave[] = { B00110, B01111, B11110, B11110, B01111, B00110, B00000}; //Array graph nave
static unsigned char PROGMEM inimigo[]= { B00000, B00110, B11111, B11111, B00110, B00000, B00000}; //Array graph inimigo
static unsigned char PROGMEM sino[] = { B00100, B01010, B01010, B01010, B11111, B00100}; //Array graph sino
static unsigned char PROGMEM um[] = { B1111111, B1110111, B1100111, B1010111, B1110111, B1000001, B1111111}; //Array graph um
static unsigned char PROGMEM dois[] = { B1111111, B1000011, B1111101, B1100011, B1011111, B1100001, B1111111}; //Array graph dois
static unsigned char PROGMEM tres[] = { B1111111, B1000011, B1111101, B1100011, B1111101, B1000011, B1111111}; //Array graph tres
static unsigned char PROGMEM quatro[] = { B1111111, B1011101, B1011101, B1100001, B1111101, B1111101, B1111111}; //Array graph quatro
static unsigned char PROGMEM tiro[] = { B111,B000,B000,B000,B000,B000,B000,B000}; //Array graph tiro
void setup()
{
Serial.begin(9600);
randomSeed(analogRead(0));
pinMode(bot_nave, INPUT);
pinMode(bot_tiro, INPUT);
pinMode(bot_som, INPUT);
pinMode(buzz, OUTPUT);
pinMode(2, OUTPUT);
monta_tela();
}
void loop()
{
if (luz == true) digitalWrite(2, HIGH);
else digitalWrite(2,LOW);
//demo mode
if (demomode == true) demo();
//move a nave
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH && tiro_cont == 0) {
nave_cont = nave_cont + 1;
if (nave_cont == 1 ) {nave_posic = 2; move_nave();}
if (nave_cont == 2 ) {nave_posic = 10;move_nave();}
if (nave_cont >= 3 ) {nave_posic = 18;move_nave();nave_cont = 0;}
delay(nivel);
}
//tiro
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH) start_tiro = 1; delay(nivel);
if (start_tiro == 1) tiro_cont = tiro_cont + 1;
if (tiro_cont == 1) {tiro_posic = 46;move_tiro();}
if (tiro_cont == 2) {tiro_posic = 41;move_tiro();}
if (tiro_cont == 3) {tiro_posic = 34;move_tiro();}
if (tiro_cont == 4) {tiro_posic = 30;move_tiro();}
if (tiro_cont == 5) {tiro_posic = 23;move_tiro();}
if (tiro_cont == 6) {tiro_posic = 19;move_tiro();}
if (tiro_cont == 7) {tiro_posic = 12;move_tiro();}
if (tiro_cont >= 8) {tiro_posic = 8;move_tiro();
if (nave_posic == inimigo_posic){
beep(5);
pisca_inimigo();
placar(10);
}
start_tiro = 0;
tiro_cont = 0;
apaga_tiro();
}
//nave inimiga
if (tiroi_cont == 0) inimigo_cont = inimigo_cont + 1;
if (inimigo_cont >= 15) {
int pos = random(1, 4);
if (pos == 1) inimigo_posic = 2; move_inimigo();
if (pos == 2) inimigo_posic = 10; move_inimigo();
if (pos == 3) inimigo_posic = 18;move_inimigo();
start_tiroi = 1;
}
//Tiro nave inimiga
if (start_tiroi == 1) inimigo1_cont = inimigo1_cont + 1;
if (inimigo1_cont >= 5) {
tiroi_cont = tiroi_cont + 1;
if (tiroi_cont == 1) {tiroi_posic = 8; move_tiroi();}
if (tiroi_cont == 2) {tiroi_posic = 12;move_tiroi();}
if (tiroi_cont == 3) {tiroi_posic = 19;move_tiroi();}
if (tiroi_cont == 4) {tiroi_posic = 23;move_tiroi();}
if (tiroi_cont == 5) {tiroi_posic = 30;move_tiroi();}
if (tiroi_cont == 6) {tiroi_posic = 34;move_tiroi();}
if (tiroi_cont == 7) {tiroi_posic = 41;move_tiroi();}
if (tiroi_cont >= 8) {tiroi_posic = 46;move_tiroi();
beep(1);
start_tiroi = 0;
tiroi_cont = 0;
apaga_tiroi();
pisca_nave();
vidas = vidas - 1;
apaga_numero();
if (vidas == 2) {
display.drawRect(78,11,5,1, WHITE); //vidas
display.display();
}
if (vidas == 1) {
display.drawRect(78,15,5,1, WHITE); //vidas
display.display();
}
if (vidas <= 0) { // FIM DO JOGO
display.drawRect(78,19,5,1, WHITE); //vidas
display.display();
beep(2);
// while(true){}
demomode = true;
demo();
}
}
inimigo1_cont = 0;
}
//controle de luz e som;
luzesom();
}
/////////////////
/// ROTINAS ///
/////////////////
void move_nave(){
display.drawBitmap(55,2, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,10, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,18, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,nave_posic, nave, 8,7, BLACK); //coloca a nave na nova posição
display.display();
}
void move_inimigo(){
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.drawBitmap(1,inimigo_posic, inimigo, 8,7, BLACK);
display.display();
inimigo_cont = 0;
}
void move_tiro(){
display.drawBitmap(tiro_posic,nave_posic + 2, tiro, 8,3, BLACK);
checa_tiro();
display.display();
}
void move_tiroi(){
checa_tiro();
display.drawBitmap(tiroi_posic,inimigo_posic + 2, tiro, 8,3, BLACK);
display.display();
}
void apaga_tiro(){
// delay(nivel);
display.drawBitmap(46, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(41, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(34, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(30, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(23, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(19, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(12, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(8, nave_posic + 2, tiro, 8,3, WHITE);
display.display();
}
void apaga_tiroi(){
// delay(nivel);
display.drawBitmap(46, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(41, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(34, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(30, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(23, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(19, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(12, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(8, inimigo_posic + 2, tiro, 8,3, WHITE);
display.display();
}
void checa_tiro(){
if (nave_posic == inimigo_posic && tiro_posic == tiroi_posic){
if (tiro_posic == 46 || tiro_posic == 41){
display.drawBitmap(45,25, um, 8,7, BLACK);
placar(1);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num1 = 1;
checa_numeros();
}
if (tiro_posic == 34 || tiro_posic == 30){
display.drawBitmap(34,25, dois, 8,7, BLACK);
placar(2);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num2 = 1;
checa_numeros();
}
if (tiro_posic == 23 || tiro_posic == 19){
display.drawBitmap(23,25, tres, 8,7, BLACK);
placar(3);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num3 = 1;
checa_numeros();
}
if (tiro_posic == 12 || tiro_posic == 8){
display.drawBitmap(12,25, quatro, 8,7, BLACK);
placar(4);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num4 = 1;
checa_numeros();
}
}
}
void beep(int tipo){
if (som == true){
if (tipo == 1){
analogWrite(buzz, HIGH);
delay(100);
analogWrite(buzz, LOW);
}
if (tipo == 2){
analogWrite(buzz, HIGH); delay(100);
analogWrite(buzz, LOW); delay(200);
analogWrite(buzz, HIGH); delay(100);
analogWrite(buzz, LOW);
}
if (tipo == 5){
int melody[] = {NOTE_DS8, NOTE_A7, NOTE_F7, NOTE_C7, NOTE_C6};
int noteDurations[] = { 8, 8, 8, 8, 4, 4 };
for (int thisNote = 0; thisNote < 5; thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
tone(buzz, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(buzz);
}
}
}
}
void placar(int qt){
pontos = pontos + qt;
if (pontos <= 9) pontosf = "000" + String(pontos);
if (pontos >= 10 && pontos <=99) pontosf = "00" + String(pontos);
if (pontos >= 100 && pontos <=999) pontosf = "0" + String(pontos);
display.setTextColor(WHITE); //Seta a cor do texto
display.setTextSize(2); //Seta o tamanho do texto
display.setCursor(10,34); //Seta a posição do placar
display.print("0000");
display.setCursor(10,34); //Seta a posição do placar
display.print("1111");
display.setCursor(10,34); //Seta a posição do placar
display.print("2222");
display.setCursor(10,34); //Seta a posição do placar
display.print("3333");
display.setCursor(10,34); //Seta a posição do placar
display.print("4444");
display.setCursor(10,34); //Seta a posição do placar
display.print("5555");
display.setCursor(10,34); //Seta a posição do placar
display.print("6666");
display.setCursor(10,34); //Seta a posição do placar
display.print("7777");
display.setCursor(10,34); //Seta a posição do placar
display.print("8888");
display.setCursor(10,34); //Seta a posição do placar
display.print("9999");
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(10,34); //Seta a posição do placar
display.print(pontosf);
}
void apaga_inimigo(){
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
inimigo_posic = 2;
}
void pisca_nave(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(55,2, nave, 8,7, BLACK); //coloca a nave na nova posição
display.drawBitmap(55,10, nave, 8,7, BLACK); //coloca a nave na nova posição
display.drawBitmap(55,18, nave, 8,7, BLACK); //coloca a nave na nova posição
display.display();
delay(200);
display.drawBitmap(55,2, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,10, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,18, nave, 8,7, WHITE); //apaga a posição atual da nave
display.display();
delay(200);
}
display.drawBitmap(55,2, nave, 8,7, BLACK);
}
void pisca_inimigo(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(1,2, inimigo, 8,7, BLACK);
display.drawBitmap(1,10, inimigo, 8,7, BLACK);
display.drawBitmap(1,18, inimigo, 8,7, BLACK);
display.display();
delay(200);
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
delay(200);
}
}
void pisca_numero(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(45,25, um, 8,7, WHITE);
display.drawBitmap(34,25, dois, 8,7, WHITE);
display.drawBitmap(23,25, tres, 8,7, WHITE);
display.drawBitmap(12,25, quatro, 8,7, WHITE);
display.display();
delay(200);
display.drawBitmap(45,25, um, 8,7, BLACK);
display.drawBitmap(34,25, dois, 8,7, BLACK);
display.drawBitmap(23,25, tres, 8,7, BLACK);
display.drawBitmap(12,25, quatro, 8,7, BLACK);
display.display();
delay(200);
}
num1 = 0; num2 = 0; num3 = 0; num4 = 0;
}
void apaga_numero(){
display.drawBitmap(45,25, um, 8,7, WHITE);
display.drawBitmap(34,25, dois, 8,7, WHITE);
display.drawBitmap(23,25, tres, 8,7, WHITE);
display.drawBitmap(12,25, quatro, 8,7, WHITE);
display.display();
num1 = 0; num2 = 0; num3 = 0; num4 = 0;
}
void checa_numeros(){
/////////////////////////////////
/// inicia sequencia bonus ///
/////////////////////////////////
if (num1 == 1 && num2 == 1 && num3 == 1 && num4 == 1){
pisca_numero();
int i = 0;
while (i < 5){
inimigo_cont = inimigo_cont + 1;
if (inimigo_cont >= 15) {
int pos = random(1, 4);
if (i == 4) display.drawBitmap(45,25, um, 8,7, WHITE); display.display();
if (i == 3) display.drawBitmap(34,25, dois, 8,7, WHITE); display.display();
if (i == 2) display.drawBitmap(23,25, tres, 8,7, WHITE); display.display();
if (i == 1) display.drawBitmap(12,25, quatro, 8,7, WHITE); display.display();
if (pos == 1) inimigo_posic = 2; move_inimigo();
if (pos == 2) inimigo_posic = 10; move_inimigo();
if (pos == 3) inimigo_posic = 18;move_inimigo();
inimigo_cont = 0;
beep(1);
i = i + 1;
}
//move a nave
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH && tiro_cont == 0) {
nave_cont = nave_cont + 1;
if (nave_cont == 1 ) {nave_posic = 2; move_nave();}
if (nave_cont == 2 ) {nave_posic = 10;move_nave();}
if (nave_cont >= 3 ) {nave_posic = 18;move_nave();nave_cont = 0;}
delay(nivel);
}
//tiro
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH) start_tiro = 1; delay(nivel);
if (start_tiro == 1) tiro_cont = tiro_cont + 1;
if (tiro_cont == 1) {tiro_posic = 46;move_tiro();}
if (tiro_cont == 2) {tiro_posic = 41;move_tiro();}
if (tiro_cont == 3) {tiro_posic = 34;move_tiro();}
if (tiro_cont == 4) {tiro_posic = 30;move_tiro();}
if (tiro_cont == 5) {tiro_posic = 23;move_tiro();}
if (tiro_cont == 6) {tiro_posic = 19;move_tiro();}
if (tiro_cont == 7) {tiro_posic = 12;move_tiro();}
if (tiro_cont >= 8) {tiro_posic = 8;move_tiro();
start_tiro = 0;
tiro_cont = 0;
apaga_tiro();
if (nave_posic == inimigo_posic){
beep(5);
pisca_inimigo();
placar(30);
}
}
}
tiro_posic = 0;
bonus = bonus + 1;
if (bonus == 2){ //aumenta o nível se entrar 2 x no bonus
nivel = nivel - 5;
if (nivel == 50) nivel = 100;
bonus = 0;
niveltx();
}
}
}
void niveltx(){
int nivelval = (100 - nivel)/5;
display.setTextColor(WHITE); //Seta a cor do texto
display.setTextSize(1); //Seta o tamanho do texto
display.setCursor(68,12); display.print("0");
display.setCursor(68,12); display.print("1");
display.setCursor(68,12); display.print("2");
display.setCursor(68,12); display.print("3");
display.setCursor(68,12); display.print("4");
display.setCursor(68,12); display.print("5");
display.setCursor(68,12); display.print("6");
display.setCursor(68,12); display.print("7");
display.setCursor(68,12); display.print("8");
display.setCursor(68,12); display.print("9");
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(68,12);
display.print(nivelval);
}
void demo(){
while (demomode = true){
//acerta contraste
Serial.println(contraste_cont);
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH){
contraste_cont = contraste_cont + 1;
if (contraste_cont == 1) contraste = 20;
if (contraste_cont == 2) contraste = 25;
if (contraste_cont == 3) contraste = 30;
if (contraste_cont == 4) contraste = 35;
if (contraste_cont == 5) contraste = 40;
if (contraste_cont == 6) contraste = 45;
if (contraste_cont == 7) contraste = 50;
if (contraste_cont == 8) {contraste = 55;contraste_cont = 0;}
beep(1);
monta_tela();
}
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH) { //sai do demomode
demomode = false;
beep(1);
limpa_demo();
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.display();
nave_posic = 2;
vidas = 3;
display.drawRect(78,11,5,1, BLACK); //vidas
display.drawRect(78,15,5,1, BLACK); //vidas
display.drawRect(78,19,5,1, BLACK); //vidas
apaga_numero();
break;
}
luzesom();
int i = i + 1;
if (i == 1) {
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.drawBitmap(55,18, nave, 8,7, BLACK);
display.drawBitmap(1,10, inimigo, 8,7, BLACK);
display.drawBitmap(46,4, tiro, 8,3, BLACK);
display.drawBitmap(46,20, tiro, 8,3, BLACK);
display.drawBitmap(8,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 2) {
display.drawBitmap(41,4, tiro, 8,3, BLACK);
display.drawBitmap(41,20, tiro, 8,3, BLACK);
display.drawBitmap(12,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 3) {
display.drawBitmap(34,4, tiro, 8,3, BLACK);
display.drawBitmap(34,20, tiro, 8,3, BLACK);
display.drawBitmap(19,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 4) {
display.drawBitmap(30,4, tiro, 8,3, BLACK);
display.drawBitmap(30,20, tiro, 8,3, BLACK);
display.drawBitmap(23,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 5) {
display.drawBitmap(23,4, tiro, 8,3, BLACK);
display.drawBitmap(23,20, tiro, 8,3, BLACK);
display.drawBitmap(30,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 6) {
display.drawBitmap(19,4, tiro, 8,3, BLACK);
display.drawBitmap(19,20, tiro, 8,3, BLACK);
display.drawBitmap(34,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 7) {
display.drawBitmap(12,4, tiro, 8,3, BLACK);
display.drawBitmap(12,20, tiro, 8,3, BLACK);
display.drawBitmap(41,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 8) {
display.drawBitmap(8,4, tiro, 8,3, BLACK);
display.drawBitmap(8,20, tiro, 8,3, BLACK);
display.drawBitmap(46,12, tiro, 8,3, BLACK);
display.display();
limpa_demo();
delay(1000);
}
if (i == 9) {
display.drawBitmap(1,2, inimigo, 8,7, BLACK);
display.drawBitmap(55,10, nave, 8,7, BLACK);
display.drawBitmap(1,18, inimigo, 8,7, BLACK);
display.drawBitmap(8,4, tiro, 8,3, BLACK);
display.drawBitmap(8,20, tiro, 8,3, BLACK);
display.drawBitmap(46,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 10) {
display.drawBitmap(12,4, tiro, 8,3, BLACK);
display.drawBitmap(12,20, tiro, 8,3, BLACK);
display.drawBitmap(41,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 11) {
display.drawBitmap(19,4, tiro, 8,3, BLACK);
display.drawBitmap(19,20, tiro, 8,3, BLACK);
display.drawBitmap(34,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 12) {
display.drawBitmap(23,4, tiro, 8,3, BLACK);
display.drawBitmap(23,20, tiro, 8,3, BLACK);
display.drawBitmap(30,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 13) {
display.drawBitmap(30,4, tiro, 8,3, BLACK);
display.drawBitmap(30,20, tiro, 8,3, BLACK);
display.drawBitmap(23,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 14) {
display.drawBitmap(34,4, tiro, 8,3, BLACK);
display.drawBitmap(34,20, tiro, 8,3, BLACK);
display.drawBitmap(19,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 15) {
display.drawBitmap(41,4, tiro, 8,3, BLACK);
display.drawBitmap(41,20, tiro, 8,3, BLACK);
display.drawBitmap(12,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 16) {
display.drawBitmap(46,4, tiro, 8,3, BLACK);
display.drawBitmap(46,20, tiro, 8,3, BLACK);
display.drawBitmap(8,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
limpa_demo();
i = 0;
}
}
}
void limpa_demo(){
display.drawBitmap(55,2, nave, 8,7, WHITE);
display.drawBitmap(55,10, nave, 8,7, WHITE);
display.drawBitmap(55,18, nave, 8,7, WHITE);
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
nave_posic = 2; apaga_tiro(); apaga_tiroi();
nave_posic = 10; apaga_tiro(); apaga_tiroi();
nave_posic = 18; apaga_tiro(); apaga_tiroi();
}
void luzesom(){
//controle de som e luz
sbot_som = digitalRead(bot_som);
if (sbot_som == HIGH) {
delay(100);
som_cont = som_cont + 1;
if (som_cont == 1){
som = false;
display.drawBitmap(75,1, sino, 8,6, WHITE);
display.display();
luz = false;
}
if (som_cont == 2){
som = false;
display.drawBitmap(75,1, sino, 8,6, WHITE);
display.display();
luz = true;
}
if (som_cont == 3){
som = true;
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
luz = true;
}
if (som_cont == 4){
som = true;
luz = false;
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
som_cont = 0;
}
}
}
void monta_tela(){
display.begin();
display.setContrast(contraste); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
//Monta tela
display.drawRoundRect(0,0,66,33,1,BLACK); //box
display.drawRect(11,0,1,33, BLACK); //linhas verticais
display.drawRect(22,0,1,33, BLACK); //linhas verticais
display.drawRect(33,0,1,33, BLACK); //linhas verticais
display.drawRect(44,0,1,33, BLACK); //linhas verticais
display.drawRect(55,0,1,33, BLACK); //linhas verticais
display.setTextSize(2); //Seta o tamanho do texto
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(10,34); //Seta a posição do placar
display.print("0000");
display.setTextSize(1); //Seta o tamanho do texto
display.setCursor(68,12); //Seta a posição do cursor
display.print("0");
display.drawRect(78,11,5,1, BLACK); //vidas
display.drawRect(78,15,5,1, BLACK); //vidas
display.drawRect(78,19,5,1, BLACK); //vidas
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
}
Bom jogo !
Charles
Comentar
No meu nao rodou meu arduino 1.6.6 qual versao eu deve usar para rodar
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)