ryan oler
Published © MIT

Puzzle pet

Puzzle pet is a fun way to interact with your dog.

IntermediateFull instructions providedOver 1 day43
Puzzle pet

Things used in this project

Story

Read more

Custom parts and enclosures

20241101_230041_TULsgGJCI4.jpg

Schematics

puzzel_pet_2_bb_1S22a8FIcx.jpg

puzzel_pet_2_schem_vYUtMZ4J0k.jpg

Code

puzzle pet

C/C++
puzzle for your dog.
#include "Particle.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#include  "IotClassroom_CNM.h"
#include "hue.h"
#include "wemo.h"
#include "IoTTimer.h"
#include "Button.h"
#include "Colors.h"

Button bluebutton(D3);
Button pinkbutton(D4);

int color;
int SetHue;
int bri;
int count;
const int MYWEMO=1;
//const int BULB=1;
//const int BULB=2; 
const int BULB=2;
bool onoff;
bool blueState;
bool pinkState;
bool puzzelMode;








const float A =180.0/2;

const float B =90.0/2;

float freq =0.2;

Servo myServo;

const int OLED_RESET=-1;
Adafruit_SSD1306 display(OLED_RESET);





SYSTEM_MODE(MANUAL);




      void setup() {
      Serial.begin(9600);
      waitFor(Serial.isConnected,10000);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3c);
      display.clearDisplay();
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.printf("Puzzle Pet\n");
      display.display();

 Serial.begin(9600);
  waitFor(Serial.isConnected,15000);

  WiFi.on();
  WiFi.clearCredentials();
  WiFi.setCredentials("IoTNetwork");
  
  WiFi.connect();
  wile(WiFi.connecting()) {
  Serial.printf(".");
  }
  Serial.printf("\n\n");
  myServo.attach(A2);
}
 

void loop() {
  

  // myServo.write(180);
   //delay(4000);
   //myServo.write(0);
    


  blueState= bluebutton.isClicked();
  pinkState= pinkbutton.isClicked();

  //if((blueState==true) && (pinkState==true)){
if((blueState==true) && (pinkbutton.isPressed())){
  Serial.printf("toggle\n");
  puzzelMode=!puzzelMode;
  count=0;
  onoff=true;
  setHue(BULB,onoff,HueBlue,125,255);
  } 

  if(puzzelMode==false){
  if(bluebutton.isClicked()){
  onoff=!onoff;
  setHue(BULB,onoff,HueBlue,125,255); 

    }
  }if(puzzelMode==true){
  switch (count){
//round one
  case 0:
  if(blueState==true){
  count=1;
  Serial.printf("good dog\n");
  display.clearDisplay();
  display.setCursor(0,0);
  display.printf("GOOD DOG\n");
  display.display();


setHue(BULB,blueState,HueBlue,125,255);
}
if(pinkState==true){
count=3;
setHue(BULB,true,HueRed,180,255);
Serial.printf("try again\n");

display.clearDisplay();
display.setCursor(0,0);
display.printf("TRY AGAIN\n");
display.display();



        }
        break;
//round two
      case 1:
        if(blueState==true){
          count=3;
          setHue(BULB,true,HueRed,180,255);
           Serial.printf("try again\n");
          display.clearDisplay();
          display.setCursor(0,0);
          display.printf("TRY AGAIN\n");
          display.display();



        }
        if(pinkState==true){
          count=2;
          Serial.printf("good dog\n");
          setHue(BULB,pinkState,HueBlue,175,255);
          display.clearDisplay();
          display.setCursor(0,0);
          display.printf("GOOD DOG\n");
          display.display();




        }
        break;
//final round
      case 2:
        if(blueState==true){
          setHue(BULB,blueState,HueGreen,255,255);
          Serial.printf("good dog\n");
          display.clearDisplay();
          display.setCursor(0,0);
          display.printf("GOOD DOG\n");
          display.display();



          myServo.write(180);
          Serial.printf("Turning on Wemo# %i\n",MYWEMO);
          wemoWrite(MYWEMO,HIGH);
          delay(5000);
          Serial.printf("Turning off Wemo# %i\n",MYWEMO);
          wemoWrite(MYWEMO,LOW);
          count=3;
        }
        if(pinkState==true){
          count=3;
          setHue(BULB,true,HueRed,255,255);
          Serial.printf("try again\n");
          display.clearDisplay();
          display.setCursor(0,0);
          display.printf("TRY AGAIN\n");
          display.display();



        }
        break;

      case 3:
        delay(5000);
        myServo.write(0);
        delay(2000); 
        count=0;
        break;
    } 
  }
}
 












 





















  
  

Credits

ryan oler
3 projects • 3 followers

Comments