Showing posts with label CNC. Show all posts
Showing posts with label CNC. Show all posts

Monday, March 30, 2020

00726, Brick walls

I'm testing out how the CNC machine will cut brick walls out of foamcore as per David Neat's website.
David's blog was so informative and interesting (for me, at least), that I bought his book form Amazon. It's one of the few reference books that I've bought recently that I actually bother to read.

So here, I've used Illustrator to create the brick patterns and then exported as SVG to allow the CNC machine to cut it. Then it's on to painting.

Totally worked.



Sunday, March 29, 2020

00725, Easel

An easel for an artist's birthday present. Adjustable for height using a system of magnets and wooden battens.

THe CNC'd adjustment handles are a perfect fit for hands. You just want to turn them cos you can.



Saturday, March 28, 2020

00724, City blocks for X

I'd missed the blessing/christening of a friend's son and so, a year on, I decided to make a set of building blocks for him in the city blocks style.

Oak box with birch ply face, CNC carved faces for the blocks and lid. Magnetic catch to give the lid a nice "click" into place and hold it closed. Utile city blocks, lightly oiled.









00721, Shove piggy shove 2


Inspired by the simple makeaday game "shove piggy shove", this is a posh, digitally assisted remake. The original was just a slab of old marine ply. This is 18mm birch ply, CNC cut with Utile scoring marker lines (nice) and arduino controlled LCD screens with buttons to increment and decrement the scores.

A present for Dan.

It's basically a combination of shove hapenny and shuffleboard, with a player on either end of the board:






Friday, March 27, 2020

00719, Wooden cities

Man, this is going to go on and on.

CNC city blocks.

Super nice and very easy to make, once the design is sorted.




00718, Wooden chainwheel

This is still from a while back.

It's for a bikey. Clearly he really loves bikes.

Anyhoo, it's an oak chainring with a utilie jockey wheel.

Admittedly really very niche :)




00716, Backgammon pieces, part 2

If only one thing could be said about these backgammon pieces - beyond that you can play backgammon with them and they look nice - it would be that it feels really nice when you put your finger in them.

There, I said it.

Here's the process pics:




Thursday, March 26, 2020

00714, Tiny cosmonaut

Cosmonaut is a much better word than astronaut (IMHFO).

In no particular order, here's the 'making of' images from the nice camera:







00712, the Hand Thing

The Hand Thing is a project I've been obsessing over for a long time.
Editing films and creating motion graphics and animation means working a lot with keyboard shortcuts, you know, cut, paste etc. Most of this work is done with the keyboard and very few time is the keyboard used for typing text (like normal people do).

So this is what they call a Human Interface Device (HID) - something designed to make interactions with a computer easier and/or faster. Here's the end result:



It starts with designing the size and shape of the device with plasticine and placing buttons using ball bearings, so that the buttons fall where the buttons fall where your fingers can easily reach them:


Then it's down to importing the picture into a computer, tracing around the image, making a 3D kinda version of it and cutting the design out of wood using the CNC machine. Once cut, it's on to gluing on buttons and connecting them to a microcontroller (tiny computer), which takes the button presses, converts them into a combination of keyboard commands and sends them down a USB cable to the computer which thinks you're inputting a whole load of keyboard commands:



You could program it to input your name every tine you press a key, or enter passwords and emails automatically. Lots of stuff.

Here's an example fo the code that runs on the microcontroller (called a Teensy LC):


int overlayStatus = 0; // indicates whether to switch to title safe/proportional grid/off

void setup () {
  // initialize the pushbutton pin as an input:
  pinMode(0, INPUT_PULLUP);
  pinMode(1, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(13, OUTPUT);

  Keyboard.begin();
}

void loop() {

  /*EASY EASE
    if (digitalRead(0) == LOW) {
    Keyboard.press(KEY_F9);
    do {}
    while (digitalRead(0) == LOW);
    delay (10);
    Keyboard.releaseAll();
    }*/


  //CENTRE ANCHOR POINT AND CENTRE IN VIEWER
  if (digitalRead(0) == LOW) {
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press(KEY_HOME);
    delay (10);
    Keyboard.releaseAll();
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press(KEY_HOME);
    do {}
    while (digitalRead(0) == LOW);
    delay (10);
    Keyboard.releaseAll();
  }

  //TIME REVERSE KEYFRAMES
  if (digitalRead(1) == LOW) {
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press('y');
    do {}
    while (digitalRead(1) == LOW);
    delay (10);
    Keyboard.releaseAll();
  }

  //SELECT ALL AND SHOW KEYFRAMES/COLLAPSE
  if (digitalRead(2) == LOW) {
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press('a');
    Keyboard.releaseAll();
    delay(10);
    Keyboard.press('u');
    do {}
    while (digitalRead(2) == LOW);
    delay (10);
    Keyboard.releaseAll();
  }

  /*SHOW OR HIDE GRAPH EDITOR
    if (digitalRead(3) == LOW) {
    Keyboard.press(KEY_LEFT_SHIFT);
    Keyboard.press('E');
    do {}
    while (digitalRead(3) == LOW);
    delay (10);
    Keyboard.releaseAll();
    }*/

  //PLAY/stop
  if (digitalRead(3) == LOW) {
    Keyboard.press(32);
    do {}
    while (digitalRead(3) == LOW);
    delay (10);
    Keyboard.releaseAll();
  }

  //ADVANCE 1 FRAME
  if (digitalRead(4) == LOW) {
    Keyboard.press(KEY_PAGE_DOWN);
    delay(150);
    Keyboard.releaseAll();
  }

  //RETREAT 1 FRAME
  if (digitalRead(5) == LOW) {
    Keyboard.press(KEY_PAGE_UP);
    delay(150);
    Keyboard.releaseAll();
  }

  //TITLE SAFE/PROPORTIONAL GRID/NO OVERLAY
  if (digitalRead(6) == LOW) {
    if (overlayStatus == 0) {
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(39);
      overlayStatus = 1;
      do {}
      while (digitalRead(6) == LOW);
      delay (10);
      Keyboard.releaseAll();
    }
    else if (overlayStatus == 1) {
      Keyboard.press(39);
      overlayStatus = 2;
      do {}
      while (digitalRead(6) == LOW);
      delay (10);
      Keyboard.releaseAll();
    }
    else if (overlayStatus == 2) {
      Keyboard.press(39);
      overlayStatus = 0;
      do {}
      while (digitalRead(6) == LOW);
      delay (10);
      Keyboard.releaseAll();
    }
  }

  //RESIZE & REFRAME COMP VIEWER TO FIT
  if (digitalRead(7) == LOW) {
    Keyboard.print('.');
    delay(10);
    Keyboard.press(KEY_LEFT_SHIFT);
    Keyboard.press('/');
    do {}
    while (digitalRead(7) == LOW);
    delay (10);
    Keyboard.releaseAll();
  }


}