Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Farbsensor IRSensorLib PID_Control Servo mbed PixyLib
Farbauswertung.cpp
- Committer:
- ZHAW_Prometheus
- Date:
- 2017-05-24
- Revision:
- 15:26dbcd6ff48d
- Parent:
- 14:bee8101aad45
- Child:
- 16:ad45ef4fee04
File content as of revision 15:26dbcd6ff48d:
#include "mbed.h"
#include "cstdlib"
//#include <cmath>
#include "Farbauswertung.h"
//Konstruktor
Farbauswertung::Farbauswertung(AnalogIn* SensorG, AnalogIn* SensorR, Servo& _servoAusw, Servo& _servoFoerder, int verzEin, int verzAus) : servoAusw(_servoAusw), servoFoerder(_servoFoerder)
{
this->SensorG = SensorG;
this->SensorR = SensorR;
m_verzEin = verzEin;
m_verzAus = verzAus;
p1 = 0;
p2 = merkerSize - verzEin;
farbsensor.init(SensorG, SensorR);
zustand = gruen;
memset(merker, 0, merkerSize);
}
//Destruktor
Farbauswertung::~Farbauswertung() {}
void Farbauswertung::setSerialOutput(Serial *pc)
{
this->pc = pc;
}
//Methoden
void Farbauswertung::printState()
{
if (pc) {
pc->printf("Gruen: %f\tRot: %f\tStatus: %d\n\r", farbsensor.readg(), farbsensor.readr(), zustand);
}
}
void Farbauswertung::auswertung()
{
servoFoerder = 0.2f;
valInG = farbsensor.readg();
valInR = farbsensor.readr();
//Zustände am Farbsensor ins Array schreiben
if ((valInG=68.0 && valInG<=70.0 && valInR>=70.0 && valInR<=71.6)|| (valInG>=77.2 && valInG<=77.39 && valInR>=75.0 && valInR<=77.0) || (valInG>=75.0 && valInG<=76.0 && valInR>=73.0 && valInR<=74.0)) {
zustand = rot;
} else {
zustand = gruen;
}
merker[p1] = zustand;
if (p1 < (merkerSize-1)) {
p1++;
} else {
p1 = 0;
}
//Zustände an der Klappe abrufen und Klappe öffnen und schliessen
sum = 0;
for (uint16_t i = 0; i<m_verzAus; i++) {
if ((p2+i) < merkerSize) {
sum += merker[p2+i];
} else {
sum += merker[p2+i-merkerSize];
}
}
if (p2 < (merkerSize-1)) {
p2++;
} else {
p2 = 0;
}
if (sum > 0) {
servoAusw = 1.0f;
} else {
servoAusw = 0.01f;
}
}