Étape 4: logiciels
#include < Adafruit_NeoPixel.h >#include < Wire.h >
#include « xadow.h »
#define ADDRACC 0 x 53
#define no_registre 0
#define Register_2D 0x2D
#define Register_X0 0 x 32
#define Register_X1 0 x 33
#define Register_Y0 0 x 34
#define Register_Y1 0 x 35
#define Register_Z0 0 x 36
#define Register_Z1 0 x 37
#define PIN 15
az1 double ;
Paramètre 1 = nombre de pixels dans la bande de
Paramètre 2 = Numéro d’identification (la plupart sont valide)
Paramètre 3 = type de pixel drapeaux, additionner au besoin :
NEO_KHZ800 800 KHz bitstream (la plupart NeoPixel produits w/WS2812 LEDs)
NEO_KHZ400 400 KHz (classique « v1 » (pas v2) pixels de flore, WS2811 pilotes)
NEO_GRB Pixels sont câblés pour GRB bitstream (la plupart des produits NeoPixel)
NEO_RGB Pixels sont câblés pour RGB bitstream (v1 pixels de flore, pas v2)
Bande de Adafruit_NeoPixel = Adafruit_NeoPixel (14, PIN, NEO_GRB + NEO_KHZ800) ;
void setup() {}
Serial.Begin(115200) ;
while (!. Série) ;
Xadow.init() ;
Wire.Begin() ;
adxl_init() ;
cout << « init accelermeter sur! » << endl ;
Strip.Begin() ;
Strip.Show() ; Initialiser tous les pixels sur « arrêt »
}
void loop() {}
double ax, ay, az2, diff, delaytime ;
readAcc (ax, ay & az2) ; obtenir du CAC
diff = abs (az1 - az2) ;
Az1 = az2 ;
cout << "az2 =" << az2 << « \t » ;
cout << "az1 =" << az1 << « \t » ;
cout << "diff =" << diff << endl ;
Certaines procédures d’exemple montrant comment afficher les pixels :
colorWipe (bande. Color(255, 0, 0), 50) ; Rouge
colorWipe (bande. Color(0, 255, 0), 50) ; Vert
colorWipe (bande. Color(0, 0, 255), 50) ; Bleu
Rainbow(10) ;
diff = diff * 100 ;
cout << "diff =" << diff << endl ;
DelayTime = double (carte (diff, 1, 250, 1000, 1)) / 1000 ;
cout << "retard =" << delaytime << endl ;
rainbowCycle(delaytime) ;
}
Sub adxl_init()
{
Wire.beginTransmission(ADDRACC) ;
Wire.Write(Register_2D) ;
Wire.Write(8) ; activation de la mesure
Wire.endTransmission() ; arrêter la transmission
}
unsigned char readAcc (double * Xg, double * Yg, double * Zg)
{
int X_out ;
int Y_out ;
int Z_out ;
Wire.beginTransmission(ADDRACC) ; transmettre à un périphérique
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) ; transmettre à un périphérique
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) ; transmettre à un périphérique
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 ;
}
Remplir les points un après l’autre avec une couleur
void colorWipe (uint32_t c, uint8_t attente) {}
pour (uint16_t i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c) ;
Strip.Show() ;
Delay(Wait) ;
}
}
Sub arc-en-ciel (attente uint8_t) {}
uint16_t i, j ;
pour (j = 0; j < 256; j ++) {}
pour (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, Wheel((i+j) & 255)) ;
}
Strip.Show() ;
Delay(Wait) ;
}
}
Légèrement différent, ce qui rend également réparti tout au long de l’arc en ciel
void rainbowCycle (attente uint8_t) {}
uint16_t i, j ;
pour (j = 0; j < 256; j += 1) {/ / 5 cycles de toutes les couleurs sur la roue
pour (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (je, roue (((i * 256/strip.numPixels()) + j) & 255)) ;
Delay(Wait) ;
}
Strip.Show() ;
Delay(Wait) ;
}
}
Entrer une valeur de 0 à 255 pour obtenir une valeur de couleur.
Les couleurs sont un transition r - g - b - retour à r.
uint32_t roue (WheelPos octets) {}
if(WheelPos < 85) {}
retourner la bande. Couleur (WheelPos * 3, 255 - WheelPos * 3, 0) ;
} else if(WheelPos < 170) {}
WheelPos-= 85 ;
retourner la bande. Couleur (255 - WheelPos * 3, 0, WheelPos * 3) ;
} else {}
WheelPos-= 170 ;
retourner la bande. Couleur (0, WheelPos * 3, 255 - WheelPos * 3) ;
}
}