Panel Cookies
Magic 8 ball - code
Help me by sharing this post

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.



schematic arduino magic 8 ball digital display



/* 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;
  }
}








yt_link
insta_link
fb_link
twitter_link

Magic Ball




Affiliate Disclosure

ADVERTISERS



PCBWAY PCB service





Curso Arduino Online nivel Intermedio