16 April 2016

Magic Item

The Rememberaball

This Week’s assignment was: Pick a spell from the AD&D Player’s Handbook (any edition), other fantasy role playing game, or from fantasy literature or mythology, and make it real.

I’ve decided to make a Harry Potter Remembeall

‘It’s a Remembrall!’ he [Neville] explained. ‘Gran knows I forget things – this tells you if there’s something you’ve forgotten to do. Look, you hold it tight like this and if it turns red – oh…’ His face fell, because the Remembrall had suddenly glowed scarlet, ‘… you’ve forgotten something…‘

(From Harry Potter and the Philosopher’s Stone, Chapter Nine)

A Remembrall is a tennis ball-sized glass ball that contains smoke that turns red when its owner has forgotten something. It turns clear once whatever was forgotten is remembered.

How It’s Done:

With Tal’s advice, I got a Light Blue Bean, it’s a tiny size BLE dev board. 30$ worth. the Light Blue Bean

I cut the board, to fit it into a small clear ornament ball. And soldered a strip of 5 Neopixels to it.

preparing the board preparing the board

Then, I programed the board to only blink the Neopixels when there is no Bluetooth connection. which means, whenever it is far enough from a chosen device to be connected, it will blink.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN            0

#define NUMPIXELS      5

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

bool connected = false;
void setup() 
{
  Bean.setLed(0, 0, 0);
  pixels.begin(); // This initializes the NeoPixel library.
}

// the loop routine runs over and over again forever:
void loop() 
{
  connected = Bean.getConnectionState();
  if (connected) {
  for(int i=0;i<NUMPIXELS;i++){
    pixels.setPixelColor(i, pixels.Color(0,0,0)); // Turn off all pixels.
    pixels.show(); // This sends the updated pixel color to the hardware. 

  }
  }
  else{
      for(int i=0;i<NUMPIXELS;i++){
       pixels.setPixelColor(i, pixels.Color(160, 0, 160)); // Purple color.
       pixels.show();
       Bean.sleep(25);
       pixels.setPixelColor(i, pixels.Color(0,0,0)); // Turn off - blink
       pixels.show();
     }
    
  }
   Bean.sleep(100);  
}

I then just covered the Light blue bean with a plastic bag, to give it a smoke effect, and put it inside the clear ball.

rememberaball

rememberaball