Drehen mit Halt und offset um zum Klotz zurück drehen. (Kann nur ein klotz aufheben)
Fork of DrehungMitStopp by
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
Generated on Wed Jul 13 2022 01:25:06 by 1.7.2