Ok, the code is not that difficult. Download it from below. You will also need the library for the OLED screen adn the DF player. So downlaod that from the links below as well and install them to the Arduino IDE. We read the angle adn if is around 180 degrees we send a random answer and audio. If we get back to around 360 degrees we reset the code and wait for a new question. Download the code from below or copy it from below as well.
/* Digital Magic 8 Ball by ELECTRONOOBS
* Tutorial: https://electronoobs.com/eng_arduino_tut111.php
* Scheamtic: https://electronoobs.com/eng_arduino_tut111_sch1.php
* Code: https://electronoobs.com/eng_arduino_tut111_code1.php
* Part list: https://electronoobs.com/eng_arduino_tut111_parts1.php
* YouTube chennel: https://www.youtube.com/channel/UCjiVhIvGmRZixSzupD0sS9Q */
////////////////////////OLED 64x124 display with i2c//////////////////////////////////
//OLED screen libraries
#include <Adafruit_GFX.h> //Download here: https://www.electronoobs.com/eng_arduino_Adafruit_GFX.php
#include <Adafruit_SSD1306.h> //Download here: https://www.electronoobs.com/eng_arduino_Adafruit_SSD1306.php
#define OLED_RESET 11
Adafruit_SSD1306 display(OLED_RESET);
//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////DFplayer mp3 module///////////////////////////////////
//Mp3 DFplayer libraries
#include <SoftwareSerial.h>
#include <DFMiniMp3.h> //Downlaod it here: https://www.electronoobs.com/eng_arduino_DFPlayer_Mini_Mp3_by_Makuna.php
class Mp3Notify
{
public:
static void OnError(uint16_t errorCode) {}
static void OnPlayFinished(uint16_t globalTrack){}
static void OnCardOnline(uint16_t code){}
static void OnCardInserted(uint16_t code){}
static void OnCardRemoved(uint16_t code){}
};
DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial);
//////////////////////////////////////////////////////////////////////////////////////
//MPU6050 gyro/acc
//Gyro Variables
#include<Wire.h>
const int MPU_addr=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
int minVal=265;
int maxVal=402;
double x;
double y;
double z;
//int timePrev, time, elapsedTime = 0;
int a = 0;
int the_answer = 0;
bool play_sound = false;
bool hmm_show = false;
bool question_made = false;
static const unsigned char PROGMEM LOGO[] = {
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,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3F,0X30,0XF8,0XF9,0XFC,0XF8,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3F,0X79,0XF9,0XFD,0XFF,0XFC,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3F,0X79,0XF9,0XDD,0XFC,0XFE,0X77,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3C,0X79,0XE3,0XDC,0X79,0XEE,0X77,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X38,0X79,0XE3,0XDE,0X79,0XEE,0X77,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,
0X3E,0X79,0XF3,0XDE,0X79,0XFE,0XF7,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,
0X3F,0X79,0XFB,0XC0,0X79,0XFC,0XF7,0X00,0X7F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,
0X3F,0X79,0XFB,0XC0,0X79,0XFE,0XF7,0X01,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,
0X3C,0X79,0XE3,0XDC,0X79,0XEE,0XF7,0X07,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,
0X3C,0X79,0XE3,0XDE,0X79,0XEE,0X77,0X0F,0XBF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,
0X3C,0X79,0XE3,0XDC,0X79,0XEE,0X77,0X1E,0X3F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,
0X3F,0X7C,0XF9,0XDC,0X79,0XEE,0X7F,0X3C,0X3F,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,
0X3F,0X7E,0XF9,0XFC,0X79,0XEE,0X7F,0X78,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,
0X3F,0X3C,0XF8,0XF0,0X30,0XCE,0X3C,0X71,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF3,0XFF,0X01,0XFF,0XFE,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XE3,0XF8,0X00,0X3F,0XFE,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC7,0XF0,0X00,0X1F,0XFF,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XCF,0XE0,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X8F,0XC0,0X38,0X07,0XFF,0X80,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X9F,0X80,0XFE,0X03,0XFF,0X80,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X1F,0X01,0XC7,0X01,0XFF,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X3F,0X01,0X83,0X01,0XFF,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X3E,0X03,0X83,0X00,0XFF,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X3E,0X01,0X83,0X00,0XFF,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X0E,0X7E,0X01,0XC7,0X00,0XFF,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X0E,0X7E,0X00,0XFE,0X00,0XFE,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X0E,0X7C,0X00,0X7C,0X00,0XFE,0X40,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X0E,0X7C,0X01,0XCF,0X00,0XFE,0X40,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFE,0X01,0X83,0X00,0XFE,0X40,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X03,0X03,0X80,0XFE,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X03,0X01,0X80,0XFC,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X03,0X01,0X81,0XFC,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0X03,0X83,0X81,0XFC,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0X01,0XC7,0X03,0XF9,0X80,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0X80,0XFE,0X03,0XF9,0X80,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XC0,0X00,0X07,0XFB,0X80,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0X00,0X0F,0XF3,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF0,0X00,0X1F,0XE7,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00,0X7F,0XEE,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0X83,0XFF,0XFE,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XE7,0XF0,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XC7,0XF8,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0X87,0XB8,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFE,0X07,0XBC,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFC,0X07,0XBD,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XE0,0X07,0XF9,0XFC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X07,0XF1,0XDC,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF9,0XCE,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XBD,0XCE,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XBD,0XFE,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XBD,0XFE,0XF1,0XE0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFD,0XDE,0XFD,0XF8,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF9,0XCE,0XFD,0XF8,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFB,0XCE,0X7D,0XF8,
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,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,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};
static const unsigned char PROGMEM HMM[] = { /* 0X00,0X01,0X80,0X00,0X40,0X00, */
0X00,0X00,0X00,0X3F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X03,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X3F,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X7E,0X1F,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0XFC,0X3F,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0XF8,0X7F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X07,0XC3,0XFF,0XE0,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X07,0X87,0XFF,0X00,0X01,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X0F,0X8F,0XFC,0X00,0X00,0X7F,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1F,0X0F,0XF8,0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1F,0X1F,0XF0,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1E,0X3F,0XE0,0X07,0XF8,0X07,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3E,0X3F,0XC0,0X0F,0XFC,0X07,0XFF,0XF8,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3C,0X7F,0X80,0X1F,0XFE,0X03,0XFF,0XFC,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X7C,0X7F,0X80,0X3F,0XFF,0X01,0XFF,0XFC,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X78,0X7F,0X00,0X3F,0X3F,0X01,0XFF,0XFC,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X78,0XFE,0X00,0X3F,0X3F,0X00,0XFF,0XFC,0XFF,0XC7,0XDE,0X78,0XF3,0XCF,0X00,0X00,
0X78,0XFE,0X00,0X3F,0X3F,0X00,0XFF,0XFE,0XFF,0XE7,0XFF,0XFC,0XFF,0XFF,0X80,0X00,
0X70,0XFE,0X00,0X3F,0X3F,0X00,0X7F,0XFE,0XFF,0XE7,0XFF,0XFC,0XFF,0XFF,0X80,0X00,
0XF1,0XFC,0X00,0X00,0X3F,0X00,0X7F,0XFE,0XF9,0XE7,0X9F,0X7C,0XF3,0XEF,0X80,0X00,
0XF1,0XFC,0X00,0X00,0X3F,0X00,0X7F,0XFE,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XF1,0XFC,0X00,0X00,0X3F,0X00,0X7F,0XFE,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XF1,0XFC,0X00,0X00,0X3F,0X00,0X7F,0XE6,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XF1,0XFC,0X00,0X3F,0X3F,0X00,0X7F,0XE6,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XF1,0XFC,0X00,0X3F,0X7F,0X00,0X7F,0XE6,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XF3,0XFC,0X00,0X3F,0XFF,0X00,0X7F,0XC6,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XFF,0XFC,0X00,0X3F,0XFF,0X00,0X7F,0XC6,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0XFF,0XFC,0X00,0X3F,0XFE,0X00,0X7F,0XCE,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0X80,0X00,
0X7F,0XFE,0X00,0X3F,0X7C,0X00,0X7F,0XCE,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0XBD,0XCE,
0X7F,0XFE,0X00,0X3F,0X00,0X00,0XFF,0XCE,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0XBD,0XCE,
0X7F,0XFE,0X00,0X00,0X00,0X00,0XFF,0X8C,0XFB,0XE7,0XDF,0X7C,0XF3,0XEF,0XBD,0XDE,
0X7F,0XFF,0X00,0X3F,0X00,0X01,0XFF,0X9C,0XF9,0XE7,0X9F,0X3C,0XF3,0XE7,0X9D,0XCE,
0X7F,0XFF,0X80,0X3F,0X00,0X01,0XFF,0X9C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3F,0XFF,0X80,0X3F,0X00,0X03,0XFF,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X3F,0XFF,0XC0,0X3F,0X00,0X03,0XFF,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1F,0XFF,0XE0,0X3F,0X00,0X07,0XFE,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1F,0XFF,0XF0,0X00,0X00,0X0F,0XFE,0X70,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X1F,0XFF,0XF8,0X00,0X00,0X3F,0XFC,0X70,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X0F,0XFF,0XFC,0X00,0X00,0X7F,0XF8,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X07,0XFF,0XFF,0X00,0X01,0XFF,0XF9,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X07,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X03,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X3F,0XFC,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,
};
static const unsigned char PROGMEM BALL[] = { /* 0X00,0X01,0X40,0X00,0X40,0X00, */
0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0X80,0X00,0X00,
0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X00,
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,
0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,
0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,
0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X07,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XC0,0X01,0XFF,0XFF,0XE0,
0X0F,0XFF,0XFE,0X00,0X00,0X7F,0XFE,0X70,0X0F,0XFF,0XFC,0X00,0X00,0X3F,0XFE,0X30,
0X1E,0X7F,0XF0,0X00,0X00,0X0F,0XFE,0X38,0X1E,0X3F,0XE0,0X00,0X00,0X07,0XFF,0X38,
0X3C,0X3F,0XC0,0X00,0X00,0X03,0XFF,0X1C,0X3C,0X7F,0XC0,0X1F,0X80,0X03,0XFF,0X9C,
0X3C,0X7F,0X80,0X7F,0XC0,0X01,0XFF,0X8C,0X78,0X7F,0X00,0XF1,0XE0,0X00,0XFF,0X8E,
0X78,0XFF,0X01,0XC0,0XE0,0X00,0XFF,0XCE,0X78,0XFE,0X01,0XC0,0X70,0X00,0X7F,0XCE,
0X78,0XFE,0X01,0X80,0X70,0X00,0X7F,0XC6,0XF8,0XFE,0X03,0X80,0X60,0X00,0X7F,0XC7,
0XF0,0XFE,0X03,0X80,0X60,0X00,0X3F,0XC7,0XF1,0XFC,0X01,0XC0,0XE0,0X00,0X3F,0XE7,
0XF1,0XFC,0X01,0XF1,0XFE,0X00,0X3F,0XE7,0XF1,0XFC,0X00,0XFF,0XFF,0X00,0X3F,0XE7,
0XF1,0XFC,0X00,0X7F,0X8F,0X80,0X3F,0XC7,0XF1,0XFC,0X00,0X06,0X03,0XC0,0X3F,0XC7,
0XF1,0XFC,0X00,0X0E,0X01,0XC0,0X3F,0XCF,0XF0,0XFC,0X00,0X0C,0X01,0XC0,0X3F,0XFF,
0XF8,0XFE,0X00,0X1C,0X01,0XC0,0X7F,0XFF,0X78,0XFE,0X00,0X1C,0X01,0XC0,0X7F,0XFE,
0X78,0XFE,0X00,0X1C,0X01,0XC0,0X7F,0XFE,0X78,0XFF,0X00,0X0E,0X03,0X80,0XFF,0XFE,
0X78,0X7F,0X00,0X0F,0X07,0X00,0XFF,0XFE,0X3C,0X7F,0X80,0X07,0XFE,0X01,0XFF,0XFC,
0X3C,0X7F,0XC0,0X03,0XFC,0X01,0XFF,0XFC,0X3C,0X3F,0XC0,0X00,0XE0,0X03,0XFF,0XFC,
0X1E,0X3F,0XE0,0X00,0X00,0X07,0XFF,0XF8,0X1E,0X1F,0XF0,0X00,0X00,0X0F,0XFF,0XF8,
0X0F,0X1F,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X0F,0X3F,0XFE,0X00,0X00,0X7F,0XFF,0XF0,
0X07,0XFF,0XFF,0X80,0X01,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XF0,0X0F,0XFF,0XFF,0XE0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,
0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,
0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,
0X00,0X00,0X03,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0X00,
};
int elapsed_time = 0;
bool answer = false;
void setup() {
//Mp3 DFplayer module setup
Serial.begin(115200);
mp3.begin();
//uint16_t volume = mp3.getVolume();
mp3.setVolume(30);
//uint16_t count = mp3.getTotalTrackCount();
delay(100);
//mp3.playMp3FolderTrack(1); // engine start + submarine sound
//EEPROM_writeAnything(1, 000);
//OLED display settings...
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32 or 64 from eBay)
delay(50);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.drawBitmap(0, 0, LOGO, 128, 64, 1);
display.display();
delay(500);
display.clearDisplay();
display.display();
//MPU6050 gyro/acc
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
//time = millis();
randomSeed(analogRead(A0));
}
void loop() {
//mp3.playMp3FolderTrack(1);
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,14,true);
AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
int xAng = map(AcX,minVal,maxVal,-90,90);
int yAng = map(AcY,minVal,maxVal,-90,90);
int zAng = map(AcZ,minVal,maxVal,-90,90);
x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI);
//y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI);
//z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);
if(x > 150 && x < 210 && question_made) //If angle is between 150 adn 210 degree, we selectr a random answer
{
elapsed_time = elapsed_time + 1;
if(elapsed_time > 40)
{
question_made = false;
if(!answer)
{
//mp3.playMp3FolderTrack(2);
answer = true;
the_answer = random(1,15); //Random from 1 to 15
while(a <= 70)
{
display.clearDisplay();
if(the_answer == 1)
{
play_sounds(1);
display.setCursor(0,95-a);
display.println(" IT IS");
display.println(" CERTAIN");
}
/*if(the_answer == 2)
{
play_sounds(2);
display.setCursor(0,90-a);
display.println(" IT IS");
display.println(" DECIDEDLY");
display.println(" SO");
}*/
if(the_answer == 2)
{
play_sounds(3);
display.setCursor(0,90-a);
display.println(" WITHOUT");
display.println(" A");
display.println(" DOUBT");
}
if(the_answer == 3)
{
play_sounds(4);
display.setCursor(0,95-a);
display.println(" YES!");
display.println("DEFINITELY");
}
/*
if(the_answer == 5)
{
play_sounds(5);
display.setCursor(0,90-a);
display.println(" YOU MAY");
display.println(" RELY");
display.println(" ON IT");
} */
if(the_answer == 4)
{
play_sounds(6);
display.setCursor(0,90-a);
display.println(" AS I");
display.println(" SEE IT");
display.println(" YES!");
}
if(the_answer == 5)
{
play_sounds(7);
display.setCursor(0,95-a);
display.println(" MOST");
display.println(" LIKELY");
}
/*
if(the_answer == 8)
{
play_sounds(8);
display.setCursor(0,95-a);
display.println(" OUTLOOK");
display.println(" GOOD!");
}*/
if(the_answer == 6)
{
play_sounds(9);
display.setCursor(0,100-a);
display.println(" YES!");
}
if(the_answer == 7)
{
play_sounds(10);
display.setCursor(0,90-a);
display.println(" SIGNS");
display.println(" POINT TO");
display.println(" YES!");
}
/*
if(the_answer == 11)
{
play_sounds(11);
display.setCursor(0,90-a);
display.println(" REPLY");
display.println(" HAZY");
display.println("TRY AGAIN");
} */
if(the_answer == 8)
{
play_sounds(12);
display.setCursor(0,90-a);
display.println(" ASK");
display.println(" AGAIN");
display.println(" LATER");
}
/*
if(the_answer == 13)
{
play_sounds(13);
display.setCursor(0,90-a);
display.println(" BETTER");
display.println("NOT TO TELL");
display.println(" YOU NOW");
}
*/
if(the_answer == 9)
{
play_sounds(14);
display.setCursor(0,90-a);
display.println(" CANNOT");
display.println(" PREDICT");
display.println(" NOW");
}
if(the_answer == 10)
{
play_sounds(15);
display.setCursor(0,90-a);
display.println("CONCENTRATE");
display.println(" AND ASK");
display.println(" AGAIN");
}
if(the_answer == 11)
{
play_sounds(16);
display.setCursor(0,90-a);
display.println(" DON'T ");
display.println(" COUNT");
display.println(" ON IT");
}
if(the_answer == 12)
{
play_sounds(17);
display.setCursor(0,95-a);
display.println(" MY REPLY");
display.println(" IS NO!");
}
/*
if(the_answer == 18)
{
play_sounds(18);
display.setCursor(0,95-a);
display.println("MY SOURCES");
display.println(" SAY NO");
}
*/
if(the_answer == 13)
{
play_sounds(19);
display.setCursor(0,90-a);
display.println(" OUTLOOK");
display.println(" NOT SO");
display.println(" GOOD");
}
if(the_answer == 14)
{
play_sounds(20);
display.setCursor(0,95-a);
display.println(" VERY");
display.println(" DOUBTFUL");
}
display.drawBitmap(64, 70-a, BALL, 64, 64, 1);
display.display();
delay(10);
a = a + 5;
}
a = 0;
}
}
}
//Now we reset the position and wait for a new question
if(x > 330 || x < 30)
{
question_made = true;
if(answer)
{
elapsed_time = 0;
answer = false;
hmm_show = false;
play_sound = false;
mp3.stop();
display.clearDisplay();
display.display();
}
}
//Serial.println(x);//For debugging
}//end void loop
void play_sounds(int track)
{
if(!play_sound)
{
print_hmm();
mp3.playMp3FolderTrack(track);
delay(2000);
play_sound = true;
}
}
void print_hmm()
{
if(!hmm_show)
{
display.drawBitmap(0, 0, HMM, 128, 64, 1);
display.display();
hmm_show = true;
}
}