# Samples

## CNC Pendant 1

This is my first CNC pendant, designed for Mach3. It has many unnecessary controls, but I added them so I can build and test Generic HID. It has both a jog dial and axis joysticks. When I decide which one I like, my next pendant will have them. I have also yet to update my mach3 drivers, so I'm using this with my lathe, EMC2 and hidcomp.

The controls are...

Top Row
Run | Momentary illuminated push button. Push this to start processing the GCode. The switch is illuminated when running.
Stop | Stop the GCode running.
Step | Illuminated push-on push-off button. Enters Mach3 single step mode. Press Run to step through each line of GCode.
Tool Change | The tool change LED flashes when it is time to change tools. The LED is a flashing LED. Generic HID doesn't flash.
Emergency Stop | This is the Emergency Stop button. It is a software emergency stop. It asks Mach3 to stop. It is a twist to release button.
Second Row
Tool Retract | Retract the tool, measure it on the tool probe, then retract to a safe height for tool changing.
Tool Home | Touch off the new tool against the tool probe to set its height.
Home Set | Set the Home position where the tool probe is located.
Goto Zero | Move the tool to X0, Y0, then to Z0.
Third rowish
LCD | 20x4 LCD display (a compact version from Varitronix, MDLS-20464B-LV-G-LED04G, purchased from Digikey). The LCD displays the current tool position, GCode line, errors, tool change information.
X0,Y0,Z0,A0 | Buttons to set individual axis positions to zero.
Spindle Speed | Rotary encoder to set the spindle speed (actually spindle override)
Feed Override | Rotary encoder to set the Feed Rate Override.
Fourth Group
Vel | While depressed, the Jog Dial motion is interpreted as a velocity. This means as soon as the dial stops moving, the axis will stop moving.
Pulse | While depressed, the Jog Dial motion is interpreted as steps. This means the axis will continue moving until the dialled steps have been moved.
Jog Dial | The Jog Dial rotary encoder.
Axis Select | The axis select switch. The Jog Dial moves the selected axis. One of X, Y, Z, A, B, C.
Scale factor | Specifies the scale factor of each tick of the jog dial. One of x1, x10, x100, x1000. Each unscaled tick is 0.01 mm.
Fifth row
100% | Combined with the joystick movement to scale the value by 100%.
10% | Combined with the joystick movement to scale the value by 10%.
XY Joystick | 2 axis joystick to move the x and y axis. Will only move if either the 100% or 10% buttons are pressed.
AZ Joystick | 2 axis joystick to move the a and z axis. Will only move if either the 100% or 10% buttons are pressed.

## CNC Pendant 2

This is the pendant for my CNC Lathe, although there aren't any lathe specific features. It is based around a Rose-Bopla BG220 Handheld Enclosure. It is a large hand held enclosure with a cut out for a display. Unfortunately the cut out and mounting holes for the display are an awkward fit. It didn't fit a stock 20x4 LCD. A compact one would fit, but would leave a lot of space around the outside. So, I found a 3.2" 240x320 RGB graphics LCD that fit nicely when mounted sideways. I've built the graphic controller which just does text at the moment, and now just need to update GenericHID to support it - it has an SPI interface, multiple fonts, and lots of rows and columns. The photo below is of the pendant almost complete. A short write up of the completed pendant can be found here.