// SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries // SPDX-License-Identifier: MIT /* * This example shows how read the potentiometer on the I2C QT Slide Potentiometer * and make the NeoPixels change too! */ #include "Adafruit_seesaw.h" #include #define DEFAULT_I2C_ADDR 0x30 #define ANALOGIN 18 #define NEOPIXELOUT 14 Adafruit_seesaw seesaw; seesaw_NeoPixel pixels = seesaw_NeoPixel(4, NEOPIXELOUT, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); //while (!Serial) delay(10); // wait until serial port is opened Serial.println(F("Adafruit PID 5295 I2C QT Slide Potentiometer test!")); if (!seesaw.begin(DEFAULT_I2C_ADDR)) { Serial.println(F("seesaw not found!")); while(1) delay(10); } uint16_t pid; uint8_t year, mon, day; seesaw.getProdDatecode(&pid, &year, &mon, &day); Serial.print("seesaw found PID: "); Serial.print(pid); Serial.print(" datecode: "); Serial.print(2000+year); Serial.print("/"); Serial.print(mon); Serial.print("/"); Serial.println(day); if (pid != 5295) { Serial.println(F("Wrong seesaw PID")); while (1) delay(10); } if (!pixels.begin(DEFAULT_I2C_ADDR)){ Serial.println("seesaw pixels not found!"); while(1) delay(10); } Serial.println(F("seesaw started OK!")); pixels.setBrightness(255); // half bright pixels.show(); // Initialize all pixels to 'off' } void loop() { // read the potentiometer uint16_t slide_val = seesaw.analogRead(ANALOGIN); Serial.println(slide_val); for (uint8_t i=0; i< pixels.numPixels(); i++) { pixels.setPixelColor(i, Wheel(slide_val / 4)); } pixels.show(); delay(50); } // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return seesaw_NeoPixel::Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; return seesaw_NeoPixel::Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return seesaw_NeoPixel::Color(WheelPos * 3, 255 - WheelPos * 3, 0); }