# Settings

Configuration settings for KL25Z CPU ID unknown

Memory used: Unknown of 16K bytes (Unknown bytes free) Explain
This shows the total RAM usage on the KL25Z for your current configuration. Memory usage is mostly static; the software allocates memory during initialization after the device boots up. You shouldn't see any fluctuation during normal use. Memory usage changes only when you add or remove features via the settings below, and only updates after you save the new settings. Since memory is assigned during startup, the software doesn't need much free memory to run, so don't worry if the free space looks tight. We show the memory figure mostly for diagnostics, and to give you an idea of how much headroom you have left for enabling additional features.

System type. Are you using this KL25Z on its own, or with a set of expansion boards? Help
If you're using the Pinscape expansion boards, select that option below, and the setup tool will automatically fill in the appropriate pin assignments throughout the configuration. If you're using the KL25Z by itself, or you're using your own custom add-ons (e.g., your own output booster circuits), select "stand-alone" so that you can set the individual pin assignments to match your wiring.

Stand-alone KL25Z (or your own custom boards) | Pinscape Expansion Boards

Expansion board details:

Number of MOSFET power boards: |
Number of chime boards: |

Show KL25Z pin assignments
The KL25Z pin assignments are hidden by default because you've selected the expansion board configuration. All pin assignments are pre-determined in this configuration. Check the box above if you want to view the pin assignments anyway, but be aware that any changes to pin assignments will probably cause problems.

USB Identification. This is how the KL25Z identifies itself to Windows through the USB port.
Vendor ID: Product ID:

- If you have a real LedWiz unit in your system, choose LedWiz Unit 8 for your first Pinscape unit, 9 for the second, etc.
- If you don't have any real LedWiz units, choose LedWiz Unit 1 for the first unit, 2 for the second, etc.

I want more details!

- For LedWiz compatibility, choose an LedWiz unit number. LedWiz compatibility lets older programs, like Future Pinball, control outputs through this Pinscape unit.
- LedWiz unit numbers must be unique. Be sure to choose an ID that isn't used by your real LedWiz, or by another Pinscape controller. Programs on the PC use the unit number to tell the devices apart, so each device needs a different number.
- If the LedWiz IDs cause conflicts on your system with other USb devices, you can try the Pinscape ID. This ID is registered uniquely to Pinscape, so it shouldn't conflict with anything. However, using this ID will give up LedWiz compatibility. This means that older software like Future Pinball won't be able to access the output controller features. Newer software based on DOF R3 (such as Visual Pinball and PinballX) will still be able to take full advantage of the output features. The input features shouldn't be affected one way or the other.
- The Custom ID option is only for techies doing something tricky. Don't use it unless you have a good reason. Using a custom ID will make the output features unreachable even from DOF. (The input features will still work, though.)

Pinscape ID. This is a separate ID from the LedWiz unit number. DOF R3 and the DOF Config Tool use this ID to identify the unit. Set this to 1 for your first unit, 2 for the second, and so on.

This is completely unrelated to the LedWiz unit number, so it doesn't need to match that, and by the same token doesn't need to be different. This doesn't affect the USB ID or the Windows device drivers. It's purely for DOF and other Pinscape-aware software.

Reset on disconnect. If the USB connection is broken, and can't be re-established within a time limit, the KL25Z can automatically reset itself as an attempt to fix whatever's wrong. Select the time interval (in seconds) before this happens.
Enabled
Time before reboot (seconds):
Details
Details
On some systems, the KL25Z has trouble re-establishing a broken USB connection, such as after rebooting or power-cycling the PC. This can usually be solved by resetting the KL25Z. If you set this option, the KL25Z will reset itself automatically when it detects a broken connection and can't reconnect within the specified time limit. The delay is there to avoid unnecessary resets when the connection only glitches momentarily. The recommended setting is 10 seconds.

TV ON switch. If one or more of your monitors needs to be turned on manually every time you power up your cabinet, you can use this feature to switch them on automatically. See the Build Guide for wiring instructions.
Enabled Test

Power status input: |
Status latch output: |
Relay output: |
Startup delay time (seconds): |  | This is how long to wait after power-on before pulsing the relay

IR Remote Control. The controller can send and/or receive IR remote control signals if you attach some additional components. This can be used with the TV ON feature to turn your cabinet TVs on via IR commands at system startup. See the Build Guide for details on the components required and how to connect them. If you don't have any IR components attached or wish to disable them, simply set the pin assignments here to "Not Connected".

IR LED (transmitter) pin: |  | Requires a PWM-capable pin
IR receiver input pin: |  | Requires an interrupt-capable pin

The firmware version installed on your device doesn't support the IR remote features. Update to the latest firmware to enable these features.
IR Command List. You can program the Pinscape unit with remote control commands that it can then send and receive. Each slot below stores one code. Help

Note: your current firmware version can store up to 0 codes. The list above will automatically expand as you fill in new rows, up to the limit.

Joystick input. The controller acts like a Windows USB Joystick in order to send the plunger position, accelerometer readings (for nudging), and button inputs to the PC. You can disable these inputs if desired.
Enable joystick input
Why would I want to disable this?
Why would I want to disable this?
By default, each Pinscape unit reports its accelerometer readings to the PC via the joystick interface. If you have more than one unit installed, that means you'll have more than one set of these reports coming in. The extra reports can confuse some pinball software, and can also affect system performance. This option lets you disable the extra reports from the secondary units. If you have a plunger attached to one of the units, you should consider that one to be your primary unit and leave its joystick interface enabled. You should disable the joystick interface on any other units.
Joystick axis format:
What's this?

A real joystick reports the position of the stick by sending an "X Axis" value for the left/right position of the stick and a "Y Axis" value for the up/down position. It can also send a "Z Axis" value to represent another control like a throttle. Normally, Pinscape uses these same three axes, by sending accelerometer readings on the X and Y axes, and plunger readings on the Z axis. The USB protocol for joysticks also defines a set of "rotational" axes called Rx, Ry, and Rz. Real joysticks that allow twisting motions report those motions on these "R" axes. If you wish, Pinscape can report its normal readings on the "R" axes in place of the normal X/Y/Z axes.

Why would you want to use the "R" axes? In most cases, you wouldn't; the normal X/Y/Z settings are recommended because they're compatible with most software. However, the "R" axes can be useful if you have other joysticks in your system that are conflicting with Pinscape. If your other joystick is reporting its input on the normal X/Y/Z axes, and it's creating problems with VP or other software, you might be able to fix the conflict by telling Pinscape to use the Rx/Ry/Rz axes instead.

If you change the Pinscape axes, you also have to reconfigure Visual Pinball and any other pinball players to use the Rx/Ry/Rz axes. Future Pinball has no way to read the Rx/Ry/Rz axes, so using these in Pinscape will make it incompatible with FP. You might run into the same limitation in other software. Because of the compatibility issues, you might find that it's better to reconfigure the other joystick that's creating the conflict, if possible, since that would let you continue using the more compatible X/Y/Z axes for Pinscape.

Joystick report interval (milliseconds): Explain

This lets you set the time between the joystick reports that the device sends to the PC on the USB connection. These reports send current information on the accelerometer readings, plunger position, and the button-press status for any buttons assigned to the joystick.

Pinscape is capable of sending reports as fast as every 1 to 2 milliseconds. (The exact speed depends on the type of plunger sensor and other external hardware you're using.) But we actually don't want to send reports as fast as we can, because Windows and Visual Pinball can't digest them at that pace. This setting lets you slow down the reports to a suitable rate for the PC.

Recommendation: start with an input time of 8.333ms and an "accelerometer stutter" setting of 2. This should work well on most systems, but it's not necessarily optimal for everyone, because VP's timing characteristics can vary according to your PC setup. You might have to experiment to find the ideal settings for your system. After adjusting the timing, test nudging with VP. If it seems natural, keep the settings. If VP's response to nudging seems erratic (for example, it ignores some nudges, but overreacts to others), try different timings. It's best to keep the setting in a range from about 5ms to 20ms. Anything shorter than 5ms will be too fast for Windows to digest properly, and anything longer than 20ms might produce excessive latency (games respond slowly to button presses and nudges).

Accelerometer "stutter": Explain

The "stutter" setting works in connection with the joystick report interval above to set the interval between accelerometer reports. The accelerometer reading is sent as part of the joystick report, so the base interval between accelerometer readings is exactly the same as the joystick report interval. This setting lets you slow down the accelerometer readings to a multiple of the joystick interval.

The stutter is the number of times that each physical accelerometer reading is repeated in sequential joystick reports. If you set the stutter to 1, it means that a new reading is sent with every joystick report sent to the PC. If you set it to 2, a new reading is sent with every other report, and the alternating reports simply repeat the prior reading. If you set it to 3, a new reading is taken every three reports.

Why would you want to slow down the accelerometer readings? Because VP can't use the readings if they arrive too quickly. For best results in VP, readings should only be sent once per video cycle. If your graphics card is set to a 60Hz refresh rate, the video cycle is 16.667 milliseconds long, so VP will work best if you send accelerometer readings every 16.667ms. However, you might want to send joystick reports faster than this, so that joystick button updates are sent closer to real-time. This is where the stutter setting comes in: it lets you send joystick reports at a fast pace for lower button latency, but slow down the accelerometer readings to accommodate VP's slowness reading them.

Recommendation: start with a joystick report interval of 8.333ms and a stutter setting of 2. This will read the accelerometer at 60Hz, which is usually optimal for VP, but will send button input updates twice as often, which might make other programs that use joystick buttons more responsive. The optimal timing in VP can vary according to your PC setup, though. Check your video card refresh rate (use the video card rate, not the monitor's refresh rate). If it's not 60Hz, choose a report interval close to 10ms that divides evenly into the refresh interval, and choose a stutter time equal to the refresh interval divided by the report interval. If your video card refreshes at 120Hz, for example, use an 8.333ms interval and set stutter to 1.

Accelerometer orientation. If you're using the accelerometer (for nudge sensing), the software needs to know how the KL25Z is oriented in the cabinet so that it can report motion in the right direction. Install the KL25Z in one of the orientations shown below, level with the floor of the cabinet, with the chips and LEDs facing up.

Ports facing front | Ports facing left | Ports facing right | Ports facing rear

Dynamic range. Select the range for accelerometer readings. Ranges above ±2G have lower precision. Details

The KL25Z accelerometer hardware has three native range settings: ±2G, ±4G, and ±8G. (A "G" is the acceleration of the earth's gravity, 9.8m/s².) The device offers the options because each is a compromise between precision and dynamic range, and some applications care more about precision while others care more about range. Precision is the ability to discern the difference between nudges that are very close together in strength. Dynamic range is the ability to tell the difference between nudges that are very far apart in strength. In the 2G range, the device has the best precision, but the tradeoff is that readings are capped at 2G, so real accelerations that are higher than 2G will read as 2G. The 4G and 8G ranges increase the cap, allowing for true readings up to the respective limits, but the tradeoff is that they lose some of the ability to distinguish readings that are very close together.

For virtual pinball use, the 1G or 2G settings are recommended, because precision is more important to us than range. It makes it more realistic if the game can discern fine shadings of strength. It's not as important to distinguish very high accelerations from one another, since anything beyond a certain point is just a TILT anyway.

1G is the default because it was the fixed setting in older versions of the Pinscape firmware, before this option existed. 1G will produce the same effects you're used if you had previous versions installed. If you wish, you can change to 2G with no loss of precision, because 1G and 2G use the same native device settings. If you do change to 2G, you should adjust your VP "axis gain" settings (in the keyboard preferences) to compensate, by doubling the old settings. Similarly, if you decide to try 4G or 8G, double the gain settings again at 4G, and yet again at 8G.

±1G (original Pinscape setting, highest precision)
±2G (same precision as ±1G but with wider range)
±4G (reduced precision, wider range)
±8G (lowest precision, widest range)
Auto-centering. The controller automatically zeroes the accelerometer after it's been sitting still for a while. This compensates for any tilt in the mounting position. If you prefer, you can disable the automatic centering, and center it manually when needed using the Joystick Viewer.
Manually center only (no auto-centering)
Auto-center with default time (5 seconds)
Auto-center with custom time
Time in seconds: 1-60 seconds
The firmware version installed on your device has a fixed ±1G dynamic range for the accelerometer, and automatic centering (zeroing) after being motionless for 5 seconds. Update to the latest firmware if you want to customize these settings.

Plunger sensor setup
Sensor type:
Live Sensor View
TSL14xx optical sensor. This is a large optical sensor with the pixels arranged in a single row, about 3" long. We detect the plunger position by reading the image from the sensor and looking for the shadow cast by the plunger. The edge of the shadow tells us the plunger position.
TSL1401CL bar code sensor. This is a small optical sensor that we use to read the plunger position from a bar-coded "scale". The scale has a series of tiny bar codes across its length, with each bar code representing its position. As the plunger moves, the sensor slides along the scale, and we can read the current position by scanning the nearest bar code. This requires the specially printed scale with bar codes in the format the software recognizes.
Important! Don't confuse this with the TSL1410R. This option is for the TSL1401CL, which is a completely different sensor from the TSL1410R. The two are at the opposite extremes of the size scale, so they can't be used interchangeably despite the confusingly similar names. The TSL1401CL is about 8mm long, and we use the small window to read a compact bar code. The other sensor is about 3" long, and we use to take pictures of the plunger directly. Choose TSL1410R instead if you're using that other, larger sensor.
Pin assignments:

SI (serial data): |
CLK (serial clock): |
AO (analog data): |  | Requires an ADC-capable (analog in) pin

Connect the sensor to the PLUNGER connector (JP2) on the main interface board:

- Sensor AO1/AO2 to pin 1
- Sensor CLK to pin 3
- Sensor VDD to pin 5
- Sensor VPP (GND) to pin 6
- Sensor SI to pin 8

Potentionmeter. This uses a slide potentiometer, which is a variable resistor with a control knob that moves linearly across the length of the device. Attach the control knob to the plunger so that the knob moves with the plunger. The pot's electrical resistance changes as the knob moves, proportionally to the position, so the controller can determine the plunger position by reading the voltage on the input.
Pin assignments:

Wiper: |  | Requires an ADC (analog in) pin

Connect the sensor to the PLUNGER connector (JP2) on the main interface board:

- Pot wiper to pin 1
- One fixed-resistor end to pin 5
- Other fixed-resistor end to pin 6

Note: this sensor type setting can be used with other sensors that represents the plunger position as an analog voltage level, such as an LVDT or analog IR distance finder. Connect the sensor's analog output pin to JP2 pin 1. Connect sensor power to pin 5 and GND to pin 6.
Quadrature sensor. This uses an optical sensor that tracks its position along a special reflective guide rail, with bars marked at regular intervals. The sensor keeps track of its position by counting the bars it passes as it moves.
Pin assignments:

Channel A: |  | Requires an interrupt-capable pin
Channel B: |  | Requires an interrupt-capable pin

Connect the sensor to the PLUNGER connector (JP2) on the main interface board:

- Channel A (CHA) to pin 3
- Channel B (CHB) to pin 4
- Sensor 3.3V to pin 5 (if required)
- Sensor GND to pin 6
- Sensor 5V to pin 7 (if required)

VL6180X distance sensor. This sensor determines the distance to a nearby object by bouncing pulses of light off the object and measuring how long the light takes to return, using a very precise clock.
Pin assignments:

SDA: |
SCL: |
GPIO0/CE: |

Connect the sensor to the PLUNGER connector (JP2) on the main interface board:

- SDA to pin 8
- SCL to pin 3
- GPIO0/CE to pin 1
- Sensor VIN to pin 5
- Sensor GND to pin 6

Plunger auto-zeroing: If this is enabled, the firmware will automatically reset the plunger position to zero after it hasn't moved for the minimum time selected. Details
Quadrature sensors use purely relative positioning, so they need a fixed starting point. We use the plunger's "park position" (where it comes to rest when you're not moving it manually) as the natural zero point. If the sensor ever misses any plunger motion, or if the plunger isn't at rest when the system is powered up, the relative position counter can get out of sync with reality, making the on-screen plunger a little off from the real position. The firmware can correct for this by automatically zeroing the on-screen position (setting it to exactly the park position) whenever the plunger remains at rest for a minimum time period. It's usually safe to assume that the plunger is at the park position when it hasn't moved in a long time, since you don't normally hold it still anywhere else for long periods. You only need to enable this if the plunger doesn't always stay in perfect sync on its own. Choose a long enough time period that you probably won't ever hold the plunger away from the park position for that long in normal play.
Enable auto-zeroing
Auto-zero after seconds

Plunger calibration button. If you wish, you can install a pushbutton in your cabinet to activate plunger calibration mode. This is optional, since you can also run the calibration from this setup program. See the Build Guide for wiring instructions.

Button input: | Enabled
Indicator lamp output: | Enabled

(The calibration button is only applicable when you have a plunger sensor installed.)
Connect the calibration button to the CAL BTN connector (JP3) on the main interface board.

ZB Launch Ball setup. You can set up your mechanical plunger to act as a "virtual" Launch Ball button for tables that use a button instead of a plunger. Details
This feature lets you use a mechanical plunger in lieu of a Launch Ball button, for tables that need it, in case you don't want to install a separate physical Launch button. When this is enabled, you treat the plunger knob like a button: push it a little forward to "click" the button. You can also pull back and release the plunger to simulate a brief button push.

- The feature is only activated when a non-plunger table is running on the PC. We can tell because Visual Pinball turns on the output port selected below when such a table is loaded.
- The port you designate can be any type, including a "virtual" port that isn't connected to any physical output wiring.
- In the DOF Config Tool, be sure to set the port number you designate here as your ZB Launch Ball port. That connects everything on the PC to the right port.
- Select the keyboard key or joystick button to send to the PC when the plunger triggers a launch. This is usually the Enter key, because that's what almost all PC pinball software uses.
- The push distance sets the sensitivity. When you push the plunger forward by this amount or more (and the feature has been activated by the output port), the controller simulates pressing the Launch Ball button. Set the distance far enough that it doesn't trip randomly, but short enough that you don't have to push too hard. We recommend about .06 to .08 inches.

(The ZB Launch Ball feature only applies when you have a plunger sensor installed.)
Enabled

Output port number: |  | Important! Set this port to "ZB Launch Ball" in the DOF Config Tool
Key/button: |  | Most PC pinball software uses the Enter key for ball launch
Push distance (inches): |  | Recommended value is 0.063 (about 1/16")

Button inputs. You can use the KL25Z as a key encoder to connect pinball-style buttons on your cabinet to the PC. Set up the wiring connections and key assignments below. Each input can be mapped as a joystick button or keyboard key. Click an input pin or key assignment to change a setting.
Test Buttons
Shift button number: Help
Shift OR Key mode
Shift AND Key mode
Set standard joystick buttons | Set standard keyboard keys | View standard key assignments

Note: your current firmware version supports up to 0 physical buttons. The list above will automatically expand as you fill in new items, up to the limit.

TLC5940 (external PWM controller chip) setup What's this?
The TLC5940 is an integrated circuit chip that you can connect to the KL25Z to add extra outputs for more feedback devices (lights, solenoids, motors, etc). TLC5940 outputs have full PWM (Pulse Width Modulation) capabilities, allowing the software to control the brightness of an attached light or the speed of a motor. The DIP version of this chip is no longer being manufactured, so you can't order them from most distributors, but they're still easy to find on eBay and elsewhere.

These chips let you go beyond the KL25Z's limited PWM capabilities. The KL25Z only has 10 PWM channels of its own, which isn't enough for most virtual pinball machines. Each TLC5940 chip provides 16 PWM outputs, and you can connect two or more of the chips in a daisy chain to add almost unlimited outputs. Only five GPIO pins are needed to control the whole chain.

The Pinscape Expansion Boards use these chips to provide extra PWM outputs. You can also install them with your own custom wiring. The circuitry needed is outlined in the Build Guide. The settings below configure the data signal connections between the KL25Z and the TLC5940's.

The TLC5940 configuration is automatically set up for your expansion boards.

Number of TLC5940 chips: |

SI (serial data) output: |  | Requires an SPI MOSI output pin
SCLK (serial clock) output: |  | Requires an SPI SCLK output pin
XLAT output: |
BLANK output: |
GSCLK output: |  | Requires a PWM-capable output pin

TLC59116 (external PWM controller chip) setup What's this?
The TLC59116 is an integrated circuit chip that you can connect to the KL25Z to add extra outputs for more feedback devices (lights, solenoids, motors, etc). TLC59116 outputs have full PWM (Pulse Width Modulation) capabilities, allowing the software to control the brightness of an attached light or the speed of a motor.

These chips let you go beyond the KL25Z's limited PWM capabilities. The KL25Z only has 10 PWM channels of its own, which isn't enough for most virtual pinball machines. Each TLC59114 chip provides 16 PWM outputs, and you can connect up to 14 of the chips. Only three GPIO pins are required no matter how many of the chips are attached.

The TLC59116 is a successor to the TLC5940 (see above) with a more modern design. It's only available in a surface-mount (SMD) package, which makes it a little harder to work with than the traditional DIP form factor of the TLC5940NT. This chip is not interchangeable with the TLC5940, even though it has a similar function, since it has a different physical pin layout and a different software interface.

Disabled - Show Settings
Attached chips by address: Explain
Each TLC59116 has its own unique address, set via the A3 A2 A1 A0 pins on the chip: a pin wired to + voltage is a "1" and a pin wired to GND is a "0". Select the addresses of the chips attached to your system according to how you wired the address pins. Addresses 8 and 11 aren't shown because they're reserved for special purposes. To disable support for this chip type entirely, un-check all of the addresses to indicate that no chips are present.
0 (0000) 1 (0001) 2 (0010) 3 (0011) 4 (0100)
5 (0101) 6 (0110) 7 (0111) 9 (1001) 10 (1010)
12 (1100) 13 (1101) 14 (1110) 15 (1111)
GPIO pin assignments:

SDA: |
SCL: |
RESET: |

74HC595 (external digital out chip) setup What's this?
The 74HC595 is an integrated circuit chip that can be connected to the KL25Z to add more digital outputs for feedback devices like solenoids and replay knockers. "Digital" means that the outputs are strictly on/off: the software can't modulate intensity or brightness. Digital outputs are ideal for feedback devices that inherently need only on/off control, such as solenoids.

The Pinscape "Chime Board" uses this chip to add outputs for replay knockers and chime units. You can also add these chips with your own custom wiring; the circuitry is described in the Build Guide. The settings below let you configure the data connections between the KL25Z and the 74HC595's.

The 74HC595 configuration is automatically set up for your chime boards.

Number of 74HC595 chips: |

SI (serial data) output: |
SCLK (serial clock) output: |
LATCH output: |
ENA output: |

Pinscape After Dark. You can set up a button or switch to activate Night Mode, which disables the feedback device outputs that you designate as noise-makers. This lets you play during late-night hours without disturbing your party-pooper housemates and neighbors. Details

- Select an input button to turn Night Mode on and off. Wire this like any other button.
- You'll probably want to configure the button you select for "No PC Input" in the button setup, but you can have it send a keystroke if that's useful to you for some reason.
- If you don't want to wire a physical button for this, just set the button number to 0 (zero). You can still control Night Mode with the NightMode.exe program on the PC (it's in your Pinscape Setup Tool folder).
- You can also optionally select an output port to serve as an indicator light, so that you can tell when night mode is turned on. If you don't need an indicator, just set this to 0. If you do assign a port, you should leave it unassigned in your DOF port layout.

Button input number: | 0 = no input button assigned
| Use shifted button (see Button Setup)
Button type: |
Momentary button (Toggles mode when pushed) | On/off switch
Indicator lamp output port: | 0 = no indicator output

Feedback device outputs. Pinball software on the PC can control output devices connected to the KL25Z to create special effects during play, such as tactile feedback and lighting displays. The PC software uses the port numbers in the list below to address the outputs. Use these port numbers when you set up your DOF configuration. For each port, you can select the physical output pin that the port is wired to.
Test Outputs

| Port No. | Type | Location | Pin | Port |  |  | Options [?] | Description

Flipper Logic Options
Initial Time
(millseconds)
Hold Power
(percentage)
ChimeLogic Options
Min ON Time
(milliseconds)
Max ON Time
(milliseconds)
Chip 1
Chip 1
Chip 1
JP9
Flashers
N/C
Board 1
Board 1
A "virtual" output is a software port that isn't connected to a physical output. This can be used as a placeholder in your DOF setup, or for a special function, such as the ZB Launch Ball control port.
Virtual
ZB Launch Port
GPIO
PWM Out
GPIO
Digital Out
SPI (MOSI)
SPI (SCLK)
Analog In
Digital In
Interrupt In
TLC5940 Out
TLC59116 Out
74HC595 Out
Main Board
PWM Out
Main Board
Digital Out
Main Board
Power Board
Chime Board
Virtual Out
Select this option if you don't want the button to send any input to the PC when pressed.
No PC Input
Joystick Buttons