Stap 10: Programmeren uw kledingstuk | LED-Display volledige Code
/*
Training! Hier is de steekproefcode gebruikt voor het maken van een draagbaar systeem dat gebruikmaakt van een versnellingsmeter te tellen van het aantal stappen die een gebruiker neemt. Het systeem wordt deze waarde opgeslagen in een variabele en een visuele weergave, gebaseerd op het aantal uitgangen. Hieronder is de code die wordt gebruikt. */
#include < SoftwareSerial.h >
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 = A3; / / x-as van de versnellingsmeter
Const int ypin = A5; y-as
Const int zpin = A2; / / 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 de lichten:
int stappen = 0;
SoftwareSerial xbee(5,6);
de setup start"" alles:
VOID Setup {}
Initialiseer de seriële communicatie:
Serial.begin(9600);
Stel de Xbee seriële als 9600
XBee.begin(9600);
Initialiseer de digitale pinnen als uitgang:
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 {}
int sensorValue = 0;
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;
int counter = 0;
luiden naar de waarde van xbee
sensorValue = xbee.read();
seriële poort waarmee wordt afgedrukt is wat gelezen om te bevestigen dat het is ontvangen
Serial.Print("; Sensor-waarde = ");
Serial.write(sensorValue);
PIN lezingen voor x, y, z:
int x = analogRead(xpin); delay(1);
Voeg 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);
Voeg 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;
Waarden afdrukken
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); / / wait voor een tweede
SoftwareSerial.println("A");
}
anders als ((steps > 5) & & (stappen < 10)) {}
digitalWrite (led2, hoge); / / de tweede LED-display inschakelen (HIGH is het spanningsniveau)
/ / delay(1000); / / wait voor een tweede
/ / digitalWrite (led2, laag); / / de tweede LED-display uitschakelen door de spanning laag
/ / delay(1000); / / wait voor een tweede
SoftwareSerial.println("B");
}
anders als (stappen > 10) {}
digitalWrite (led3, hoge); / / de derde LED-display inschakelen (HIGH is het spanningsniveau)
/ / delay(1000); / / wait voor een tweede
//digitalWrite (led3, laag); / / het derde LED-display uitschakelen door de spanning laag
/ / delay(1000); / / wait voor een tweede
SoftwareSerial.println("C");
}
else {}
keren 0; }
vertraging voordat de volgende lezing:
delay(sampleDelay);
}