making the code ready to merge with main
This commit is contained in:
parent
5a60f79ad4
commit
2fa2cf4265
@ -16,6 +16,7 @@
|
|||||||
- digital Inputs
|
- digital Inputs
|
||||||
- digital Outputs
|
- digital Outputs
|
||||||
- Matrix Keypad
|
- Matrix Keypad
|
||||||
|
- Multiplexed LEDs
|
||||||
- Quadrature encoders
|
- Quadrature encoders
|
||||||
- Joysticks
|
- Joysticks
|
||||||
|
|
||||||
@ -32,9 +33,10 @@
|
|||||||
binary encoded Selector = 'K' -write only -Pin State: 0-32
|
binary encoded Selector = 'K' -write only -Pin State: 0-32
|
||||||
rotary encoder = 'R' -write only -Pin State: up/ down / -2147483648 to 2147483647
|
rotary encoder = 'R' -write only -Pin State: up/ down / -2147483648 to 2147483647
|
||||||
joystick = 'R' -write only -Pin State: up/ down / -2147483648 to 2147483647
|
joystick = 'R' -write only -Pin State: up/ down / -2147483648 to 2147483647
|
||||||
|
multiplexed LEDs = 'M' -read only -Pin State: 0,1
|
||||||
|
|
||||||
Keyboard Input:
|
Keyboard Input:
|
||||||
Matrix Keypad = 'M' -write only -Pin State: Number of Matrix Key.
|
Matrix Keypad = 'M' -write only -Pin State: 0,1
|
||||||
|
|
||||||
Communication Status = 'E' -read/Write -Pin State: 0:0
|
Communication Status = 'E' -read/Write -Pin State: 0:0
|
||||||
|
|
||||||
@ -64,20 +66,20 @@ Communication Status = 'E' -read/Write -Pin State: 0:0
|
|||||||
//###################################################IO's###################################################
|
//###################################################IO's###################################################
|
||||||
|
|
||||||
|
|
||||||
//#define INPUTS //Use Arduino IO's as Inputs. Define how many Inputs you want in total and then which Pins you want to be Inputs.
|
#define INPUTS //Use Arduino IO's as Inputs. Define how many Inputs you want in total and then which Pins you want to be Inputs.
|
||||||
#ifdef INPUTS
|
#ifdef INPUTS
|
||||||
const int Inputs = 2; //number of inputs using internal Pullup resistor. (short to ground to trigger)
|
const int Inputs = 2; //number of inputs using internal Pullup resistor. (short to ground to trigger)
|
||||||
int InPinmap[] = {8,9};
|
int InPinmap[] = {8,9};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Use Arduino IO's as Toggle Inputs, which means Inputs (Buttons for example) keep HIGH State after Release and Send LOW only after beeing Pressed again.
|
//Use Arduino IO's as Toggle Inputs, which means Inputs (Buttons for example) keep HIGH State after Release and Send LOW only after beeing Pressed again.
|
||||||
//#define SINPUTS //Define how many Toggle Inputs you want in total and then which Pins you want to be Toggle Inputs.
|
#define SINPUTS //Define how many Toggle Inputs you want in total and then which Pins you want to be Toggle Inputs.
|
||||||
#ifdef SINPUTS
|
#ifdef SINPUTS
|
||||||
const int sInputs = 1; //number of inputs using internal Pullup resistor. (short to ground to trigger)
|
const int sInputs = 1; //number of inputs using internal Pullup resistor. (short to ground to trigger)
|
||||||
int sInPinmap[] = {10};
|
int sInPinmap[] = {10};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#define OUTPUTS //Use Arduino IO's as Outputs. Define how many Outputs you want in total and then which Pins you want to be Outputs.
|
#define OUTPUTS //Use Arduino IO's as Outputs. Define how many Outputs you want in total and then which Pins you want to be Outputs.
|
||||||
#ifdef OUTPUTS
|
#ifdef OUTPUTS
|
||||||
const int Outputs = 2; //number of outputs
|
const int Outputs = 2; //number of outputs
|
||||||
int OutPinmap[] = {11,12};
|
int OutPinmap[] = {11,12};
|
||||||
@ -166,7 +168,7 @@ Encoder Encoder1(31,33); //A,B Pin
|
|||||||
const int QuadEncSig[] = {2,2}; //define wich kind of Signal you want to generate.
|
const int QuadEncSig[] = {2,2}; //define wich kind of Signal you want to generate.
|
||||||
//1= send up or down signal (typical use for selecting modes in hal)
|
//1= send up or down signal (typical use for selecting modes in hal)
|
||||||
//2= send position signal (typical use for MPG wheel)
|
//2= send position signal (typical use for MPG wheel)
|
||||||
const int QuadEncMp[] = {1,4}; //some Rotary encoders send multiple Electronical Impulses per mechanical pulse. How many Electrical impulses are send for each mechanical Latch?
|
const int QuadEncMp[] = {4,4}; //some Rotary encoders send multiple Electronical Impulses per mechanical pulse. How many Electrical impulses are send for each mechanical Latch?
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -261,23 +263,28 @@ Adafruit_NeoPixel strip(DLEDcount, DLEDPin, NEO_GRB + NEO_KHZ800);//Color sequen
|
|||||||
Matrix Keypads are supported. The input is NOT added as HAL Pin to LinuxCNC. Instead it is inserted to Linux as Keyboard direktly.
|
Matrix Keypads are supported. The input is NOT added as HAL Pin to LinuxCNC. Instead it is inserted to Linux as Keyboard direktly.
|
||||||
So you could attach a QWERT* Keyboard to the arduino and you will be able to write in Linux with it (only while LinuxCNC is running!)
|
So you could attach a QWERT* Keyboard to the arduino and you will be able to write in Linux with it (only while LinuxCNC is running!)
|
||||||
*/
|
*/
|
||||||
#define KEYPAD
|
//#define KEYPAD
|
||||||
#ifdef KEYPAD
|
#ifdef KEYPAD
|
||||||
const int numRows = 8; // Define the number of rows in the matrix
|
const int numRows = 4; // Define the number of rows in the matrix
|
||||||
const int numCols = 8; // Define the number of columns in the matrix
|
const int numCols = 4; // Define the number of columns in the matrix
|
||||||
|
|
||||||
// Define the pins connected to the rows and columns of the matrix
|
// Define the pins connected to the rows and columns of the matrix
|
||||||
const int rowPins[numRows] = {2,3,4,5,6,7,8,9}; //Iputs
|
const int rowPins[numRows] = {2, 3, 4, 5};
|
||||||
const int colPins[numCols] = {40,41,42,43,44,45,46,47}; //"Output 8-14"
|
const int colPins[numCols] = {6, 7, 8, 9};
|
||||||
int keys[numRows][numCols] = {0};
|
int keys[numRows][numCols] = {0};
|
||||||
int lastKey= -1;
|
int lastKey= -1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define MULTIPLEXLEDS // Special mode for Multiplexed LEDs.
|
//#define MULTIPLEXLEDS // Special mode for Multiplexed LEDs. This mode is experimental and implemented to support Matrix Keyboards with integrated Key LEDs.
|
||||||
// check out this thread on LinuxCNC Forum for context. https://forum.linuxcnc.org/show-your-stuff/49606-matrix-keyboard-controlling-linuxcnc
|
// check out this thread on LinuxCNC Forum for context. https://forum.linuxcnc.org/show-your-stuff/49606-matrix-keyboard-controlling-linuxcnc
|
||||||
// for Each LED an Output Pin is generated in LinuxCNC.
|
// for Each LED an Output Pin is generated in LinuxCNC.
|
||||||
|
|
||||||
|
//If your Keyboard shares pins with the LEDs, you have to check polarity.
|
||||||
|
//rowPins[numRows] = {} are Pullup Inputs
|
||||||
|
//colPins[numCols] = {} are GND Pins
|
||||||
|
//the matrix keyboard described in the thread shares GND Pins between LEDs and KEys, therefore LedGndPins[] and colPins[numCols] = {} use same Pins.
|
||||||
|
|
||||||
#ifdef MULTIPLEXLEDS
|
#ifdef MULTIPLEXLEDS
|
||||||
|
|
||||||
const int numVccPins = 8; // Number of rows in the matrix
|
const int numVccPins = 8; // Number of rows in the matrix
|
||||||
@ -494,8 +501,7 @@ void loop() {
|
|||||||
readJoySticks(); //read Encoders & send data
|
readJoySticks(); //read Encoders & send data
|
||||||
#endif
|
#endif
|
||||||
#ifdef MULTIPLEXLEDS
|
#ifdef MULTIPLEXLEDS
|
||||||
//for(int i=0;i<20;i++){
|
multiplexLeds();// cycle through the 2D LED Matrix}
|
||||||
multiplexLeds();//}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
README.md
16
README.md
@ -32,6 +32,9 @@ It also supports Digital LEDs such as WS2812 or PL9823. This way you can have as
|
|||||||
| binary encoded Selector Switch | 1 | 1 | 1 |
|
| binary encoded Selector Switch | 1 | 1 | 1 |
|
||||||
| Quadrature Encoder Input | 3 or more | 1 or more | 1 or more |
|
| Quadrature Encoder Input | 3 or more | 1 or more | 1 or more |
|
||||||
| Joystick Support (2Axis) | 8 | 6 | 3 |
|
| Joystick Support (2Axis) | 8 | 6 | 3 |
|
||||||
|
| Matrix Keyboard | 1 | 1 | 1 |
|
||||||
|
| Multiplexed LEDs | ~ 1000 | ~ 1000 | ~ 1000 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Compatiblity
|
# Compatiblity
|
||||||
@ -168,6 +171,19 @@ If it doesn't, something is not working and this program will not work either. P
|
|||||||
|
|
||||||
In the Settings a cheap 4x4 Keyboard is used such as https://theartoftinkering.com/recommends/matrix-keyboard/ (referral link)
|
In the Settings a cheap 4x4 Keyboard is used such as https://theartoftinkering.com/recommends/matrix-keyboard/ (referral link)
|
||||||
|
|
||||||
|
# Multiplexed LEDs
|
||||||
|
Special mode for Multiplexed LEDs. This mode is experimental and implemented to support Matrix Keyboards with integrated Key LEDs. Please provide feedback if u use this feature.
|
||||||
|
check out this thread on LinuxCNC Forum for context. https://forum.linuxcnc.org/show-your-stuff/49606-matrix-keyboard-controlling-linuxcnc
|
||||||
|
for Each LED an Output Pin is generated in LinuxCNC.
|
||||||
|
|
||||||
|
If your Keyboard shares pins with the LEDs, you have to check polarity. The Matrix Keyboard uses Pins as such:
|
||||||
|
|
||||||
|
rowPins[numRows] = {} are Pullup Inputs
|
||||||
|
colPins[numCols] = {} are GND Pins
|
||||||
|
|
||||||
|
the matrix keyboard described in the thread shares GND Pins between LEDs and KEYs, therefore LedGndPins[] and colPins[numCols] = {} use same Pins, LedVccPins[] are Outputs and drive the LEDs.
|
||||||
|
|
||||||
|
|
||||||
# Quadrature Encoders
|
# Quadrature Encoders
|
||||||
Quadrature Encoders require a Library to be installed.
|
Quadrature Encoders require a Library to be installed.
|
||||||
More Info about the used Library can be found here: https://www.pjrc.com/teensy/td_libs_Encoder.html
|
More Info about the used Library can be found here: https://www.pjrc.com/teensy/td_libs_Encoder.html
|
||||||
|
@ -132,12 +132,12 @@ DLEDcount = 0
|
|||||||
# You can specify special Charakters however, which will be handled as Inputs in LinuxCNC. Define those in the LCNC Array below.
|
# You can specify special Charakters however, which will be handled as Inputs in LinuxCNC. Define those in the LCNC Array below.
|
||||||
|
|
||||||
|
|
||||||
Keypad = 1 # Set to 1 to Activate
|
Keypad = 0 # Set to 1 to Activate
|
||||||
LinuxKeyboardInput = 1 #Activate direct Keyboard integration to Linux.
|
LinuxKeyboardInput = 0 # set to 1 to Activate direct Keyboard integration to Linux.
|
||||||
|
|
||||||
|
|
||||||
Columns = 3
|
Columns = 4
|
||||||
Rows = 3
|
Rows = 4
|
||||||
Chars = [ #here you must define as many characters as your Keypad has keys. calculate columns * rows . for example 4 *4 = 16. You can write it down like in the example for ease of readability.
|
Chars = [ #here you must define as many characters as your Keypad has keys. calculate columns * rows . for example 4 *4 = 16. You can write it down like in the example for ease of readability.
|
||||||
"1", "2", "3", "A",
|
"1", "2", "3", "A",
|
||||||
"4", "5", "6", "B",
|
"4", "5", "6", "B",
|
||||||
@ -167,14 +167,16 @@ Destination = [ #define, which Key should be inserted in LinuxCNC as Input or
|
|||||||
# 12, 13, 14, 15
|
# 12, 13, 14, 15
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# this is an experimental feature, meant to support MatrixKeyboards with integrated LEDs in each Key but should work with any other LED Matrix too.
|
||||||
MultiplexLED = 1 # Set to 1 to Activate
|
# It creates Output Halpins that can be connected to signals in LinuxCNC
|
||||||
|
MultiplexLED = 0 # Set to 1 to Activate
|
||||||
LedVccPins = 3
|
LedVccPins = 3
|
||||||
LedGndPins = 3
|
LedGndPins = 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Debug = 0 #only works when this script is run from halrun in Terminal. "halrun","loadusr arduino" now Debug info will be displayed.
|
Debug = 0 #only works when this script is run from halrun in Terminal. "halrun","loadusr arduino" now Debug info will be displayed.
|
||||||
|
|
||||||
######## End of Config! ########
|
######## End of Config! ########
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user