


Der ADXL335 ist ein 3-Achsen Beschleunigungssensor. Er hat neben der Spannungsversorgung und dem GND-Anschluss drei analoge Ausgänge für die Erfassung der Beschleunigung in der x-, y- und z-Richtung.
Der Beschleunigungssensor wurde auf auf einem Holzstück befestigt und die Achsen entsprechend beschriftet.



Benötigte Bauteile:
- 3 LEDs (rot, gelb, grün)
- 3 Widerstände 220 Ω
- Leitungsdrähte
- Beschleunigungssensor ADXL335

Beachte die ⇒Vorwiderstände verschiedener LEDs
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Die ermittelten Werte der jeweiligen Achsen sollen im Seriellen Monitor und im Seriellen Plotter dargestellt werden. Eine Seite liegt dann oben, wenn der Wert des analogen Eingangs über 400 liegt.


Das zum Seriellen Plotter gehörige Programm:
void setup()
{
Serial.begin(9600);
}
void loop()
{
int xAchse = analogRead(A0);
int yAchse = analogRead(A1);
int zAchse = analogRead(A2);
// Werte schreiben
Serial.print("x-Achse:");
Serial.print(xAchse);
Serial.print(",");
Serial.print("y-Achse>:");
Serial.print(yAchse);
Serial.print(",");
Serial.print("z-Achse:");
Serial.print(zAchse);
Serial.println(",");
delay(200);
}
Eine Ampel soll „per Hand“ geschaltet werden:
Der Sensor zeigt auf die ...
- x-Achse Ampel ist rot
- y-Achse Ampel zeigt gelb oder rot-gelb
- z-Achse die grüne LED leuchtet
Natürlich ist noch das Problem zu lösen, dass nach rot rot-gelb folgt und nach grün nur die gelbe LED leuchtet. Der Status einer boolschen Variable entscheidet darüber, welcher Fall eintritt.
Die LEDs werden mit enum definiert:
enum Ampel
{
// Startwert festlegen
ROT = 5,
GELB,
GRUEN
};
/* wenn der Sensor zur y-Achse zeigt
letztes Signal rot -> ROTGELB = true
-> Ampel zeigt rot und gelb letztes Signal grün -> ROTGELB = false
-> Ampel zeigt nur gelb
*/
bool ROTGELB = true;
Der setup-Teil:
void setup()
{
for (int i = ROT; i <= GRUEN; i++)
{
pinMode(i, OUTPUT);
}
Serial.begin(9600);
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// analoge Eingänge lesen
int xAchse = analogRead(A0);
int yAchse = analogRead(A1);
int zAchse = analogRead(A2);
// Sensor zeigt auf die x-Achse -> Ampel rot, ROTGELB = true
if (xAchse > 400)
{
digitalWrite(GELB, LOW);
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, HIGH);
ROTGELB = true;
}
// Sensor zeigt auf die y-Achse
// wenn ROTGELB = false -> nur die gelbe LED leuchtet
if (yAchse > 400 & !ROTGELB)
{
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, LOW);
digitalWrite(GELB, HIGH);
}
// wenn ROTGELB = true -> die rote und die gelbe LED leuchten
if (yAchse > 400 & ROTGELB)
{
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, HIGH);
digitalWrite(GELB, HIGH);
}
/*
Sensor zeigt auf die z-Achse
ROTGELB muss auf false gesetzt werden,
damit bei Aktivierung des y-Achse nur die gelbe LED leuchtet
*/
if (zAchse > 400 )
{
digitalWrite(ROT, LOW);
digitalWrite(GELB, LOW);
digitalWrite(GRUEN, HIGH);
ROTGELB = false;
}
delay(20);
}
Verwandte Anleitungen:
- Ampel
- Ampel mit Bluetooth schalten
- Ampel mit einem Ethernet-Shield schalten
- Ampel mit Fußgängerampel
- Ampel mit Fußgängerampel und Taster
- Ampel mit UNO R4 WiFi schalten
- Ampel mit WiFi schalten
- Ampelanlage an einem Fußgängerüberweg
- Ampelschaltung mit einem LED-Stick
- Ampel mit Ultraschallsensor schalten
- Ampel mit Arduino WiFi und Bluetooth schalten
- Zwei Ampeln
Letzte Aktualisierung: