SmartVehicle-Basis
SmartFactory
LineDetector.cpp
Go to the documentation of this file.
1 
13 #include "LineDetector.h"
14 
15 //=====PUBLIC====================================================================================
16 
17 LineDetector::LineDetector(const int sensorPin_0, const int sensorPin_1,
18  const int sensorPin_2, const int sensorPin_3,
19  const int sensorPin_4)
20  : pSensorPinLL(sensorPin_0), pSensorPinL(sensorPin_1), pSensorPinM(sensorPin_2), pSensorPinR(sensorPin_3), pSensorPinRR(sensorPin_4) {
21  DBFUNCCALLln("LineDetector::LineDetector(...)");
22  pinMode(pSensorPinLL, INPUT);
23  pinMode(pSensorPinL, INPUT);
24  pinMode(pSensorPinM, INPUT);
25  pinMode(pSensorPinR, INPUT);
26  pinMode(pSensorPinRR, INPUT);
27 }
28 
35  DBFUNCCALLln("LineDetector::deviation()");
36  pSensorLL = digitalRead(pSensorPinLL);
37  pSensorL = digitalRead(pSensorPinL);
38  pSensorM = digitalRead(pSensorPinM);
39  pSensorR = digitalRead(pSensorPinR);
40  pSensorRR = digitalRead(pSensorPinRR);
41  DBINFO3ln(String("LinePosition: ") + String(pSensorLL) + String(pSensorL) + String(pSensorM) + String(pSensorR) + String(pSensorRR));
42  if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 0) && (pSensorR == 0) && (pSensorRR == 1)) {
43  return 4;
44  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 0) && (pSensorR == 1) && (pSensorRR == 1)) {
45  return 3;
46  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 0) && (pSensorR == 1) && (pSensorRR == 0)) {
47  return 2;
48  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 0)) {
49  return 1;
50  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 1) && (pSensorR == 0) && (pSensorRR == 0)) {
51  return 0;
52  } else if ((pSensorLL == 0) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 0) && (pSensorRR == 0)) {
53  return -1;
54  } else if ((pSensorLL == 0) && (pSensorL == 1) && (pSensorM == 0) && (pSensorR == 0) && (pSensorRR == 0)) {
55  return -2;
56  } else if ((pSensorLL == 1) && (pSensorL == 1) && (pSensorM == 0) && (pSensorR == 0) && (pSensorRR == 0)) {
57  return -3;
58  } else if ((pSensorLL == 1) && (pSensorL == 0) && (pSensorM == 0) && (pSensorR == 0) && (pSensorRR == 0)) {
59  return -4;
60  } else if ((pSensorLL == 1) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 0) && (pSensorRR == 0)) { //90°-Kurve
61  DBINFO3ln("Possible 90 Degree turn left");
62  return -10;
63  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 1)) { //90°-Kurve
64  DBINFO3ln("Possible 90 Degree turn right");
65  return 10;
66  } else if ((pSensorLL == 1) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 1)) {
67  DBINFO3ln("Full line");
68  return 180;
69  } else if ((pSensorLL == 1) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 0)) {
70  DBINFO3ln("sloppy Full line");
71  return 180;
72  } else if ((pSensorLL == 0) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 1)) {
73  DBINFO3ln("sloppy Full line");
74  return 180;
75  } else if ((pSensorLL == 0) && (pSensorL == 1) && (pSensorM == 1) && (pSensorR == 1) && (pSensorRR == 0)) {
76  DBINFO3ln("Line to wide");
77  return 0;
78  } else if ((pSensorLL == 0) && (pSensorL == 0) && (pSensorM == 0) && (pSensorR == 0) && (pSensorRR == 0)) {
79  DBINFO3ln("No line detected");
80  return 200;
81  } else {
82  DBWARNINGln("LineDetector: Unexpected Results");
83  DBWARNINGln(String("LinePosition: ") + String(pSensorLL) + String(pSensorL) + String(pSensorM) + String(pSensorR) + String(pSensorRR));
84 
85  return 200;
86  }
87 }
88 
89 //=====PRIVATE=================================================================================
int pSensorL
Value Sensor Left.
Definition: LineDetector.h:63
The Class LineDetector handels the Line detection-system.
const int pSensorPinL
Pin Sensor Left.
Definition: LineDetector.h:57
const int pSensorPinLL
Pin Sensor Far Left.
Definition: LineDetector.h:56
int pSensorLL
Value Sensor Far Left.
Definition: LineDetector.h:62
const int pSensorPinR
Pin Sensor Right.
Definition: LineDetector.h:59
LineDetector(const int sensorPin_0, const int sensorPin_1, const int sensorPin_2, const int sensorPin_3, const int sensorPin_4)
Construct a new Line Detector object.
const int pSensorPinRR
Pin Sensor Far Right.
Definition: LineDetector.h:60
const int deviation()
Recognise deviation from vehicle to line.
int pSensorRR
Value Sensor Far Right.
Definition: LineDetector.h:66
int pSensorM
Value Sensor Middle.
Definition: LineDetector.h:64
int pSensorR
Value Sensor Right.
Definition: LineDetector.h:65
const int pSensorPinM
Pin Sensor Middle.
Definition: LineDetector.h:58