Schritt 9: Programmierung Ihres Kleidungsstücks | Beschleunigungsmesser vollständige Code
Unten ist die komplette Arduino-Code für den Beschleunigungssensor:
/*
Herausfinden!
Hier ist der Beispielcode verwendet ein tragbares System zu erstellen, die einen Beschleunigungsmesser verwendet um die Anzahl der
Schritte unternimmt ein Benutzer. Das System speichert diesen Wert in einer Variablen und gibt eine visuelle Anzeige auf der Grundlage der
Anzahl.
Unten ist der Code verwendet. */
die folgenden Sätze die Variablen und Stifte im Code verwendeten
im folgenden beschreiben die Pins für die leichte Pads verwendet
Int führte = 5;
Int led2 = 9;
Int led3 = 11;
/ / Int Schritte = 7;
Diese konstanten beschreiben die Pins für den Beschleunigungsmesser verwendet:
const Int Xpin = A5; / / x-Achse des Beschleunigungsmessers
const Int Ypin = A2; / / y-Achse
const Int Zpin = A3; / / z-Achse (nur bei 3-Achs Modellen)
Anzahl der Millisekunden zwischen Lesungen
Int SampleDelay = 500;
/ / die Variable global "Schritte" beschreibt die Variable verwendet, um die Leistung der Lichter zu bestimmen:
Int Schritte = 0;
SoftwareSerial xbee(5,6);
das Setup beginnt"" alles:
void setup() {}
die seriellen Kommunikation zu initialisieren:
Serial.Begin(9600);
/ / Satz die Xbee serial zu 9600
XBee.Begin(9600);
/ / die digital Pins als Ausgang und den Beschleunigungssensor Pins als Eingänge zu initialisieren:
PinMode geleitete (Ausgabe);
PinMode (led2, OUTPUT);
PinMode (led3, OUTPUT);
PinMode (Xpin, Eingabe);
PinMode (Ypin, Eingabe);
PinMode (Zpin, Eingabe);
}
die Schleife Routine läuft immer und immer wieder für immer:
void loop() {}
Beschleunigungsmesser Code zur Ermittlung der Variablen "Schritte"
die folgenden Flot-Variablen werden verwendet um zu bestimmen, die Schwelle für "Schritte":
Float oldy = 0;
Float-Schwelle = 0;
//read den Wert von xbee
SensorValue = xbee.read();
//serial Port, das druckt, was gelesen wurde, um zu bestätigen, dass sie eingegangen ist
Serial.Print("; Sensorwert = ");
Serial.Write(senorValue);
/ / pin Lesungen für X, y, z
Int X = analogRead(xpin);
Delay(1); //add eine kleine Verzögerung zwischen Pin Lesungen. Ich habe gelesen, dass Sie dies tun sollten, aber noch nicht, die Bedeutung getestet
Int y = analogRead(ypin);
Delay(1); //add eine kleine Verzögerung zwischen Pin Lesungen. Ich habe gelesen, dass Sie dies tun sollten, aber noch nicht, die Bedeutung getestet
Int Z = analogRead(zpin);
/ * Zero_G ist die Lesung, die wir erwarten, vom Sensor dass erkennt es keine Beschleunigung. Subtrahieren Sie dieser Wert von der Sensorwert zu einer verschobenen Sensorwert. */
Float Zero_G = 512;
/ * Skala ist die Anzahl der Einheiten, die wir erwarten, die Sensorwerte dass zu ändern, wenn die Beschleunigung entlang einer Achse von 1 G ändert. Die verschobenen Sensorwert Skala Beschleunigung in Gs zu teilen. * /
schweben Sie Skala = 102,3;
für dieses Projekt werden wir nicht gedruckt, die 'X'-Werte, aber wenn Sie sie drucken möchten:
Serial.Print (((Float) x - Zero_G) / Skala);
Serial.Print("\t");
für dieses Projekt wir drucken die 'y'-Werte hilft den Schwellenwert bestimmen:
Schwelle = oldy - ((Float) y - Zero_G) / skalieren;
Serial.Print ("y =");
Serial.Print (((Float) y - Zero_G) / Skala);
Serial.Print("; Schwelle = ");
Serial.println(Threshold);
für dieses Projekt werden wir nicht gedruckt, die 'Z'-Werte, aber wenn Sie sie drucken möchten:
Serial.Print("\t");
Serial.Print (((Float) Z - Zero_G) / Skala); Serial.Print("\n");
Wenn (Schwelle > 1.3)
Schritte ++;
Serial.Print ("Schritte =");
Serial.Print(Steps);
Code verwendet, um festzustellen, welche Lichter muss zur Ausgabe:
Wenn (Schritte < = 5) {}
DigitalWrite (geführt, hoch); die erste LED-Anzeige schalten (HIGH ist das Spannungsniveau)
/ / delay(1000); / / eine Sekunde warten
DigitalWrite (geführt, niedrig); Schalten Sie die erste LED-Anzeige aus, indem man die Spannung niedrig
Delay(1000); warten Sie eine Sekunde
SoftwareSerial.println("A");
}
ElseIf ((steps > 5) & & (< 10 Schritte)) {}
DigitalWrite (led2, HIGH); Wende die zweite LED-Anzeige auf (HIGH ist das Spannungsniveau)
/ / delay(1000); / / eine Sekunde warten
DigitalWrite (led2, LOW); Schalten Sie die zweite LED-Anzeige aus, indem man die Spannung niedrig
Delay(1000); warten Sie eine Sekunde
SoftwareSerial.println("B");
}
ElseIf (Schritte > 10) {}
DigitalWrite (led3, HIGH); Wende die dritte LED-Anzeige auf (HIGH ist das Spannungsniveau)
/ / delay(1000); / / eine Sekunde warten
DigitalWrite (led3, LOW); Schalten Sie die dritte LED-Anzeige aus, indem man die Spannung niedrig
Delay(1000); warten Sie eine Sekunde
SoftwareSerial.println("C");
}
Else {}
Return 0;
}
/ / Verzögerung vor der nächsten Lesung:
Delay(sampleDelay);
}