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

Dependencies:   Servo mbed

Fork of DrehungMitStopp by kings

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers IRSensor.cpp Source File

IRSensor.cpp

00001 #include "IRSensor.h"
00002 #include <cmath>
00003 
00004 //E. Hess
00005 //IRSensor.cpp
00006 
00007 //Konstruktor -> Erstellt ein IRSensor-Objekt
00008 //AnalogIn* distance -> Liest die Voltanzahl des Sensors aus
00009 //DigitalOut* bit0, bit1, bit2 -> Binär-Outputs wählen die 6 Sensoren an
00010 //Int number -> Sensornummer als int (0-5)
00011 
00012 IRSensor::IRSensor() {}
00013 
00014 IRSensor::IRSensor(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number)
00015 {
00016     this->distance = distance;  //Weist den Objektvariablen, die eingegebenen Werte zu
00017     this->bit0 = bit0;
00018     this->bit1 = bit1;
00019     this->bit2 = bit2;
00020     this->number = number;
00021     this->filteredValue = 0.0f;
00022 }
00023 
00024 //Destruktor -> Löscht das IRSensor-Objekt
00025 IRSensor::~IRSensor() {}
00026 
00027 //Initialisiert nachträglich
00028 void IRSensor::init(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number)
00029 {
00030     this->distance = distance;  //Weist den Objektvariablen, die eingegebenen Werte zu
00031     this->bit0 = bit0;
00032     this->bit1 = bit1;
00033     this->bit2 = bit2;
00034     this->number = number;
00035     this->filteredValue = 0.0f;
00036 }
00037 
00038 //Distanzrechner
00039 float IRSensor::read()
00040 {
00041     *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)
00042     *bit1 = (number >> 1) & 1;  //Vergleicht das zweite Bit von rechts
00043     *bit2 = (number >> 2) & 1;  //Vergleicht das dritte Bit von rechts
00044 
00045     float d = distance->read();
00046 
00047     this->filteredValue = 0.99f* this->filteredValue + 0.01f * d;
00048     return d;
00049 }
00050 
00051 float IRSensor::readFitered()
00052 {
00053     return this->filteredValue;
00054 }
00055