#include #include #ifdef __AVR__ #include // Required for 16 MHz Adafruit Trinket #endif #define PIN 6 #define NUMPIXELS 18 Adafruit_NeoPixel Pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int LED_Ausgabe[8][4] = //Belegung Feld - LED { {0, 1, 6, 7}, //A3 {1, 2, 7, 8}, //A4 {2, 3, 8, 9}, //A5 {4, 5, 12, 13}, //B1 {5, 6, 13, 14}, //B2 {6, 7, 14, 15}, //B3 {7, 8, 15, 16}, //B4 {8, 9, 16, 17} //B5; }; // Init ShiftIn instance with a single chip ShiftIn<1> shift; int x = 0; int b = 0; int j = 0; int i = 0; int lang = 0; char Belegung[8]; void setup() { Serial.begin(9600); Pixels.begin(); Pixels.show(); // declare pins: pLoadPin, clockEnablePin, dataPin, clockPin shift.begin(8, 9, 11, 12); } void displayValues() { lang = shift.getDataWidth(); // print out all 8 buttons Serial.print("Schalterstatus:"); for (i = 0; i < shift.getDataWidth(); i++) { Serial.print( shift.state(i) ); // get state of button i Belegung[i] = shift.state(i); } Serial.println(); } void loop() { if (shift.update()) { // Lese Schieberegister aus displayValues(); for (b = 0; b < 8; b++) { } Serial.println(); Serial.print("Anzahl der Eingänge:"); Serial.print(lang, DEC); // drucke Länge der Belegung Serial.println(); for (x = 0; x < lang; x++) { switch (Belegung[x]) { case 0: Serial.print("Aus |"); // drucke Status LED_set(x, 0, 0, 0); delay(50); break; case 1: Serial.print("An |"); // drucke Status LED_set(x, 0, 20, 0); delay(50); break; } } Pixels.show(); Serial.println(); } } void LED_set(uint8_t i, uint8_t r, uint8_t g, uint8_t b) { int j; for (j = 0; j < 4; j++) { Pixels.setPixelColor(LED_Ausgabe[i][j], r, g, b); } }