Adafruit Circuit Playground Express
Adafruit has become the go-to company for user-friendly developer boards, and they have certainly outdone themselves with the $25 Circuit Playground Express (CPE). This board has 10 built-in neopixels, a buzzer (speaker), temperature and humidity sensor, light sensor, accelerometer, microphone, capacitive touch contacts, and multiple digital and analog pins for user interfacing. Moreover, the boards can be programmed in MakeCode, CircuitPython, or Arduino - which is a big difference from the original. This makes the board the perfect developer board for the beginner. There is no mandatory soldering or circuitry, and the numerous built-in inputs and outputs allow for plenty of creativity and expansion. This is unlike the Circuit Playground Classic version that was Arduino only.
There are several hardware details between the Classic and Express versions. The biggest difference between the two is that the Classic is based off of a ATmega32u4 chip, and the Express is based off of the ATSAMD21 chip. As far as integrated features, they are the same, but the way those features are accessed varies slightly.
This departure from the original chip does result in issues using the Circuit Playgound Library in the Arduino IDE. Unfortunately, the way the accelerometer and microphone are integrated into the board, they cannot be called by pins and rely on the Circuit Playground Library. Even more unfortunately is that the Circuit Playground Library does not call these data values correctly because the interrupt pin on the Express is pin 36, and the interrupt on the Classic is 27.
Accessing the Accelerometer
I have had success pulling information from the accelerometer on the Circuit Playground Express by changing the default interrupt pin to 36 in order to detect "taps" on the board.
CircuitPlayground.setAccelRange(LIS3DH_RANGE_8_G); CircuitPlayground.setAccelTap(1, TAP_THRESHOLD); attachInterrupt(digitalPinToInterrupt(36), tapCallback, FALLING);
This has allowed me to successfully upload code that lights the neopixels in rotating colors whenever the board is tapped. You can access that code here on my Github. I was also able to edit the Comm Badge example from the Circuit Playground library to work with the Circuit Playground Express - when you tap the board it plays one of two audio. You can find that code here on my Github.
Accessing the Microphone
Unfortunately, I have not yet figured out how to access the microphone. I submitted a report to Adafruit but they were not able to recreate my problem. I will work to recreate this issue and pinpoint a fix.
To be continued...