Stap 9: Programmeren uw kledingstuk | Versnellingsmeter volledige Code
Hieronder is de volledige code van de Arduino voor de versnellingsmeter:
/*
Training!
Hier is de steekproefcode gebruikt voor het maken van een draagbaar systeem dat gebruikmaakt van een versnellingsmeter te tellen van het aantal
stappen een gebruiker neemt. Het systeem wordt deze waarde opgeslagen in een variabele en uitgangen een visuele weergave, gebaseerd op de
nummer.
Hieronder is de code die wordt gebruikt. */
de volgende stelt de variabelen en de pinnen gebruikt in de code
de volgende beschrijven de pinnen gebruikt voor de lichte pads
int geleid = 5;
int led2 = 9;
int led3 = 11;
/ / int stappen = 7;
Deze constanten worden beschreven de pinnen voor de versnellingsmeter gebruikt:
Const int xpin = A5; / / x-as van de versnellingsmeter
Const int ypin = A2; / / y-as
Const int zpin = A3; / / z-as (alleen op 3 assen modellen)
aantal milliseconden tussen lezingen
int sampleDelay = 500;
/ / de wereldwijde "stappen" variabele beschrijft de variabele gebruikt om te bepalen van de output van verlichting:
int stappen = 0;
SoftwareSerial xbee(5,6);
de setup start"" alles:
VOID Setup {}
Initialiseer de seriële communicatie:
Serial.begin(9600);
/ / set de Xbee seriële als 9600
XBee.begin(9600);
/ / de digitale pinnen als uitgang en de versnellingsmeter-pinnen als ingangen initialiseren:
pinMode led (, uitvoer);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (xpin, INPUT);
pinMode (ypin, INPUT);
pinMode (zpin, INPUT);
}
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
versnellingsmeter code die wordt gebruikt om te bepalen van de variabele 'stappen'
de volgende flot variabelen worden gebruikt om te helpen bij het bepalen van de drempel voor "stappen":
float oldy = 0;
float drempel = 0;
//read de waarde van xbee
sensorValue = xbee.read();
//serial poort die wordt afgedrukt wat werd gelezen om te bevestigen dat het is ontvangen
Serial.Print("; Sensor-waarde = ");
Serial.write(senorValue);
/ / pin lezingen voor x, y, z:
int x = analogRead(xpin);
delay(1); //add een kleine vertraging tussen pin lezingen. Ik lees dat u dit doen moet maar nog niet het belang getest
int y = analogRead(ypin);
delay(1); //add een kleine vertraging tussen pin lezingen. Ik lees dat u dit doen moet maar nog niet het belang getest
int z = analogRead(zpin);
/ * zero_G is de lezing die we van de sensor verwachten wanneer het detecteert geen versnelling. Deze waarde van de sensor om een verschoven sensor lezen lezen aftrekken. */
zweven zero_G = 512;
/ * schaal is het aantal eenheden dat wij verwachten de sensorgegevens dat te wijzigen wanneer de versnelling langs een as met 1G wijzigt. Verdeel de verschoven sensor lezen door schaal om versnelling in Gs. * /
zweven schaal = 102,3;
voor dit project zijn we niet afdrukken van de waarden van de 'x', maar als u wilt dat ze afgedrukt:
Serial.Print (((float) x - zero_G) / schaal);
Serial.Print("\t");
voor dit project, we zijn afdrukken van de waarden van de 'y', dit zal helpen de drempel te bepalen:
drempel = oldy - ((float) y - zero_G) / schaal;
Serial.Print ("y =");
Serial.Print (((float) y - zero_G) / schaal);
Serial.Print("; drempel = ");
Serial.println(Threshold);
voor dit project zijn we niet afdrukken van de waarden van de 'z', maar als u wilt dat ze afgedrukt:
Serial.Print("\t");
Serial.Print (((float) z - zero_G) / schaal); Serial.Print("\n");
Als (drempel > 1.3)
stappen ++;
Serial.Print ("stappen =");
Serial.Print(Steps);
code die wordt gebruikt om te bepalen welke set lichten aan output:
Als (stappen < = 5) {}
digitalWrite (led, hoog); de eerste LED-display inschakelen (HIGH is het spanningsniveau)
/ / delay(1000); / / wait voor een tweede
digitalWrite (led, laag); de eerste LED-display uitschakelen door de spanning laag
delay(1000); wachten op een tweede
SoftwareSerial.println("A");
}
anders als ((steps > 5) & & (stappen < 10)) {}
digitalWrite (led2, hoge); Draai de tweede LED display op (HIGH is het spanningsniveau)
/ / delay(1000); / / wait voor een tweede
digitalWrite (led2, laag); de tweede LED-display uitschakelen door de spanning laag
delay(1000); wachten op een tweede
SoftwareSerial.println("B");
}
anders als (stappen > 10) {}
digitalWrite (led3, hoge); Draai de derde LED display op (HIGH is het spanningsniveau)
/ / delay(1000); / / wait voor een tweede
digitalWrite (led3, laag); het derde LED-display uitschakelen door de spanning laag
delay(1000); wachten op een tweede
SoftwareSerial.println("C");
}
else {}
keren 0;
}
/ / vertraging voordat de volgende lezing:
delay(sampleDelay);
}