Arduino stegräknare (4 / 6 steg)
Steg 4: Stegräknare teori och Software Design
Teorin av drift:
Spänningen från Stegräknaren ska den Arduino Analog 3 är ca 1.2VDC. När användaren stegen, spänningen sjunker till nära noll. Arduino mjukvaran kommer att upptäcka detta och räkna detta som ett steg.
Software Design:
Programvaran har att läsa data från temperatur och luftfuktighet sonden och Stegräknaren, sedan logga in det till SD-kortet. Programvaran kommer att avgöra hur ofta du vill logga data till SD-kortet. Denna programvara är inställd för 10 andra prover. Detta kan ändras genom att ändra värdet för LOG_INTERVAL (10.000 medel 10 000 millisekunder som är 10 sekunder).
Temperatur och luftfuktighet kan göras en gång för varje loggpost.
Problem: Stegräknaren har följas ganska kontinuerligt ett steg kan uppstå när som helst. (Detta kallas en asynkron händelse).
Lösning: Jag var tvungen att skriva om prov program så att Stegräknaren samplas ständigt och data samlas tills LOG_INTERVAL (10 sekunder) nås, sedan den temperatur och luftfuktighet sensorer provtas och alla data plus tiden skrivs till SD-kortet.
Här är den betydande delen av programvara slingan.
StartTime=millis();
}
void loop(void)
{
MTS stegräknare läser om 1.2V öppen = 245 räknas
om (analogRead(PedoPin) < 50) / / om .245V
{
StepCnt + = 1;
TotalCnt + = 1;
Delay(300); Fördröja 3 SEK
}
om ((millis()-StartTime)>long(LOG_INTERVAL))
{
Kod som skriver till loggfilen
StepCnt = 0;
StartTime = millis();
}
Teori: Innan slingan startas, läser StartTime i millis() som är antalet millisekunder sedan Arduino var påslagen eller återställa.
Stegräknaren är läsa, om det är nära till noll, då StepCnt och TotalCnt ökas.
Detta upprepas tills millis() är 10 sekunder eller större än StartTime.
När 10 sekunder har gått, realtid, temperatur, luftfuktighet, skrivs StepCnt och TotalCnt till loggfilen.
StepCnt sätts till noll (så att endast räknas mellan prover in)
StartTime är inställd på millis() så nästa 10 andra intervall kan mätas.
Hela processen upprepas.
Filen som skapas på SD-kortet är märkt loggerxx.csv där xx är ett nummer från 00, t.ex., först kommer att logger00.csv.
.csv innebär filen skrivs som semikolon avgränsade värden och kan läsas direkt i Excel programvara. Den kan också läsas av Google docs (fri) och Open Office (gratis).