Barrel Sander (M002) Wooden Slat

The inside of the barrel tumbler needs a polygon (made from wood) in order to (a) give enough “traction” to turn the contents, and (b) protect the barrel from repeated impacts.  I’m going to use Oak or Maple to do this.  Based on the width and thickness of available material, I chose a 9-sided polygon.

Here is a picture of the CAM operation prepared using Fusion 360.   I will make nine of these with just a fraction of an inch extra that I can remove on the jointer while getting a tight fit.

Fusion360_2018-08-06_22-09-00.png

Stain Dipping Machine Cable Winding Pulley

The cable winding pulley was the most complicated part of the machine due to it’s multiple set screws, flat surfaces, precise bore, and threading.  One set screw holds the pulley on the shaft.  The other set screw holds the cable firmly attached to the pulley.

20180714_190920

Here is a picture of the pulley mounted to the DMM Tech Servo Motor.  In the background you can see the cable go up through the top of the machine, over the free pulley, and back down to hold the main slider mechanism.

IMG_2388

Example of Python Generator Function.

One of the great features of Python is Generator Functions.  Generator functions allow you to convert any function to a generator function by simply including the yield keyword somewhere in the function body.  When a generator function is called, the response is a generator object, which can be iterated over among other things.

To boil this down to basics, generator functions allow you the programmer to create a function which yields one value at a time (and pauses until the next value is requested) until you decide it is done.  This opens endless possibilities for converting sequences, creating sequences, filtering, and more.

The following example is a generator function which will take a simple list or iterator and return pairs of (element, previous_element).  This is a great use for generators and the yield statement.

Generator Function:

def lineandlast(listish, first=True, last=True):
    iterator = iter(listish)
    lastline = next(iterator)

    if first:
      yield lastline, None

    for line in iterator:
        yield line, lastline
        lastline = line

    if last:
        yield None, lastline

Example:

for line, last in lineandlast([1,2,3,4,5]):
    print(line, last)

Output:

1 None
2 1
3 2
4 3
5 4
None 5

Notes:
There are two keyword arguments, first and last, which can be used to control the output of the first and last items on the output example above.