So schaut es jetzt schon einmal aus ![]()
#include <SimpleKeypad.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
#define NUMPIXELS 20
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pause = 100; // 100 Millisekunden Pause bis zur Ansteuerung der nächsten LED.
const byte nb_rows = 4; // four rows
const byte nb_cols = 5; // four columns
char key_chars[nb_rows][nb_cols] = // The symbols of the keys
{
{'1', '2', '3', '4', '5'},
{'6', '7', '8', '9', 'A'},
{'B', 'C', 'D', 'E', 'F'},
{'G', 'H', 'I', 'J', 'K'}
};
byte rowPins[nb_rows] = {2, 3, 4, 5};
byte colPins[nb_cols] = {7, 8, 9, 10, 11};
SimpleKeypad kp1((char *)key_chars, rowPins, colPins, nb_rows, nb_cols); // New keypad called kp1
void setup()
{
Serial.begin(9600);
Serial.println("Press any key on the keypad and it will show up here :");
pixels.begin(); // Initialisierung der NeoPixel
}
void loop()
{
static char lastKey = "";
char key = kp1.getKey(); // The getKey function scans the keypad every 10 ms and returns a key only one time, when you start pressing it
if (key != lastKey) // If getKey returned any key
{
Serial.println(key); // it is printed on the serial monitor
lastKey = key;
switch (key)
{
case '1':
if (pixels.getPixelColor(0) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(0, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(0, pixels.Color(0, 0, 0));}
break;
case '6':
if (pixels.getPixelColor(9) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(9, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(9, pixels.Color(0, 0, 0));}
break;
case 'B':
if (pixels.getPixelColor(10) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(10, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(10, pixels.Color(0, 0, 0));}
break;
case 'G':
if (pixels.getPixelColor(19) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(19, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(19, pixels.Color(0, 0, 0));}
break;
case '2':
if (pixels.getPixelColor(1) != pixels.Color(255, 255, 0))
{ pixels.setPixelColor(1, pixels.Color(255, 255, 0)); }
else
{ pixels.setPixelColor(1, pixels.Color(0, 0, 0));}
break;
case '7':
if (pixels.getPixelColor(8) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(8, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(8, pixels.Color(0, 0, 0));}
break;
case 'C':
if (pixels.getPixelColor(11) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(11, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(11, pixels.Color(0, 0, 0));}
break;
case 'H':
if (pixels.getPixelColor(18) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(18, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(18, pixels.Color(0, 0, 0));}
break;
case '3':
if (pixels.getPixelColor(2) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(2, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(2, pixels.Color(0, 0, 0));}
break;
case '8':
if (pixels.getPixelColor(7) != pixels.Color(0, 255, 0))
{ pixels.setPixelColor(7, pixels.Color(0, 255, 0)); }
else
{ pixels.setPixelColor(7, pixels.Color(0, 0, 0));}
break;
case 'D':
if (pixels.getPixelColor(12) != pixels.Color(0, 255, 0))
{ pixels.setPixelColor(12, pixels.Color(0, 255, 0)); }
else
{ pixels.setPixelColor(12, pixels.Color(0, 0, 0));}
break;
case 'I':
if (pixels.getPixelColor(17) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(17, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(17, pixels.Color(0, 0, 0));}
break;
case '4':
if (pixels.getPixelColor(3) != pixels.Color(0, 0, 0))
{ pixels.setPixelColor(3, pixels.Color(0, 0, 0)); }
else
{ pixels.setPixelColor(3, pixels.Color(0, 0, 0));}
break;
case '9':
if (pixels.getPixelColor(6) != pixels.Color(0, 0, 0))
{ pixels.setPixelColor(6, pixels.Color(0, 0, 0)); }
else
{ pixels.setPixelColor(6, pixels.Color(0, 0, 0));}
break;
case 'E':
if (pixels.getPixelColor(13) != pixels.Color(0, 0, 0))
{ pixels.setPixelColor(13, pixels.Color(0, 0, 0)); }
else
{ pixels.setPixelColor(13, pixels.Color(0, 0, 0));}
break;
case 'J':
if (pixels.getPixelColor(16) != pixels.Color(0, 0, 0))
{ pixels.setPixelColor(16, pixels.Color(0, 0, 0)); }
else
{ pixels.setPixelColor(16, pixels.Color(0, 0, 0));}
break;
case '5':
if (pixels.getPixelColor(4) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(4, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(4, pixels.Color(0, 0, 0));}
break;
case 'A':
if (pixels.getPixelColor(5) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(5, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(5, pixels.Color(0, 0, 0));}
break;
case 'F':
if (pixels.getPixelColor(14) != pixels.Color(255, 255, 255))
{ pixels.setPixelColor(14, pixels.Color(255, 255, 255)); }
else
{ pixels.setPixelColor(14, pixels.Color(0, 0, 0));}
break;
case 'K':
if (pixels.getPixelColor(15) != pixels.Color(0, 255, 255))
{ pixels.setPixelColor(15, pixels.Color(0, 255, 255)); }
else
{ pixels.setPixelColor(15, pixels.Color(0, 0, 0));}
break;
}
pixels.show(); // DurchfĂĽhren der Pixel-Ansteuerung
delay (pause); // Pause, in dieser Zeit wird nichts verändert.
}
}