DIY een magisch licht vak (12 / 12 stap)

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);

Gerelateerde Artikelen

Licht vak fotostudio

Licht vak fotostudio

Iemand vertelde me dat 1/3 van succes is uitsluitend gebaseerd op hoe iets eruit ziet. Ik weet niet hoe nauwkeurig die is, of zelfs hoe een die zelfs zou meten, maar het is waar dat goed imago rekeningen ten minste gedeeltelijk tot effectieve marketi
Eenvoudig DIY gebogen multiplex licht Fixtues (NO stomen, lamineren of kerf bezuinigingen!)

Eenvoudig DIY gebogen multiplex licht Fixtues (NO stomen, lamineren of kerf bezuinigingen!)

Waarom zijn de lampen zo duur.. .voor de leven van mij ik kan niet begrijpen de exorbitante prijzen van sommige lichte tinten.Ik heb nog nooit een reden om te kopen een schaduw (oorzaak ik woonde in de plaatsen die al sommige hadden... en omdat ik ni
Wetenschappelijk Experiment voor kinderen: licht vak Magic

Wetenschappelijk Experiment voor kinderen: licht vak Magic

Maak een grappige lichte Toon met uw kinderen en leren ze over de kenmerken van licht op hetzelfde moment.Leerdoel: Kennismaken met kinderen de wetenschappelijke methode en lichtbreking.Leeftijd: Preschool - elementairedoor ware doelStap 1: motiveren
DIY LED Ring licht voor miniaturen/Macro fotografie voor minder dan USD$ 10

DIY LED Ring licht voor miniaturen/Macro fotografie voor minder dan USD$ 10

Ik heb altijd moeite met verlichting voor mijn miniatuur fotografie, en besloten om te gaan met het maken van mijn eigen DIY LED-ring licht na het zien van dit instructable:Het kostte me ongeveer een half uur zet het samen, zoals ik had alle items bi
Het avontuur van elektriciteit: een interactieve lichte diorama

Het avontuur van elektriciteit: een interactieve lichte diorama

waar elektriciteit vandaan? Wie de uitvinder van de gloeilamp? Hoe steden gebruiken deze technologie vandaag?Dit zijn slechts een paar vragen die we te spreken in deze interactieve diorama hopen, The Adventure of Electricity!Dit project werd ontworpe
Maken van een hangende licht uit een fles wijn

Maken van een hangende licht uit een fles wijn

ik heb een opknoping licht uit een oude lamp en een gebruikte fles wijn gemaakt.  Dit was mijn eerste keer via dus het is een beetje een ruwe project, zoals ik was het leren als ik ging.  Hopelijk zal het dienen als een goede springen van punt voor u
Crosman 1377 diy bout sonde lichter mod

Crosman 1377 diy bout sonde lichter mod

crosman 1377 diy bout sonde lichter mod uit te breiden van de sonde verder in, zodat de pellet een betere luchtstroom krijgt.ik gezien een video over het gebruik van pianosnaar uit te breiden van de bout sonde en ik toegevoegd een langere sonde aan d
SPF DIY: het woeien licht: A Solar Light vanaf nul in 10 minuten Flat

SPF DIY: het woeien licht: A Solar Light vanaf nul in 10 minuten Flat

wat doet waardoor een zonne-licht ten opzichte van "scratch" gemiddelde?  Check de video en lees dan verder!Schelvis uitvinding (het bedrijf waar ik werk met) en partner lab Mantis garnalen uitvinding werken aan iets genaamd de zonne-energie zak
Bouwen van een ontzagwekkende naaien vak

Bouwen van een ontzagwekkende naaien vak

heb ik besloten dat ik wilde mijn vriendin een nieuwe naaien doos bouwen voor haar verjaardag, en meteen wist dat ik wilde maken die vrijdragend, net als traditionele naaien vakken en vakken aan te pakken. Zoeken op het internet voor wiskundige help,
Hoe maak je een magische potlood zaak

Hoe maak je een magische potlood zaak

zullen we een magische potlood gevalStap 1: De TOOLS zijn moeten worden:EEN PENEEN CUTTEREEN KLEINE SCHAAREEN GROTE SCISSSOREEN LINIAALStap 2: De ingrediënten zijn dat wij nodig: Een dik papierEEN GAVE COVER PAPIEREEN PAPIER-LIJMStap 3: Stappen begin
Bouwen van een kat strooisel vak ventilator met Arduino

Bouwen van een kat strooisel vak ventilator met Arduino

een schuilplaats kat kattenbak is een geweldige manier om uw appartement eruit een verblijfsvergunning voor volwassenen in plaats van crazy cat dames. Een verborgen strooisel vak in een kast, onder een gootsteen, of ingebouwd in sommige andere meubel
Licht vak/droger

Licht vak/droger

ik samen te stellen dit kleine apparaat terug toen ik met papier mache werkte, en moest mijn werken uitdrogen volledig en sneller.   Later ontdekte ik dat het was ook goed voor andere dingen zoals vers-en-klare bladen van weefsel folie of het zand bl
Hergebruik van een schoenendoos zodat een koele lichte projector (slechts één afbeelding)

Hergebruik van een schoenendoos zodat een koele lichte projector (slechts één afbeelding)

werkelijke beeld is een stuk lichter.Stap 1: stap: 1 wat u nodig zult hebbenStap 2: stap: 2 zetten in licht en snijd vakStap 3: stap: 3 gesneden van de bovenkant van de doos en plaats cd
Hoe maak je een gepersonaliseerde weefsel vak

Hoe maak je een gepersonaliseerde weefsel vak

weefsel vak ambachten zijn meer en meer populair onder mensen geworden omdat mensen bezorgd over milieukwesties tegenwoordig zijn. Ze houd niet van de plastic verpakking van weefsels. Vandaag die we u hoe leren zullen te maken van een weefsel vak.Na