Jack Daly
Published © CC BY

8BitCADE Level UP - A Fun Handheld Gaming Console

A fun handheld gaming console based on the Arduboy consoles used to teach 1 bit game development & basics of code!

BeginnerShowcase (no instructions)588
8BitCADE Level UP - A Fun Handheld Gaming Console

Things used in this project

Hardware components

Pro Micro - 5V/16MHz
SparkFun Pro Micro - 5V/16MHz
×1
Arduino LCD Screen
Arduino LCD Screen
×1
Arduboy Compatible
Arduboy Compatible
×1
Tactile Switch, Top Actuated
Tactile Switch, Top Actuated
×1
JLCPCB Customized PCB
JLCPCB Customized PCB
×1
8BitCADE Level UP
×1

Software apps and online services

Arduino Web Editor
Arduino Web Editor

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

Example Case!

Print your own case!

Schematics

Level UP Schematic

Scheme

Code

8BitCADE_Hardware_Test.ino

Arduino
Hardware test!
/* 8BitCADE Hardware Test written by Steve Daly
  Tests All buttons except reset, LEDS, sound and OLED.
  Sprite Demo using https://diyusthad.com/image2cpp Settings BMP image, Set file resolution eg 34x34, Black Background, Brightness 128, Scale to fit keeping proportions, Centre is required,
  Output Arduino Code, Identifier player (name of sprite), Draw Mode Vertical, Generate code and copy and paste just the drawing code.
*/

#include <Arduboy2.h>
Arduboy2 arduboy;
#include <ArduboyTones.h>
ArduboyTones sound(arduboy.audio.enabled);
#include "sprite.h"

int LED_G = 3;
int LED_R = 10;
int LED_B = 9;

char text[] = "Press Buttons!";
char text1[] = "Hear Sound!";

void setup() {
  arduboy.begin();
  arduboy.clear();
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(LED_B, OUTPUT);

  arduboy.audio.on(); //turns on audio
}
void loop() {
  arduboy.clear();
  arduboy.pollButtons();

  if (arduboy.justPressed(LEFT_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, consoleleft, 0); // X, Y, sprite name.
    arduboy.display();
    digitalWrite(LED_G, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_G, HIGH);   // turn the LED on (HIGH is the voltage level)
  }

  if (arduboy.justPressed(RIGHT_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, consoleright, 0); // X, Y, sprite name.
    arduboy.display();
    digitalWrite(LED_B, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_B, HIGH);   // turn the LED on (HIGH is the voltage level)
  }

  if (arduboy.justPressed(UP_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, consoleup, 0); // X, Y, sprite name.
    arduboy.display();
    digitalWrite(LED_R, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_R, HIGH);   // turn the LED on (HIGH is the voltage level)
  }
  if (arduboy.justPressed(DOWN_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, consoledown, 0); // X, Y, sprite name.
    arduboy.display();
    digitalWrite(LED_G, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_G, HIGH);   // turn the LED on (HIGH is the voltage level)
    digitalWrite(LED_R, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_R, HIGH);   // turn the LED on (HIGH is the voltage level)
    digitalWrite(LED_B, LOW);   // turn the LED on (HIGH is the voltage level)
    delay (100);
    digitalWrite(LED_B, HIGH);   // turn the LED on (HIGH is the voltage level)
  }
  if (arduboy.justPressed(A_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, console_a, 0); // X, Y, sprite name.
    arduboy.display();
    arduboy.setCursor(30, 54);
    arduboy.print(text1);
    arduboy.display();
    delay (100);

    for (int i = 0; i < 2000; i = i + 100) {
      sound.tone(i, 50);
      delay(50);
    }

  }
  if (arduboy.justPressed(B_BUTTON))
  {
    Sprites::drawOverwrite(0, 0, console_b, 0); // X, Y, sprite name.
    arduboy.setCursor(30, 54);
    arduboy.print(text1);
    arduboy.display();
    delay (100);

    for (int i = 2100; i > 0; i = i - 100) {
      sound.tone(i, 50);
      delay(50);
    }

  }

  else {
    Sprites::drawOverwrite(0, 0, console, 0); // X, Y, sprite name.
    arduboy.setCursor(25, 54);
    arduboy.print(text);
    arduboy.display();
    delay (100);
    {
    }
  }
}

Credits

Jack Daly
1 project • 12 followers
Hi Makers! I'm Jack, a Maker, Student and founder of microcade. If you have any questions, email me at jackdaly@playmicrocade.com
Contact
Thanks to Kevin Bates and Blinky.

Comments

Please log in or sign up to comment.