Stap 12: Arduino Code gekoppeld
#include //use timer lib
#include
#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
int ADXAddress = 0xA7 >> 1;
variabele om de gegevens van de versnellingsmeter te houden
int X0, X1, Xg;
int Y0, Y1, Yg;
int Z1, Z0, Zg;
pinnen voor drie kleur
int ledx = 9;
int ledy = 5;
int ledz = 6;
verklaren van de 7 items
int counterX, counterY, counterZ, counterT, counterx, countery, counterz;
3 variabele te houden van de staat
int stateX, stateY, stateZ;
waarde van de ademhaling
int valx = 60;
int valy = 130;
int valz = 195;
snelheid van de ademhaling
int fadeAmount1 = 3;
int fadeAmount2 = 6;
int fadeAmount3 = 9;
VOID Setup {}
Serial.begin(9600); Gebruik de seriële poort te debuggen
eerste
Wire.begin();
delay(10);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_2D);
Wire.write(8);
Wire.endTransmission();
pinMode (ledx, OUTPUT);
pinMode (ledy, OUTPUT);
pinMode (ledz, OUTPUT);
counterY = 0;
counterX = 0;
counterT = 0;
de status van X, Y, Z in off staat instellen
stateX = 0;
stateY = 0;
stateZ = 0;
}
void loop {}
Alle uitschakelen
digitalWrite (ledx, 0);
digitalWrite (ledy, 0);
digitalWrite (ledz, 0);
Lees de info van de acc van X, Y, Z
Wire.beginTransmission(ADXAddress);
Wire.write(Register_X0);
Wire.write(Register_X1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
X0 = Wire.read();
X1 = Wire.read();
X1 = X1 << 8;
XG = X0 + X1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Register_Y0);
Wire.write(Register_Y1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
Y0 = Wire.read();
Y1 = Wire.read();
Y1 = Y1 << 8;
Yg = Y0 + Y1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Register_Z0);
Wire.write(Register_Z1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
Z0 = Wire.read();
Z1 = Wire.read();
Z1 = Z1 << 8;
ZG = Z0 + Z1;
}
beoordelen als acc waarde van X de drempel, komt de teller toevoegen
Als (Xg > = 500 || XG < =-500) {}
counterX ++;
Wanneer teller X begint, zal timer beginnen, en geeft duidelijke functie na 0.5s
Als (counterX == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als de counterX meer dan 16 voor de clearing-, open X trig staat (auto-changing kleur is)
Als (counterX > = 16) {//16 kan worden gewijzigd in andere nummer, de kleinere hoe gevoeliger
stateX =! stateX;
terwijl (stateX == 1) {}
Fading();
}
}
Als (Yg > = 500 || Yg < =-500) {}
controleren van Y
counterY ++;
Als (counterY == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als (counterY > = 16) {}
stateY =! stateY;
terwijl (stateY == 1) {}
following();
}
}
Als (Zg > = 500 || ZG < =-500) {}
controleren van Z
counterZ ++;
Als (counterZ == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als (counterZ > = 14) {}
stateZ =! stateZ;
terwijl (stateZ == 1) {}
White();
}
}
delay(6);
Serial.Print("X=");
Serial.Print(xg);
Serial.Print ("Y =");
Serial.Print(yg);
Serial.Print ("Z =");
Serial.Print(zg);
Serial.Print ("CX =");
Serial.Print(counterX);
Serial.Print ("CY =");
Serial.Print(counterY);
Serial.Print ("CZ =");
Serial.println(counterZ);
}
VOID Clear() {}
alle tellers wissen
counterX = 0;
counterx = 0;
counterY = 0;
countery = 0;
counterZ = 0;
counterz = 0;
}
ongeldig white() {}
witte kleur
digitalWrite (ledx, 1);
digitalWrite (ledy, 1);
digitalWrite (ledz, 1);
Lees de acc van Z
Wire.beginTransmission(ADXAddress);
Wire.write(Register_Z0);
Wire.write(Register_Z1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
Z0 = Wire.read();
Z1 = Wire.read();
Z1 = Z1 << 8;
ZG = Z0 + Z1;
}
Als (Zg > = 500 || ZG < =-500) {}
counterz ++;
Als (counterz == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als counterZ is meer dan 140, sluit u de trig staat van Z en ga terug naar de main-functie
Als (counterz > = 140) {}
stateZ =! stateZ;
terugkeer;
}
Serial.Print("Z=");
Serial.Print(zg);
Serial.Print ("CZ =");
Serial.println(counterz);
}
ongeldig following() {}
跟随姿态变色的程序
int xfollow, yfollow, zfollow;
Wire.beginTransmission(ADXAddress);
Wire.write(Register_X0);
Wire.write(Register_X1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
X0 = Wire.read();
X1 = Wire.read();
X1 = X1 << 8;
XG = X0 + X1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Register_Y0);
Wire.write(Register_Y1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
Y0 = Wire.read();
Y1 = Wire.read();
Y1 = Y1 << 8;
Yg = Y0 + Y1;
}
Wire.beginTransmission(ADXAddress);
Wire.write(Register_Z0);
Wire.write(Register_Z1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
Z0 = Wire.read();
Z1 = Wire.read();
Z1 = Z1 << 8;
ZG = Z0 + Z1;
}
de kleur stabiel te houden door sowieso de waarde van X, Z. Y wordt gebruikt om af te sluiten
XG = (Xg,-272, 272) beperken;
Yg = beperken (Yg,-272, 272);
ZG = beperken (Zg,-272, 272);
xfollow = kaart (Xg,-272, 5, 272 250);
analogWrite (ledx, xfollow);
yfollow = kaart (Yg,-290, 250, 290, 5);
analogWrite (ledy, yfollow);
zfollow = kaart (Zg,-272, 5, 272 250);
analogWrite (ledz, zfollow);
houden van de kleur gestage door sowieso de waarde
xfollow = beperken (xfollow, 1, 255);
yfollow = beperken (yfollow, 1, 255);
zfollow = beperken (zfollow, 1, 255);
Als (Yg > = 500 || Yg < =-500) {}
countery ++;
Als (countery == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als (countery > = 40) {}
stateY =! stateY;
terugkeer;
}
Serial.Print("Y=");
Serial.Print(yg);
Serial.Print ("CY =");
Serial.println(countery);
}
ongeldig fading() {}
auto-chaning kleur
analogWrite (ledx, valx);
analogWrite (ledy, valy);
analogWrite (ledz, valz);
valx = valx + fadeAmount1;
Valy valy = + fadeAmount2;
Valz = valz + fadeAmount3;
Als (valx < = 4 || valx > = 252) {}
fadeAmount1 = - fadeAmount1;
}
Als (valy < = 7 || valy > = 249) {}
fadeAmount2 = - fadeAmount2;
}
Als (valz < = 10 || valz > = 246) {}
fadeAmount3 = - fadeAmount3;
}
delay(90);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_X0);
Wire.write(Register_X1);
Wire.endTransmission();
Wire.requestFrom (ADXAddress, 2);
Als (Wire.available() < = 2);
{
X0 = Wire.read();
X1 = Wire.read();
X1 = X1 << 8;
XG = X0 + X1;
}
Als (Xg > = 500 || XG < =-500) {}
counterx ++;
Als (counterx == 1) {}
MsTimer2::set (500, Clear);
MsTimer2::start();
}
}
Als (counterx > = 2) {}
stateX =! stateX;
terugkeer;
}
Serial.Print("X=");
Serial.Print(xg);
Serial.Print ("CX =");
Serial.println(counterx);