initial commit
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user