Difference between revisions of "Component: Switch Array Template (Inputs: Switches)"
Line 55: | Line 55: | ||
− | The resistors are required for correct operation because when a microcontroller's input pin is essentially connected to nothing it will pick up noise in the environment and provide inconsistent readings. To test this remove the resistors (if possible) and touch the unconnected switch pins with your finger the output LEDs from the example file above will toggle on and off at high speed. | + | The resistors are required for correct operation because when a microcontroller's input pin is essentially connected to nothing it will pick up noise in the environment and provide inconsistent readings. This state is referred to as floating i.e. the pin is floating. To test this remove the resistors (if possible) and touch the unconnected switch pins with your finger the output LEDs from the example file above will toggle on and off at high speed. |
Revision as of 13:51, 18 August 2016
Author | Matrix Ltd. |
Version | 2.0 (Release) |
Category | Inputs: Switches |
Contents
Switch Array Template component
A base component for creating an evenly spaced array of switches. Each will be connected to sequential pins of a given I/O port. Set target object to point at any standard switch component to change the type of switch used by the array.
This component can be used as a base to create child components
The following components all inherit the traits of Switch Array Template:
Examples
Here is an example Flowcode program to read the values of a switch array.
Here is a schematic of how to connect a basic switch to a microcontroller pin.
The active high circuit will pass a logical 0 to the input pin when the switch is not pressed and a logical 1 when the switch is pressed.
The active low circuit will pass a logical 1 to the input pin when the switch is not pressed and a logical 0 when the switch is pressed.
There are some differences depending on the type of switch you have, the above states assume a generic push to make type switch, however a push to break type switch would have reversed logic and a toggle switch can work well with either setup.
The resistors are required for correct operation because when a microcontroller's input pin is essentially connected to nothing it will pick up noise in the environment and provide inconsistent readings. This state is referred to as floating i.e. the pin is floating. To test this remove the resistors (if possible) and touch the unconnected switch pins with your finger the output LEDs from the example file above will toggle on and off at high speed.
Any values of resistor can be used but it is important to keep the smaller resistor at least 10X smaller then the larger resistor to ensure that the pressed state provides at least 0.91% of the required pressed state voltage. For example a active high switch circuit using 1K and 10K resistors should pull up to about 4.54V when the switch is pressed.
(5V / 11K) * 10K = 4.54545V
Downloadable macro reference
ReadState
Read the state of the switch at the given index.
Parameters
- BYTE Index
- The switch to read the status of.
Return value
- BOOL : Key state - true = on, false = off
WaitUntilHigh
Pause the program until the switch at the given index is turned on.
Parameters
- BYTE Index
- Index of the switch to wait for.
Return value
- This call does not return a value
ReadAll
Reads all of the switches at once, returning a byte containing one bit per
switch.
Parameters
- This macro has no parameters
Return value
- BYTE : One bit per switch in the array.
WaitUntilLow
Pause the program until the switch at the given index is turned on.
Parameters
- BYTE Index
- Index of the switch to wait for.
Return value
- This call does not return a value
Simulation macro reference
GetHandle
Retrieves the object handle of the switch component at the given index.
Parameters
- BYTE Index
Return value
Property reference
Count
This property is of type Unsigned integer and can be referenced with the variable name count.
The number of LEDs in the array from 1 to 8.
Input Mode
This property is of type Fixed list of ints and can be referenced with the variable name port.
Choose a single port for all LEDs - pins are allocated in sequence from pin 0 - 7
...or choose 'Custom pins' to assign each switch individually.
Port
This property is of type Digital port byte and can be referenced with the variable name PortByte.
No additional information
Polarity
This property is of type Fixed list of ints and can be referenced with the variable name polarity.
Active High = LEDs light when the chosen chip pin is ON
Active Low = LEDs light when the chosen chip pin is OFF
Debounce
This property is of type Signed integer and can be referenced with the variable name debounce.
Time in milliseconds allowed for the pin to settle following a change of state.
Operation
This property is of type Fixed list of ints and can be referenced with the variable name operation.
Sets whether switches toggle or are press/release.
NB) This option can only be set when the original target includes this option.
Alignment
This property is of type Fixed list of ints and can be referenced with the variable name align.
Which 3D axis to align the copies along.
Spacing
This property is of type Floating point and can be referenced with the variable name spacing.
The distance between LEDs in the array.
LEDs will be spaced symmetrically around the component centre.
Use a negative value to reverse the order of the LEDs.
Reverse
This property is of type True or false and can be referenced with the variable name reverse.
Whether to reverse the order of the switches.
Show Labels
This property is of type Fixed list of ints and can be referenced with the variable name show_labels.
Whether to show labels giving each switch's pin connection.
Label color
This property is of type Color picker and can be referenced with the variable name label_color.
Color of the port and pin labels
Target Switch
This property is of type Panel object and can be referenced with the variable name target_object.
To use a custom switch design...
- Drag any switch component onto the panel, or create your own using the 'Switch base'
- Give your new switch a memorable name.
- Choose the new switch in this property; copies will be made to fill the array, and the original is hidden.
When unconnected, it will use a default 'basic switch'.