From 98c623dc8969151c0872a2d102d486f9a735d614 Mon Sep 17 00:00:00 2001 From: neoraider Date: Tue, 3 Apr 2007 12:47:03 +0000 Subject: Neues Rescue-Programm angefangen --- Sensors.h | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 Sensors.h (limited to 'Sensors.h') diff --git a/Sensors.h b/Sensors.h new file mode 100644 index 0000000..54e3d4b --- /dev/null +++ b/Sensors.h @@ -0,0 +1,149 @@ +#ifndef _ROBOCUP_SENSORS_H_ +#define _ROBOCUP_SENSORS_H_ + +#include "qfixSoccerBoard.h" + +#define SENSOR_PORT_LINIE_LINKS 0 +#define SENSOR_PORT_LINIE_MITTE 1 +#define SENSOR_PORT_LINIE_RECHTS 2 + +#define SENSOR_PORT_D_L 3 +#define SENSOR_PORT_D_VL 4 +#define SENSOR_PORT_D_V 5 +#define SENSOR_PORT_D_VR 6 +#define SENSOR_PORT_D_R 7 + +#define LINIE_WEISS 70 +#define LINIE_FEHLER 71 + +#define SW_SCHWARZ(sensor) (sensor->getWert() > m_gw_sw) +#define SW_WEISS(sensor) (sensor->getWert() <= m_gw_sw) + +#define C_SCHWARZ(sensor) (sensor->getWert() > m_gw_sg) +#define C_GRUEN(sensor) (sensor->getWert() > m_gw_gw && sensor->getWert() <= m_gw_sg) +#define C_WEISS(sensor) (sensor->getWert() > m_gw_ws && sensor->getWert() <= m_gw_gw) +#define C_SILBER(sensor) (sensor->getWert() <= m_gw_ws) + + +class Sensor { + private: + SoccerBoard *m_board; + int m_port; + int m_wert; + + public: + Sensor(SoccerBoard *board, int port) { + m_board = board; + m_port = port; + } + + void update(); + + int getWert() { + return m_wert; + } +}; + + +class Sensors { + private: + SoccerBoard *m_board; + + bool m_kalibriert; + + Sensor *m_lsLinks, *m_lsMitte, *m_lsRechts; + int m_sLinks, m_sMitte, m_sRechts; + int m_gLinks, m_gMitte, m_gRechts; + int m_liniePos; + + int m_gw_sg; // Grenzwert schwarz/grün + int m_gw_gw; // Grenzwert grün/weiß + int m_gw_ws; // Grenzwert weiß/silber + int m_gw_sw; // Grenzwert schwarz/weiß + + Sensor *m_dsL, *m_dsVL, *m_dsV, *m_dsVR, *m_dsR; + public: + Sensors(SoccerBoard *board) { + m_board = board; + + m_kalibriert = false; + + m_lsLinks = new Sensor(board, SENSOR_PORT_LINIE_LINKS); + m_lsMitte = new Sensor(board, SENSOR_PORT_LINIE_MITTE); + m_lsRechts = new Sensor(board, SENSOR_PORT_LINIE_RECHTS); + + m_dsL = new Sensor(board, SENSOR_PORT_D_L); + m_dsVL = new Sensor(board, SENSOR_PORT_D_VL); + m_dsV = new Sensor(board, SENSOR_PORT_D_V); + m_dsVR = new Sensor(board, SENSOR_PORT_D_VR); + m_dsR = new Sensor(board, SENSOR_PORT_D_R); + + m_sLinks = m_sMitte = m_sRechts = 0; + m_gLinks = m_gMitte = m_gRechts = 0; + + m_liniePos = 0; + } + + ~Sensors() { + delete m_lsLinks; + delete m_lsMitte; + delete m_lsRechts; + + delete m_dsL; + delete m_dsVL; + delete m_dsV; + delete m_dsVR; + delete m_dsR; + } + + int getLinie() {return m_liniePos;} + bool getOpfer() { + return /*(m_sLinks && m_sMitte && m_sRechts) || */(m_gLinks && m_gMitte && m_gRechts); + } + + bool hindernisL() { + return (m_dsL->getWert() > HINDERNIS_ERKENNUNGSWERT_SEITL); + } + + bool hindernisVL() { + return (m_dsVL->getWert() > HINDERNIS_ERKENNUNGSWERT); + } + + bool hindernisV() { + return (m_dsV->getWert() > HINDERNIS_ERKENNUNGSWERT); + } + + bool hindernisVR() { + return (m_dsVR->getWert() > HINDERNIS_ERKENNUNGSWERT); + } + + bool hindernisR() { + return m_dsR->getWert(); + } + + int getDsL() { + return m_dsL->getWert(); + } + + int getDsVL() { + return m_dsVL->getWert(); + } + + int getDsV() { + return m_dsV->getWert(); + } + + int getDsVR() { + return m_dsVR->getWert(); + } + + int getDsR() { + return m_dsR->getWert(); + } + + void update(); + void auswerten(); + bool kalibrieren(); +}; + +#endif -- cgit v1.2.3