For new guide
https://learn.adafruit.com/superhero-power-gauntlet/overview
This commit is contained in:
parent
b3b9568694
commit
406ec4aabb
1 changed files with 223 additions and 0 deletions
223
Feather_Power_Gauntlet/Gauntlet/Gauntlet.ino
Normal file
223
Feather_Power_Gauntlet/Gauntlet/Gauntlet.ino
Normal file
|
|
@ -0,0 +1,223 @@
|
|||
#include <Wire.h>
|
||||
#include <Adafruit_Sensor.h>
|
||||
#include <Adafruit_LSM303_U.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
#define LEDpin 6
|
||||
|
||||
#define SFX_start 13
|
||||
#define SFX_PowerUp 12
|
||||
#define SFX_Fire 11
|
||||
#define SFX_PowerDown 10
|
||||
|
||||
#define SFX_Playing 9
|
||||
|
||||
#define button 5
|
||||
|
||||
Adafruit_NeoPixel strip = Adafruit_NeoPixel(19, LEDpin, NEO_GRB + NEO_KHZ800);
|
||||
|
||||
|
||||
/* Assign a unique ID to this sensor at the same time */
|
||||
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
|
||||
|
||||
|
||||
// #####Light Flicker
|
||||
int alpha; // Current value of the pixels
|
||||
int dir = 1; // Direction of the pixels... 1 = getting brighter, 0 = getting dimmer
|
||||
int flip; // Randomly flip the direction every once in a while
|
||||
int minAlpha = 50; // Min value of brightness
|
||||
int maxAlpha = 75; // Max value of brightness
|
||||
int alphaDelta = 1; // Delta of brightness between times through the loop
|
||||
int Coffset;
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
#ifndef ESP8266
|
||||
// while (!Serial); // will pause Zero, Leonardo, etc until serial console opens
|
||||
#endif
|
||||
Serial.begin(9600);
|
||||
Serial.println("Accelerometer Test"); Serial.println("");
|
||||
|
||||
/* Initialise the sensor */
|
||||
if(!accel.begin())
|
||||
{
|
||||
/* There was a problem detecting the ADXL345 ... check your connections */
|
||||
Serial.println("Ooops, no LSM303 detected ... Check your wiring!");
|
||||
while(1);
|
||||
}
|
||||
|
||||
/* Display some basic information on this sensor */
|
||||
displaySensorDetails();
|
||||
|
||||
pinMode(SFX_Playing, INPUT_PULLUP);
|
||||
pinMode(button, INPUT_PULLUP);
|
||||
|
||||
pinMode(SFX_start, OUTPUT);
|
||||
pinMode(SFX_PowerUp, OUTPUT);
|
||||
pinMode(SFX_Fire, OUTPUT);
|
||||
pinMode(SFX_PowerDown, OUTPUT);
|
||||
delay(500);
|
||||
digitalWrite(SFX_start, HIGH);
|
||||
digitalWrite(SFX_PowerUp, HIGH);
|
||||
digitalWrite(SFX_Fire, HIGH);
|
||||
digitalWrite(SFX_PowerDown, HIGH);
|
||||
|
||||
strip.begin();
|
||||
strip.show(); // Initialize all pixels to 'off'
|
||||
|
||||
strip.setBrightness(255);
|
||||
}
|
||||
|
||||
int ReadX;
|
||||
int PowerUp = 0;
|
||||
int DotVal = 10;
|
||||
|
||||
int ButtonPress = 1;
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
while (!digitalRead(button)){
|
||||
if(ButtonPress){
|
||||
ButtonPress = 0;
|
||||
digitalWrite(SFX_PowerDown, LOW);
|
||||
while(digitalRead(SFX_Playing));
|
||||
digitalWrite(SFX_PowerDown, HIGH);
|
||||
while(!digitalRead(SFX_Playing));
|
||||
}else{
|
||||
ButtonPress = 1;
|
||||
digitalWrite(SFX_start, LOW);
|
||||
while(digitalRead(SFX_Playing));
|
||||
digitalWrite(SFX_start, HIGH);
|
||||
while(!digitalRead(SFX_Playing));
|
||||
}
|
||||
}
|
||||
flip = random(32);
|
||||
if(flip > 20) {
|
||||
dir = 1 - dir;
|
||||
}
|
||||
// Some example procedures showing how to display to the pixels:
|
||||
if (dir == 1) {
|
||||
alpha += alphaDelta;
|
||||
}
|
||||
if (dir == 0) {
|
||||
alpha -= alphaDelta;
|
||||
}
|
||||
if (alpha < minAlpha) {
|
||||
alpha = minAlpha;
|
||||
dir = 1;
|
||||
}
|
||||
if (alpha > maxAlpha) {
|
||||
alpha = maxAlpha;
|
||||
dir = 0;
|
||||
}
|
||||
//DotVal = alpha/8
|
||||
|
||||
Coffset = random(10);
|
||||
colorWipe(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
colorWipeDot(strip.Color(10, 10, alpha/2));
|
||||
|
||||
sensors_event_t event;
|
||||
accel.getEvent(&event);
|
||||
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");
|
||||
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");
|
||||
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" ");Serial.println("m/s^2 ");
|
||||
ReadX=event.acceleration.y;
|
||||
if(ReadX < 10.5 && ReadX > 8 && ButtonPress){
|
||||
PowerUp = 1;
|
||||
digitalWrite(SFX_PowerUp, LOW);
|
||||
while(digitalRead(SFX_Playing));
|
||||
digitalWrite(SFX_PowerUp, HIGH);
|
||||
while(!digitalRead(SFX_Playing)){
|
||||
alpha = alpha+1;
|
||||
if(alpha<254){
|
||||
colorWipe(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
colorWipeDot(strip.Color(alpha-Coffset/2, alpha-Coffset/2, alpha/2));
|
||||
}
|
||||
|
||||
}
|
||||
sensors_event_t event;
|
||||
accel.getEvent(&event);
|
||||
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");
|
||||
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");
|
||||
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" ");Serial.println("m/s^2 ");
|
||||
ReadX=event.acceleration.y;
|
||||
delay(50);
|
||||
if(ReadX < 10.5 && ReadX > 8 ){
|
||||
digitalWrite(SFX_Fire, LOW);
|
||||
while(digitalRead(SFX_Playing)){
|
||||
alpha = alpha-8;
|
||||
if(alpha>10){
|
||||
colorWipe(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
colorWipeDot(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
}
|
||||
}
|
||||
digitalWrite(SFX_Fire, HIGH);
|
||||
alpha = 255;
|
||||
while(!digitalRead(SFX_Playing)){
|
||||
alpha = alpha - 2;
|
||||
if(alpha>10){
|
||||
colorWipe(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
colorWipeDot(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
}
|
||||
}
|
||||
colorWipeDot(strip.Color(alpha-Coffset/2, alpha-Coffset/2, alpha/2));
|
||||
delay(1000);
|
||||
}else{
|
||||
digitalWrite(SFX_PowerDown, LOW);
|
||||
while(digitalRead(SFX_Playing));
|
||||
digitalWrite(SFX_PowerDown, HIGH);
|
||||
while(!digitalRead(SFX_Playing)){
|
||||
alpha = alpha - 1;
|
||||
DotVal = alpha - 8;
|
||||
if(alpha>10){
|
||||
colorWipe(strip.Color(alpha-Coffset, alpha-Coffset, alpha));
|
||||
colorWipeDot(strip.Color(DotVal-Coffset, DotVal-Coffset, DotVal));
|
||||
}
|
||||
}
|
||||
|
||||
delay(300);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
//digitalWrite(SFX_PowerUp, HIGH);
|
||||
|
||||
|
||||
//delay(50);
|
||||
}
|
||||
|
||||
|
||||
// Fill the dots one after the other with a color
|
||||
void colorWipe(uint32_t c) {
|
||||
for(uint16_t i=0; i<16; i++) {
|
||||
strip.setPixelColor(i, c);
|
||||
strip.show();
|
||||
}
|
||||
}
|
||||
|
||||
// Fill the dots one after the other with a color
|
||||
void colorWipeDot(uint32_t c) {
|
||||
for(uint16_t i=16; i<19; i++) {
|
||||
strip.setPixelColor(i, c);
|
||||
strip.show();
|
||||
}
|
||||
}
|
||||
|
||||
void displaySensorDetails()
|
||||
{
|
||||
sensor_t sensor;
|
||||
accel.getSensor(&sensor);
|
||||
Serial.println("------------------------------------");
|
||||
Serial.print ("Sensor: "); Serial.println(sensor.name);
|
||||
Serial.print ("Driver Ver: "); Serial.println(sensor.version);
|
||||
Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id);
|
||||
Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" m/s^2");
|
||||
Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" m/s^2");
|
||||
Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" m/s^2");
|
||||
Serial.println("------------------------------------");
|
||||
Serial.println("");
|
||||
delay(500);
|
||||
}
|
||||
Loading…
Reference in a new issue