#include "U8glib.h"
#define MINI_LOGO
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
long randomEightBall = 0;
int Button1 = 2;
void drawHexagon(void)
{
u8g_uint_t w,h;
w = u8g.getWidth();
h = u8g.getHeight();
u8g.drawLine(0,h/3,w/2,0);
u8g.drawLine(0,2*(h/3),w/2,h);
u8g.drawLine(w/2,0,w,h/3);
u8g.drawLine(w/2,h,w,2*(h/3));
}
void drawColorBox(void)
{
u8g_uint_t w,h;
u8g_uint_t r, g, b;
w = u8g.getWidth()/32;
h = u8g.getHeight()/8;
for( b = 0; b < 4; b++ )
for( g = 0; g < 8; g++ )
for( r = 0; r < 8; r++ )
{
u8g.setColorIndex((r<<5) | (g<<2) | b );
u8g.drawBox(g*w + b*w*8, r*h, w, h);
}
}
void drawLogo(uint8_t d)
{
#ifdef MINI_LOGO
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(0+d, 22+d, "U");
u8g.setFont(u8g_font_gdr20n);
u8g.drawStr90(17+d,8+d,"8");
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(39+d,22+d,"g");
u8g.drawHLine(2+d, 25+d, 34);
u8g.drawVLine(32+d, 22+d, 12);
#else
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(0+d, 30+d, "U");
u8g.setFont(u8g_font_gdr30n);
u8g.drawStr90(23+d,10+d,"8");
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(53+d,30+d,"g");
u8g.drawHLine(2+d, 35+d, 47);
u8g.drawVLine(45+d, 32+d, 12);
#endif
}
void drawShake(void) {
u8g_uint_t w,h;
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
drawColorBox();
}
w = u8g.getWidth()/2;
h = u8g.getHeight()/2;
u8g.setColorIndex(1);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 10);
} while ( u8g.nextPage() );
delay(30);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 20);
} while ( u8g.nextPage() );
delay(30);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 30);
} while ( u8g.nextPage() );
delay(30);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 40);
} while ( u8g.nextPage() );
delay(30);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 50);
} while ( u8g.nextPage() );
delay(30);
u8g.firstPage();
do {
u8g.drawCircle(w, h, 60);
} while ( u8g.nextPage() );
//drawLogo(0);
//drawURL();
}
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
u8g.setFontPosCenter();
u8g_uint_t w,h,Tw;
w = u8g.getWidth()/2;
h = u8g.getHeight()/2;
Tw = 8; //Approxaimate width of Text Char
switch (randomEightBall) {
case 0:
u8g.drawStr( int(w-((Tw*3)/2)), h, "Yes");
break;
case 1:
u8g.drawStr( int(w-((Tw*2)/2)), h, "No");
break;
case 2:
u8g.drawStr( int(w-((Tw*12)/2)), h, "I'm not sure");
break;
case 3:
u8g.drawStr( int(w-((Tw*5)/2)), h, "Maybe");
break;
case 4:
u8g.drawStr( int(w-((Tw*6)/2)), h, "likely");
break;
case 5:
u8g.drawStr( int(w-((Tw*8)/2)), h, "unlikely");
break;
case 6:
u8g.drawStr( int(w-((Tw*9)/2)), h, "try again");
break;
case 7:
u8g.drawStr( int(w-((Tw*16)/2)), h, "Buy More Inventr");
break;
}
delay(50);
}
void setup(void) {
// assign default color value
u8g.setColorIndex(1); // pixel on
Serial.begin(9600);
randomSeed(random(analogRead(0)));
delay(30);
pinMode(Button1, INPUT);
}
void loop(void) {
// picture loop
//randomEightBall = random(8);
//Serial.println(randomEightBall);
//u8g.firstPage();
//do {
// drawShake();
//} while ( u8g.nextPage() );
//delay(500);
//u8g.firstPage();
//do {
// drawHexagon();
// draw();
// } while ( u8g.nextPage() );
while( digitalRead(Button1) == HIGH )
{
//Get Random Value
randomEightBall = random(8);
//Shake Animation
drawShake();
delay(100);
//Start Draw of Result
u8g.firstPage();
do {
//Draw Result
drawHexagon();
draw();
} while ( u8g.nextPage() );
//Print Value at end
Serial.println(randomEightBall);
};
}