Neopixel Farbe zuweisen bei Tastendruck

So schaut es jetzt schon einmal aus :slight_smile:

#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.
  }
}