// Multiple LCD setup test code - version 3 w. SPI - all 121 displays // Pin assignment: // 2: D4 // 3: D5 // 4: D6 // 5: D7 // 6: RS // 7: EN // 8: RGB_Neopixels // 9: 595_Latch //11: 595_Data //13: 595_Clock #include #include #include // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(121, 8, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void shiftByte( uint8_t x){ //1us function PORTB &= B11111101;//Data clock low SPI.beginTransaction(SPISettings(20000000, MSBFIRST, SPI_MODE0));//Start SPI transaction SPI.transfer(x);//Transfer data SPI.endTransaction();//End SPI transaction PORTB |= B00000010;//Data clock high, latch data } void setup() { pinMode(9, OUTPUT); SPI.begin(); strip.begin(); strip.show(); // Initialize all pixels to 'off' for (int i=1; i<=22; i++) { shiftByte(255); Serial.print(i); } // init LCD's lcd.begin(16, 2); lcd.clear(); shiftByte(255); shiftByte(255); // First LCD lcd.setCursor(0, 0); lcd.print(" Labitat"); lcd.setCursor(0, 1); lcd.print(" is awesome!"); } void loop() { // Some example procedures showing how to display to the pixels: //colorWipe(strip.Color(255, 0, 0), 50); // Red //colorWipe(strip.Color(0, 255, 0), 50); // Green //colorWipe(strip.Color(0, 0, 255), 50); // Blue // Send a theater pixel chase in... //theaterChase(strip.Color(255, 255, 255), 10); // White //theaterChase(strip.Color(255, 0, 0), 50); // Red //theaterChase(strip.Color(0, 0, 255), 50); // Blue rainbow(5); rainbowCycle(1); theaterChaseRainbow(50); } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i