The Cube

This a programmable puzzle cube. The puzzle is to gain access to the inside of the box without an alarm going off. The puzzles can be programmed on to an SD card and selected using the LCD at the top. This makes each puzzle different.

How it is made

The whole cube is made from 3 different PCBs, the top, the bottom and the sides. The sides PCBs are all the same PCB just replicated 4 times with some jumpers to identify which is which.
All the lights, button and other inputs are all controlled using I2C with one I2C bus running between all the different panels.

Sponsored By

This project was sponsored and manufactured by PCBWay.
PCB way has done a great job of manufacture this PCB. The shape, silkscreen, solder marks and copper layers look and work great.
Over the years I have been with PCBWay, I’m ways amazed at what they can do in the days and how they can keep improving their PCBs and service. The turnaround and shipping for this board was only a few days. This allowed me to solder the components and start testing the boards in about a week’s time.

PCBWay has a wide range of options for your PCBs from FR-4 and Aluminum boards to Flexible, Rigid-Flex boards and PCB assembly. I have used FR-4, Aluminum and PCB assembly services from PCBWay. Each time I order from PCBWay they are professional and helpful from submitting the PCB files to the shipping, flagging any problems. When there is a problem, I find it easy to communicate with PCBWay to find the best solution for the problem.
Go to https://www.pcbway.com/ to see what they can do for you.

Code for Project

GNU General Public License v3.0

// CUBES test light 

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40, Wire);

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("16 channel PWM test!");

  pwm.begin();
}

void loop() 
{
  for (uint8_t i=0; i < 16; i++) 
  {
    for (uint8_t pwmnum=0; pwmnum < 16; pwmnum++) 
    {
      pwm.setPin(pwmnum,  (i==pwmnum)*4096 );
    }
    delay(100);
    yield();
  }
}

Latest Projects

Popular Projects