#include <AceSPI.h>
#include <AceWire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//#include <TrueRandom.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library.
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL),
// On a D1 Mini: D2(SDA), D1(SCL)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 3; // the number of the pushbutton pin
const int diePin = 8; // the pin used to change the dice
const int led1 = 12;
const int led2 = 14;
#define LOGO_HEIGHT 64
#define LOGO_WIDTH 82
static const unsigned char PROGMEM logo_bmp[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0xe0,0x10,0x00,0x00,0x04,0x03,0xc0,0x00,0x00,0x00,0x00,0xe0,0x38,0x00,0x00,0x06,0x01,0xc0,0x00,0x00,0x00,0x01,0xe0,0x70,0x00,0x00,0x03,0x01,0xc0,0x00,0x00,0x00,0x01,0xe0,0x60,0x00,0x00,0x03,0x81,0xe0,0x00,0x00,0x00,0x01,0xe0,0xc0,0x00,0x00,0x01,0xc1,0x60,0x00,0x00,0x00,0x03,0xa0,0xc0,0x00,0x00,0x00,0xc1,0x70,0x00,0x00,0x00,0x03,0x21,0x80,0x00,0x00,0x00,0xc1,0x30,0x00,0x00,0x00,0x03,0x20,0x80,0x00,0x00,0x00,0x63,0x30,0x00,0x00,0x00,0x03,0x71,0xc0,0x00,0x00,0x00,0x03,0x30,0x00,0x00,0x03,0xfe,0x71,0xc0,0x00,0x00,0x07,0xfe,0x1f,0xf8,0x00,0x0f,0xfe,0x70,0xc0,0x00,0x00,0x07,0xff,0x1f,0xfc,0x00,0x0f,0xfe,0x71,0x00,0x00,0x00,0x03,0xff,0x1f,0xfe,0x00,0x1e,0x0e,0x70,0xc3,0xf8,0x7f,0x80,0x47,0x18,0x0e,0x00,0x1c,0x0e,0x71,0xe7,0xfc,0xff,0xc0,0x47,0x18,0x0f,0x00,0x38,0x0e,0x71,0xef,0xfe,0xff,0xe7,0xff,0x18,0x07,0x00,0x38,0x0e,0x75,0xee,0x0e,0xe0,0xe7,0xff,0x18,0x07,0x00,0x3f,0xfe,0x75,0xee,0xfe,0xe0,0xe7,0xff,0x18,0x07,0x00,0x3f,0xfe,0x75,0xef,0xfc,0xe0,0xe0,0x47,0x18,0x06,0x00,0x3f,0xfe,0x75,0xcf,0xf8,0xe0,0xe0,0xdf,0x18,0x0e,0x00,0x3c,0x0e,0x79,0xdf,0xe0,0xe0,0xe3,0xff,0x1f,0x3e,0x00,0x38,0x0e,0x3d,0xff,0xf0,0xe0,0xef,0xff,0x1f,0xfc,0x00,0x38,0x0e,0x3d,0xd7,0xf0,0xe0,0xef,0xfe,0x1f,0xf8,0x00,0x10,0x06,0x0b,0xd9,0xe0,0x41,0xe3,0xf8,0x3f,0xe0,0x00,0x00,0x03,0x03,0x98,0x60,0x03,0x86,0x70,0x30,0x00,0x00,0x00,0x03,0x83,0x8c,0x30,0x03,0x0c,0x60,0x70,0x00,0x00,0x00,0x03,0x81,0x8f,0x30,0x07,0x38,0x60,0x70,0x00,0x00,0x00,0x01,0x81,0xc7,0xf8,0x07,0xf8,0xe0,0x60,0x00,0x00,0x00,0x01,0xc1,0xfc,0x7c,0x0d,0x8f,0xc0,0xe0,0x00,0x00,0x00,0x00,0xc0,0xf8,0x1c,0x0c,0x07,0xc0,0xc0,0x00,0x00,0x00,0x00,0xe0,0x70,0x19,0x46,0x07,0x81,0xc0,0x00,0x00,0x00,0x00,0x60,0x78,0x33,0xf3,0x07,0x01,0x80,0x00,0x00,0x00,0x00,0x70,0x3c,0x37,0x3b,0x0e,0x03,0x80,0x00,0x00,0x00,0x00,0x38,0x0f,0x37,0x3b,0x3c,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x03,0xb7,0x3b,0x70,0x0e,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0xe2,0x13,0xc0,0x1e,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x60,0x01,0x80,0x3c,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x60,0x01,0x80,0x78,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x70,0x03,0x80,0xf0,0x00,0x00,0x00,0x0,0x00,0x01,0xe0,0x38,0x07,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x18,0x0e,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0e,0x1c,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x8e,0x1c,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xfc,0x1f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//variables
int curDie = 6; //Variable to select which die to use
int die[] = {2, 4, 6, 8, 10, 12, 20, 7};
void setup() {
//setup output to serial monitor
Serial.begin(15200);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Clear the display buffer
display.clearDisplay();
// initialize the button pins as an input:
pinMode(buttonPin, INPUT);
pinMode(diePin, INPUT);
pinMode(led1, OUTPUT);
digitalWrite(led1, HIGH);
pinMode(led2, OUTPUT);
digitalWrite(led2, HIGH);
display.fillScreen(BLACK); // erase the whole display
display.drawBitmap(23, 0, logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1); // draw alien3d logo
display.display();
delay(2000);
display.fillScreen(BLACK);
drawCurDie();
drawDie();
display.display();
}
void loop() {
if(digitalRead(buttonPin) == LOW) {
delay(15);
if(digitalRead(buttonPin) == LOW) {
display.fillScreen(BLACK); // erase the whole display
display.setTextColor(WHITE);
display.setTextSize(3);
int roll;
int roll2 = 0;
if(die[curDie] != 7)
{
roll = random(1, die[curDie]+1); // store the random number
}else
{
roll = random(1, die[curDie]); // store the random number
roll2 = random(1, die[curDie]);
}
if (roll < 10) {
// single character number
switch(die[curDie]){
case 2:
display.setCursor(57, 29);
break;
case 4:
display.setCursor(57, 29);
break;
case 6:
draw6(roll);
break;
case 7:
draw7(roll, roll2);
break;
case 8:
display.setCursor(57, 32);
break;
case 10:
display.setCursor(57, 32);
break;
case 12:
display.setCursor(57, 32);
break;
case 20:
display.setCursor(57, 22);
break;
}
if((die[curDie] != 6) && (die[curDie] != 7)) {
display.println(roll); // write the roll
}
drawDie(); // draw the outline
drawCurDie();
}
else {
// dual character number
switch(die[curDie]){
case 10:
display.setCursor(47, 32);
break;
case 12:
display.setCursor(47, 32);
break;
case 20:
display.setCursor(47, 22);
break;
}
display.println(roll); // write the roll
drawDie(); // draw the outline
drawCurDie();
}
display.display(); // write to display
delay(100);
}
}
if(digitalRead(diePin) == HIGH){
delay(75);
if(digitalRead(diePin) == HIGH){
curDie++;
if (curDie > 7){
curDie=0;
}
display.fillScreen(BLACK);
drawCurDie();
drawDie();
display.display();
}
}
} //end loop
void drawDie() {
switch(die[curDie]){
case 2:
display.drawCircle(SCREEN_WIDTH/2, 40, 23, SSD1306_WHITE);
break;
case 4:
display.drawTriangle(40, 63, 88, 63, 64, 16, SSD1306_WHITE);
break;
case 6:
display.drawRoundRect(40, 16, 48, 48, 5, WHITE);
break;
case 7:
display.drawRoundRect(10, 16, 48, 48, 5, WHITE);
display.drawRoundRect(70, 16, 48, 48, 5, WHITE);
break;
case 8:
display.drawTriangle(40, 60, 88, 60, 64, 16, SSD1306_WHITE);
display.drawTriangle(40, 60, 88, 60, 64, 80, SSD1306_WHITE);
display.drawTriangle(40, 60, 64, 16, 40, 36, SSD1306_WHITE);
display.drawTriangle(88, 60, 64, 16, 88, 36, SSD1306_WHITE);
break;
case 10:
static const unsigned char PROGMEM d10[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf8,0x1f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf8,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x07,0xbe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7d,0xe0,0x03,0xdf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf3,0xc0,0x03,0xcf,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xe7,0xc0,0x01,0xe7,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc7,0x80,0x00,0xf3,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x8f,0x00,0x00,0xf1,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x0f,0x00,0x00,0x78,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x1e,0x00,0x00,0x7c,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x3c,0x00,0x00,0x3c,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3c,0x00,0x00,0x1e,0x0f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xe0,0x78,0x00,0x00,0x1f,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0xf0,0x00,0x00,0x0f,0x03,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x80,0xf0,0x00,0x00,0x07,0x81,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x01,0xe0,0x00,0x00,0x07,0x80,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x03,0xe0,0x00,0x00,0x03,0xc0,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x03,0xc0,0x00,0x00,0x01,0xe0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,0x80,0x00,0x00,0x01,0xe0,0x0f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xe0,0x0f,0x80,0x00,0x00,0x00,0xf0,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x0f,0x00,0x00,0x00,0x00,0x78,0x03,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x80,0x1e,0x00,0x00,0x00,0x00,0x78,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x1e,0x00,0x00,0x00,0x00,0x3c,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x78,0x00,0x00,0x00,0x00,0x1e,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x78,0x00,0x00,0x00,0x00,0x0f,0x00,0x0f,0x80,0x00,0x00,0x00,0x00,0x03,0xe0,0x00,0xf0,0x00,0x00,0x00,0x00,0x0f,0x80,0x07,0xc0,0x00,0x00,0x00,0x00,0x07,0xc0,0x01,0xe0,0x00,0x00,0x00,0x00,0x07,0x80,0x03,0xe0,0x00,0x00,0x00,0x00,0x0f,0x80,0x01,0xe0,0x00,0x00,0x00,0x00,0x03,0xc0,0x01,0xf0,0x00,0x00,0x00,0x00,0x1f,0x00,0x03,0xc0,0x00,0x00,0x00,0x00,0x03,0xc0,0x00,0xf8,0x00,0x00,0x00,0x00,0x3e,0x00,0x07,0xc0,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x3e,0x00,0x00,0x00,0x00,0x7c,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x1f,0x00,0x00,0x00,0x00,0xf8,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x0f,0x80,0x00,0x00,0x01,0xe0,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x07,0xc0,0x00,0x00,0x07,0xc0,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x03,0xe0,0x00,0x00,0x0f,0x80,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x01,0xf0,0x00,0x00,0x1f,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0xf8,0x00,0x00,0x3e,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x3e,0x00,0x00,0x7c,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x1f,0x00,0x00,0xf8,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x0f,0x80,0x01,0xf0,0x00,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x00,0x07,0xc0,0x07,0xc0,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xfc,0x00,0x03,0xe0,0x0f,0x80,0x01,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xc0,0x01,0xf0,0x1f,0x00,0x3f,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x03,0xff,0x7f,0xfe,0x00,0xf8,0x3e,0x07,0xff,0xe0,0x0f,0xfc,0x00,0x00,0x00,0x00,0x1f,0xf8,0x07,0xff,0xe0,0x3c,0x7c,0x7f,0xfe,0x00,0x01,0xff,0x80,0x00,0x00,0x00,0xff,0xc0,0x00,0x3f,0xff,0x1f,0xff,0xff,0xc0,0x00,0x00,0x3f,0xf0,0x00,0x00,0x0f,0xfc,0x00,0x00,0x03,0xff,0xff
};
display.drawBitmap(0, 16, d10, 128, 48, 1);
break;
case 12:
display.drawLine(45, 63, 83, 63, SSD1306_WHITE);
display.drawLine(45, 63, 35, 36, SSD1306_WHITE);
display.drawLine(35, 36, 64, 16, SSD1306_WHITE);
display.drawLine(64, 16, 93, 36, SSD1306_WHITE);
display.drawLine(93, 36, 83, 63, SSD1306_WHITE);
break;
case 20:
static const unsigned char PROGMEM d20[] =
{
0x38,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xfc,0x00,0x1c,0x38,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x1c,0x38,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x1c,0x38,0x00,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0x1c,0x38,0x00,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0x1c,0x38,0x00,0x07,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x1c,0x38,0x00,0x07,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xe0,0x00,0x1c,0x38,0x00,0x0f,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xf0,0x00,0x1c,0x38,0x00,0x0e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x70,0x00,0x1c,0x38,0x00,0x1e,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x78,0x00,0x1c,0x38,0x00,0x1c,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x38,0x00,0x1c,0x38,0x00,0x3c,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0x3c,0x00,0x1c,0x38,0x00,0x38,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x1c,0x00,0x1c,0x38,0x00,0x38,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x1e,0x00,0x1c,0x38,0x00,0x78,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x0e,0x00,0x1c,0x38,0x00,0x70,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x0f,0x00,0x1c,0x38,0x00,0xf0,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x07,0x00,0x1c,0x38,0x00,0xe0,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x07,0x80,0x1c,0x38,0x01,0xe0,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x03,0x80,0x1c,0x38,0x01,0xc0,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x03,0x80,0x1c,0x38,0x03,0xc0,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x03,0xc0,0x1c,0x38,0x03,0x80,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x01,0xc0,0x1c,0x38,0x07,0x80,0x00,0x07,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x01,0xe0,0x1c,0x38,0x07,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x01,0xc0,0x00,0x00,0xe0,0x1c,0x38,0x0f,0x00,0x00,0x03,0xc0,0x00,0x00,0x00,0x03,0xc0,0x00,0x00,0xf0,0x1c,0x38,0x0e,0x00,0x00,0x03,0xc0,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x70,0x1c,0x38,0x1e,0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x78,0x1c,0x38,0x1c,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x38,0x1c,0x38,0x3c,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x3c,0x1c,0x38,0x38,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x1c,0x1c,0x38,0x78,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x1e,0x1c,0x38,0x70,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x0e,0x1c,0x38,0xf0,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x0f,0x1c,0x38,0xe0,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x07,0x1c,0x39,0xe0,0x00,0x00,0x00,0x0f,0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x07,0x9c,0x39,0xc0,0x00,0x00,0x00,0x07,0x80,0x00,0x01,0xc0,0x00,0x00,0x00,0x03,0x9c,0x39,0xc0,0x00,0x00,0x00,0x03,0xc0,0x00,0x03,0xc0,0x00,0x00,0x00,0x03,0xdc,0x3b,0xc0,0x00,0x00,0x00,0x03,0xc0,0x00,0x07,0x80,0x00,0x00,0x00,0x01,0xdc,0x3b,0x80,0x00,0x00,0x00,0x01,0xe0,0x00,0x0f,0x00,0x00,0x00,0x00,0x01,0xfc,0x3f,0x80,0x00,0x00,0x00,0x00,0xe0,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x7c,0x3e,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x7c,0x3e,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x7c,0x3c,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x3c,0x3f,0xe0,0x00,0x00,0x00,0x00,0x0f,0x01,0xe0,0x00,0x00,0x00,0x00,0x07,0xfc,0x3f,0xff,0xc0,0x00,0x00,0x00,0x07,0x83,0xc0,0x00,0x00,0x00,0x07,0xff,0xfc
};
display.drawBitmap(4, 16, d20, 120, 48, 1);
break;
}
// display.drawLine(x1, y1, x2, y2, SSD1306_WHITE);
} //end drawDie
void drawCurDie(){
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(2,0);
if(die[curDie] == 2){
display.print("Coin:");
} else {
display.print("Die:");
}
if( die[curDie] != 7)
{
display.print(die[curDie]);
}else
{
display.print("6x2");
}
display.setTextSize(1);
display.println(" sides");
} //end drawCurDie
void draw6(int roll){
switch(roll){
case 1:
display.fillCircle(display.width() / 2, 40, 5, SSD1306_WHITE);
break;
case 2:
display.fillCircle(display.width() / 2-15, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 25, 5, SSD1306_WHITE);
break;
case 3:
display.fillCircle(display.width() / 2, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 25, 5, SSD1306_WHITE);
break;
case 4:
display.fillCircle(display.width() / 2-15, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 55, 5, SSD1306_WHITE);
break;
case 5:
display.fillCircle(display.width() / 2, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 55, 5, SSD1306_WHITE);
break;
case 6:
display.fillCircle(display.width() / 2-15, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15, 55, 5, SSD1306_WHITE);
break;
}//end roll
}// end of draw6
void draw7(int roll, int roll2)
{
switch(roll){
case 1:
display.fillCircle(display.width() / 2-30, 40, 5, SSD1306_WHITE);
break;
case 2:
display.fillCircle(display.width() / 2-15-30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 25, 5, SSD1306_WHITE);
break;
case 3:
display.fillCircle(display.width() / 2-30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 25, 5, SSD1306_WHITE);
break;
case 4:
display.fillCircle(display.width() / 2-15-30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 55, 5, SSD1306_WHITE);
break;
case 5:
display.fillCircle(display.width() / 2-30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 55, 5, SSD1306_WHITE);
break;
case 6:
display.fillCircle(display.width() / 2-15-30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15-30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15-30, 55, 5, SSD1306_WHITE);
break;
}//end roll
switch(roll2){
case 1:
display.fillCircle(display.width() / 2+30, 40, 5, SSD1306_WHITE);
break;
case 2:
display.fillCircle(display.width() / 2-15+30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 25, 5, SSD1306_WHITE);
break;
case 3:
display.fillCircle(display.width() / 2+30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 25, 5, SSD1306_WHITE);
break;
case 4:
display.fillCircle(display.width() / 2-15+30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 55, 5, SSD1306_WHITE);
break;
case 5:
display.fillCircle(display.width() / 2+30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 55, 5, SSD1306_WHITE);
break;
case 6:
display.fillCircle(display.width() / 2-15+30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 40, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 55, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2-15+30, 25, 5, SSD1306_WHITE);
display.fillCircle(display.width() / 2+15+30, 55, 5, SSD1306_WHITE);
break;
}//end roll
}// end draw7