initial commit

This commit is contained in:
2026-09-25 10:48:51 +10:00
commit b90beea8ae
1020 changed files with 131665 additions and 0 deletions
@@ -0,0 +1,196 @@
#include <Adafruit_CircuitPlayground.h>
boolean Adafruit_CircuitPlayground::begin(uint8_t brightness) {
pinMode(CPLAY_REDLED, OUTPUT);
pinMode(CPLAY_SLIDESWITCHPIN, INPUT);
pinMode(CPLAY_LEFTBUTTON, INPUT);
pinMode(CPLAY_RIGHTBUTTON, INPUT);
pinMode(CPLAY_BUZZER, OUTPUT);
pinMode(CPLAY_CAPSENSE_SHARED, OUTPUT);
strip = Adafruit_CPlay_NeoPixel();
strip.updateType(NEO_GRB + NEO_KHZ800);
strip.updateLength(10);
strip.setPin(CPLAY_NEOPIXELPIN);
lis = Adafruit_CPlay_LIS3DH(CPLAY_LIS3DH_CS);
mic = Adafruit_CPlay_Mic();
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setBrightness(brightness);
cap[0] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 0);
cap[1] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 1);
cap[2] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 2);
cap[3] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 3);
cap[4] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 6);
cap[5] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 9);
cap[6] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 10);
cap[7] = CPlay_CapacitiveSensor(CPLAY_CAPSENSE_SHARED, 12);
if (! lis.begin(0x18)) { // change this to 0x19 for alternative i2c address
return false;
}
return true;
}
uint16_t Adafruit_CircuitPlayground::readCap(uint8_t p, uint8_t samples) {
switch (p) {
case 0:
return cap[0].capacitiveSensor(samples);
case 1:
return cap[1].capacitiveSensor(samples);
case 2:
return cap[2].capacitiveSensor(samples);
case 3:
return cap[3].capacitiveSensor(samples);
case 6:
return cap[4].capacitiveSensor(samples);
case 9:
return cap[5].capacitiveSensor(samples);
case 10:
return cap[6].capacitiveSensor(samples);
case 12:
return cap[7].capacitiveSensor(samples);
default:
return 0;
}
}
// just turn on/off the red #13 LED
void Adafruit_CircuitPlayground::redLED(boolean v) {
digitalWrite(CPLAY_REDLED, v);
}
// just read the slide switch
boolean Adafruit_CircuitPlayground::slideSwitch(void) {
return digitalRead(CPLAY_SLIDESWITCHPIN);
}
// just read the left button
boolean Adafruit_CircuitPlayground::leftButton(void) {
return digitalRead(CPLAY_LEFTBUTTON);
}
// just read the right button
boolean Adafruit_CircuitPlayground::rightButton(void) {
return digitalRead(CPLAY_RIGHTBUTTON);
}
void Adafruit_CircuitPlayground::playTone(uint16_t freq, uint16_t time, boolean wait) {
tone(CPLAY_BUZZER, freq, time);
if (wait) delay(time);
}
uint16_t Adafruit_CircuitPlayground::lightSensor(void) {
return analogRead(CPLAY_LIGHTSENSOR);
}
uint16_t Adafruit_CircuitPlayground::soundSensor(void) {
return analogRead(CPLAY_SOUNDSENSOR);
}
float Adafruit_CircuitPlayground::motionX(void) {
sensors_event_t event;
CircuitPlayground.lis.getEvent(&event);
return event.acceleration.x;
}
float Adafruit_CircuitPlayground::motionY(void) {
sensors_event_t event;
CircuitPlayground.lis.getEvent(&event);
return event.acceleration.y;
}
float Adafruit_CircuitPlayground::motionZ(void) {
sensors_event_t event;
CircuitPlayground.lis.getEvent(&event);
return event.acceleration.z;
}
float Adafruit_CircuitPlayground::temperature(void) {
// Thermistor test
float reading;
reading = analogRead(CPLAY_THERMISTORPIN);
//Serial.print("Thermistor reading: "); Serial.println(reading);
// convert the value to resistance
reading = ((1023.0 * SERIESRESISTOR) / reading);
reading -= SERIESRESISTOR;
//Serial.print("Thermistor resistance: "); Serial.println(reading);
float steinhart;
steinhart = reading / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // convert to C
return steinhart;
}
// Get the temperature in degrees Fahrenheit
float Adafruit_CircuitPlayground::temperatureF(void) {
float tempF = CircuitPlayground.temperature() * 1.8 + 32;
return tempF;
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Adafruit_CircuitPlayground::colorWheel(uint8_t WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if (WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
void Adafruit_CircuitPlayground::senseColor(uint8_t& red, uint8_t& green, uint8_t& blue) {
// Save the current pixel brightness so it can later be restored. Then bump
// the brightness to max to make sure the LED is as bright as possible for
// the color readings.
uint8_t old_brightness = strip.getBrightness();
strip.setBrightness(255);
// Set pixel 1 (next to the light sensor) to full red, green, blue
// color and grab a light sensor reading. Make sure to wait a bit
// after changing pixel colors to let the light sensor change
// resistance!
setPixelColor(1, 255, 0, 0); // Red
delay(LIGHT_SETTLE_MS);
uint16_t raw_red = lightSensor();
setPixelColor(1, 0, 255, 0); // Green
delay(LIGHT_SETTLE_MS);
uint16_t raw_green = lightSensor();
setPixelColor(1, 0, 0, 255); // Blue
delay(LIGHT_SETTLE_MS);
uint16_t raw_blue = lightSensor();
// Turn off the pixel and restore brightness, we're done with readings.
setPixelColor(1, 0);
strip.setBrightness(old_brightness);
// Now scale down each of the raw readings to be within
// 0 to 255. Remember each sensor reading is from the ADC
// which has 10 bits of resolution (0 to 1023), so dividing
// by 4 will change the range from 0-1023 to 0-255. Also
// use the min function to clamp the value to 255 at most (just
// to prevent overflow from 255.xx to 0).
red = min(255, raw_red/4);
green = min(255, raw_green/4);
blue = min(255, raw_blue/4);
}
// instantiate static
Adafruit_CircuitPlayground CircuitPlayground;