Paso 4: Software
#include < Adafruit_NeoPixel.h >#include < Wire.h >
#include "xadow.h"
#define ADDRACC 0x53
#define Register_ID 0
#define Register_2D 0x2D
#define Register_X0 0x32
#define Register_X1 0x33
#define Register_Y0 0x34
#define Register_Y1 0x35
#define Register_Z0 0x36
#define Register_Z1 0x37
#define PIN 15
az1 doble;
Parámetro 1 = número de píxeles en tira
Parámetro 2 = número de pin (la mayoría son válidos)
Parámetro 3 = píxeles tipo banderas, sumar como sea necesario:
NEO_KHZ800 800 KHz bitstream (mayoría NeoPixel productos w/WS2812 LED)
NEO_KHZ400 400 KHz (clásico 'v1' (no el v2) FLORA pixeles, conductores WS2811)
NEO_GRB píxeles están cableados para GRB bitstream (más productos de NeoPixel)
NEO_RGB píxeles están cableados para RGB bitstream (v1 FLORA pixeles, no v2)
Tira de Adafruit_NeoPixel = Adafruit_NeoPixel (14, PIN, NEO_GRB + NEO_KHZ800);
void setup() {}
Serial.Begin(115200);
mientras (!. Serie);
Xadow.init();
Wire.Begin();
adxl_init();
cout << "init accelermeter sobre!" << endl;
Strip.Begin();
Strip.Show(); Inicializar todos los píxeles en 'off'
}
void loop() {}
doble ax, ay, az2, diff, delaytime;
readAcc (& ax, ay & az2); obtener acc
diff = abs (az1 - az2);
AZ1 = az2;
cout << "az2 =" << az2 << '\t';
cout << "az1 =" << az1 << '\t';
cout << "diff =" << diff << endl;
Algunos procedimientos de ejemplo que muestra cómo mostrar a los píxeles:
colorWipe (de la tira. Color(255, 0, 0), 50); Rojo
colorWipe (de la tira. Color(0, 255, 0), 50); Verde
colorWipe (de la tira. Color(0, 0, 255), 50); Azul
Rainbow(10);
diff = diff * 100;
cout << "diff =" << diff << endl;
Delaytime = doble (mapa (diff, 1, 250, 1000, 1)) / 1000;
cout << "retardo =" << delaytime << endl;
rainbowCycle(delaytime);
}
void adxl_init()
{
Wire.beginTransmission(ADDRACC);
Wire.Write(Register_2D);
Wire.Write(8); medición permiten
Wire.endTransmission(); interrumpir la transmisión
}
unsigned char readAcc (doble * Xg, doble * Yg, doble * Zg)
{
int X_out;
int Y_out;
int Z_out;
Wire.beginTransmission(ADDRACC); transmitir al dispositivo
Wire.Write(Register_X0);
Wire.Write(Register_X1);
Wire.endTransmission();
Wire.requestFrom(ADDRACC,2);
if(Wire.Available() < = 2)
{
int X0 = Wire.read();
int X1 = Wire.read();
X1 = X1 << 8;
X_out = X 0 + X1;
}
//------------------Y
Wire.beginTransmission(ADDRACC); transmitir al dispositivo
Wire.Write(Register_Y0);
Wire.Write(Register_Y1);
Wire.endTransmission();
Wire.requestFrom(ADDRACC,2);
if(Wire.Available() < = 2)
{
int Y0 = Wire.read();
int Y1 = Wire.read();
Y1 = Y1 << 8;
Y_out = Y0 + Y1;
}
//------------------Z
Wire.beginTransmission(ADDRACC); transmitir al dispositivo
Wire.Write(Register_Z0);
Wire.Write(Register_Z1);
Wire.endTransmission();
Wire.requestFrom(ADDRACC,2);
if(Wire.Available() < = 2)
{
int Z0 = Wire.read();
int Z1 = Wire.read();
Z1 = Z1 << 8;
Z_out = Z0 + Z1;
}
* Xg = X_out/256.0;
* Yg = Y_out/256.0;
* Zg = Z_out/256.0;
}
Rellenar los puntos uno tras otro con un color
{} void colorWipe (uint32_t c, uint8_t espera)
para (uint16_t i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c);
Strip.Show();
Delay(Wait);
}
}
{} void arco iris (uint8_t esperar)
uint16_t i, j;
para (j = 0; j < 256; j ++) {}
para (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, Wheel((i+j) y 255));
}
Strip.Show();
Delay(Wait);
}
}
Ligeramente diferente, esto hace que el arco iris, igualmente distribuido a lo largo de
void rainbowCycle (uint8_t espera) {}
uint16_t i, j;
para (j = 0; j < 256; j += 1) {/ / 5 ciclos de todos los colores en la rueda
para (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, rueda (((i * 256/strip.numPixels()) + j) y 255));
Delay(Wait);
}
Strip.Show();
Delay(Wait);
}
}
Un valor de 0 a 255, para obtener un valor de color de entrada.
Los colores son una transición r - g - b - a r.
uint32_t rueda (bytes WheelPos) {}
if(WheelPos < 85) {}
volver la tira. Color (WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {}
WheelPos-= 85;
volver la tira. Color (255 - WheelPos * 3, 0, WheelPos * 3);
} else {}
WheelPos-= 170;
volver la tira. Color (0, WheelPos * 3, 255 - WheelPos * 3);
}
}