Drehen mit Halt und offset um zum Klotz zurück drehen. (Kann nur ein klotz aufheben)

Dependencies:   Servo mbed

Fork of DrehungMitStopp by kings

Committer:
freunjor
Date:
Thu May 18 13:25:31 2017 +0000
Revision:
4:85b8b4aa97a3
Parent:
2:365bf16abbf6
fdasdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EHess 1:d40ff07e2fe0 1 #include "IRSensor.h"
EHess 1:d40ff07e2fe0 2 #include <cmath>
EHess 0:96f88638114b 3
EHess 1:d40ff07e2fe0 4 //E. Hess
EHess 1:d40ff07e2fe0 5 //IRSensor.cpp
EHess 0:96f88638114b 6
EHess 1:d40ff07e2fe0 7 //Konstruktor -> Erstellt ein IRSensor-Objekt
EHess 1:d40ff07e2fe0 8 //AnalogIn* distance -> Liest die Voltanzahl des Sensors aus
EHess 1:d40ff07e2fe0 9 //DigitalOut* bit0, bit1, bit2 -> Binär-Outputs wählen die 6 Sensoren an
EHess 1:d40ff07e2fe0 10 //Int number -> Sensornummer als int (0-5)
EHess 0:96f88638114b 11
EHess 1:d40ff07e2fe0 12 IRSensor::IRSensor() {}
EHess 0:96f88638114b 13
EHess 2:365bf16abbf6 14 IRSensor::IRSensor(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number)
EHess 2:365bf16abbf6 15 {
EHess 1:d40ff07e2fe0 16 this->distance = distance; //Weist den Objektvariablen, die eingegebenen Werte zu
EHess 0:96f88638114b 17 this->bit0 = bit0;
EHess 0:96f88638114b 18 this->bit1 = bit1;
EHess 0:96f88638114b 19 this->bit2 = bit2;
EHess 0:96f88638114b 20 this->number = number;
EHess 2:365bf16abbf6 21 this->filteredValue = 0.0f;
EHess 0:96f88638114b 22 }
EHess 0:96f88638114b 23
EHess 1:d40ff07e2fe0 24 //Destruktor -> Löscht das IRSensor-Objekt
EHess 0:96f88638114b 25 IRSensor::~IRSensor() {}
EHess 0:96f88638114b 26
EHess 1:d40ff07e2fe0 27 //Initialisiert nachträglich
EHess 2:365bf16abbf6 28 void IRSensor::init(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number)
EHess 2:365bf16abbf6 29 {
EHess 1:d40ff07e2fe0 30 this->distance = distance; //Weist den Objektvariablen, die eingegebenen Werte zu
EHess 1:d40ff07e2fe0 31 this->bit0 = bit0;
EHess 1:d40ff07e2fe0 32 this->bit1 = bit1;
EHess 1:d40ff07e2fe0 33 this->bit2 = bit2;
EHess 1:d40ff07e2fe0 34 this->number = number;
EHess 2:365bf16abbf6 35 this->filteredValue = 0.0f;
EHess 1:d40ff07e2fe0 36 }
EHess 1:d40ff07e2fe0 37
EHess 1:d40ff07e2fe0 38 //Distanzrechner
EHess 0:96f88638114b 39 float IRSensor::read()
EHess 0:96f88638114b 40 {
EHess 1:d40ff07e2fe0 41 *bit0 = (number >> 0) & 1; //Vergleicht das Least-Significant-Bit von number mit 1 und setzt *bit0 (z.B. 5: 0000'0101 & 0000'0001 == 0000'0001)
EHess 1:d40ff07e2fe0 42 *bit1 = (number >> 1) & 1; //Vergleicht das zweite Bit von rechts
EHess 1:d40ff07e2fe0 43 *bit2 = (number >> 2) & 1; //Vergleicht das dritte Bit von rechts
EHess 0:96f88638114b 44
EHess 1:d40ff07e2fe0 45 float d = distance->read();
EHess 2:365bf16abbf6 46
EHess 2:365bf16abbf6 47 this->filteredValue = 0.99f* this->filteredValue + 0.01f * d;
EHess 1:d40ff07e2fe0 48 return d;
EHess 2:365bf16abbf6 49 }
EHess 2:365bf16abbf6 50
EHess 2:365bf16abbf6 51 float IRSensor::readFitered()
EHess 2:365bf16abbf6 52 {
EHess 2:365bf16abbf6 53 return this->filteredValue;
EHess 2:365bf16abbf6 54 }
EHess 2:365bf16abbf6 55