adafruit / Adafruit_Seesaw

Arduino library driver for seesaw multi-use chip
93 stars 64 forks source link

Adafruit I2C Stemma QT Rotary Encoder - no encoder or neopixel output #77

Closed el-samiyel closed 2 years ago

el-samiyel commented 2 years ago

Code uploaded as per: https://learn.adafruit.com/adafruit-i2c-qt-rotary-encoder/arduino `/*

define SS_SWITCH 24

define SS_NEOPIX 6

define SEESAW_ADDR 0x36

define Serial SerialUSB

Adafruit_seesaw ss; seesaw_NeoPixel sspixel = seesaw_NeoPixel(1, SS_NEOPIX, NEO_GRB + NEO_KHZ800);

int32_t encoder_position;

void setup() { Serial.begin(115200); while (!Serial) delay(10);

Serial.println("Looking for seesaw!");

if (! ss.begin(SEESAW_ADDR) || ! sspixel.begin(SEESAW_ADDR)) { Serial.println("Couldn't find seesaw on default address"); while(1) delay(10); } Serial.println("seesaw started");

uint32_t version = ((ss.getVersion() >> 16) & 0xFFFF); if (version != 4991){ Serial.print("Wrong firmware loaded? "); Serial.println(version); while(1) delay(10); } Serial.println("Found Product 4991");

// set not so bright! sspixel.setBrightness(20); sspixel.show();

// use a pin for the built in encoder switch ss.pinMode(SS_SWITCH, INPUT_PULLUP);

// get starting position encoder_position = ss.getEncoderPosition();

Serial.println("Turning on interrupts"); delay(10); ss.setGPIOInterrupts((uint32_t)1 << SS_SWITCH, 1); ss.enableEncoderInterrupt(); }

void loop() { if (! ss.digitalRead(SS_SWITCH)) { Serial.println("Button pressed!"); }

int32_t new_position = ss.getEncoderPosition(); // did we move arounde? if (encoder_position != new_position) { Serial.println(new_position); // display new position

// change the neopixel color
sspixel.setPixelColor(0, Wheel(new_position & 0xFF));
sspixel.show();
encoder_position = new_position;      // and save for next round

}

// don't overwhelm serial port delay(10); }

uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if (WheelPos < 85) { return sspixel.Color(255 - WheelPos 3, 0, WheelPos 3); } if (WheelPos < 170) { WheelPos -= 85; return sspixel.Color(0, WheelPos 3, 255 - WheelPos 3); } WheelPos -= 170; return sspixel.Color(WheelPos 3, 255 - WheelPos 3, 0); }`

I get no neopixel or rotary encoder response. Only button presses. Can you please advise as I have brought three of these modules..

Thanks

el-samiyel commented 2 years ago

Found the issue...old seeasaw lib installed somehow.