Matrixkeyboard works in Arduino
This commit is contained in:
parent
117e4fd90b
commit
8346f020d9
@ -261,7 +261,7 @@ 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 = 4; // Define the number of rows in the matrix
|
const int numRows = 4; // Define the number of rows in the matrix
|
||||||
const int numCols = 4; // Define the number of columns in the matrix
|
const int numCols = 4; // Define the number of columns in the matrix
|
||||||
@ -281,16 +281,16 @@ int lastKey= -1;
|
|||||||
|
|
||||||
#ifdef MULTIPLEXLEDS
|
#ifdef MULTIPLEXLEDS
|
||||||
|
|
||||||
const int numVccPins = 8; // Number of rows in the matrix
|
const int numVccPins = 3; // Number of rows in the matrix
|
||||||
const int numGndPins = 7; // Number of columns in the matrix
|
const int numGndPins = 3; // Number of columns in the matrix
|
||||||
const int LedVccPins[] = {0,1,2,3,4,5,6,7}; // Arduino pins connected to rows
|
const int LedVccPins[] = {3,4,5}; // Arduino pins connected to rows
|
||||||
const int LedGndPins[] = {8,9,10,11,12,13,14}; // Arduino pins connected to columns
|
const int LedGndPins[] = {8,9,10}; // Arduino pins connected to columns
|
||||||
|
|
||||||
// Define the LED matrix
|
// Define the LED matrix
|
||||||
int ledStates[numVccPins*numGndPins] = {0};
|
int ledStates[numVccPins*numGndPins] = {0};
|
||||||
|
|
||||||
unsigned long previousMillis = 0;
|
unsigned long previousMillis = 0;
|
||||||
const unsigned long interval = 0; // Time (in milliseconds) per LED display
|
const unsigned long interval = 1; // Time (in milliseconds) per LED display
|
||||||
|
|
||||||
int currentLED = 0;
|
int currentLED = 0;
|
||||||
#endif
|
#endif
|
||||||
@ -340,7 +340,7 @@ const int debounceDelay = 50;
|
|||||||
byte KeyState = 0;
|
byte KeyState = 0;
|
||||||
#endif
|
#endif
|
||||||
#ifdef MULTIPLEXLEDS
|
#ifdef MULTIPLEXLEDS
|
||||||
byte KeyLedStates[numRows*numCols];
|
byte KeyLedStates[numVccPins*numGndPins];
|
||||||
#endif
|
#endif
|
||||||
#if QUADENCS == 1
|
#if QUADENCS == 1
|
||||||
const int QuadEncs = 1;
|
const int QuadEncs = 1;
|
||||||
@ -924,19 +924,18 @@ void multiplexLeds() {
|
|||||||
pinMode(LedGndPins[i], OUTPUT);
|
pinMode(LedGndPins[i], OUTPUT);
|
||||||
digitalWrite(LedGndPins[i], HIGH); // Set to HIGH to disable all GND Pins
|
digitalWrite(LedGndPins[i], HIGH); // Set to HIGH to disable all GND Pins
|
||||||
}
|
}
|
||||||
|
if(ledStates[currentLED]==1){
|
||||||
if(ledStates[currentLED]==1){
|
digitalWrite(LedVccPins[currentLED%numVccPins],ledStates[currentLED]);
|
||||||
digitalWrite(LedVccPins[currentLED%numVccPins],ledStates[currentLED]);
|
digitalWrite(LedGndPins[currentLED/numVccPins],LOW);
|
||||||
digitalWrite(LedGndPins[currentLED/numVccPins],LOW);
|
#ifdef DEBUG
|
||||||
Serial.print(currentLED/numVccPins); //row
|
Serial.print(currentLED%numVccPins); //row
|
||||||
Serial.print(":");
|
Serial.print("/ ");
|
||||||
Serial.println(currentLED%numVccPins); //column
|
Serial.print(currentLED/numVccPins); //column
|
||||||
//delay(1);
|
Serial.print(" wrt ");
|
||||||
}
|
Serial.print(ledStates[currentLED]); //row
|
||||||
else{ //ignore LEDs that are shut off...
|
Serial.println(" /");
|
||||||
currentLED++;
|
#endif
|
||||||
previousMillis = currentMillis;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (currentMillis - previousMillis >= interval) { // Check if it's time to update the LED matrix
|
if (currentMillis - previousMillis >= interval) { // Check if it's time to update the LED matrix
|
||||||
previousMillis = currentMillis; // Save the last update time
|
previousMillis = currentMillis; // Save the last update time
|
||||||
|
Loading…
Reference in New Issue
Block a user