m_motorL.setPWM(l);\r
m_motorR.setPWM(r);\r
}\r
+bool ETBalanceRunner::IsException() const\r
+{\r
+ return false;\r
+}\r
+void ETBalanceRunner::Stop()\r
+{\r
+ m_motorL.setPWM(0);\r
+ m_motorR.setPWM(0);\r
+}\r
+void ETBalanceRunner::Reset()\r
+{\r
+ balance_init();\r
+}\r
void ETBalanceRunner::SetGyroOffset(int offset)\r
{\r
m_gyrooffset = offset;\r
virtual ~ETBalanceRunner(void);\r
//\r
virtual void Run(int forward, int turn);\r
+ virtual bool IsException() const;\r
+ virtual void Stop();\r
+ virtual void Reset();\r
void SetGyroOffset(int offset);\r
};\r
\r
}\r
bool ETLineTracer::IsException() const\r
{\r
- return false;\r
+ return m_runner.IsException();\r
}\r
void ETLineTracer::Stop()\r
{\r
+ m_runner.Stop();\r
}\r
void ETLineTracer::Reset()\r
{\r
+ m_runner.Reset();\r
+ m_pid.ResetPrevDiff();\r
}\r
void ETLineTracer::CalcOutput(int speed, int linepos, int& forward, int& turn)\r
{\r
+++ /dev/null
-#include "LinePos.h"\r
-\r
-LinePos::LinePos(void)\r
-{\r
-}\r
-LinePos::~LinePos(void)\r
-{\r
-}\r
class LinePos\r
{\r
public:\r
- LinePos(void);\r
- virtual ~LinePos(void);\r
+ virtual ~LinePos(void){}\r
//\r
virtual int GetLinePos() = 0;\r
};\r
# Target specific macros
TARGET = tonden
-TARGET_CPP_SOURCES = main.cpp LinePos.cpp Runner.cpp ETLinePos.cpp ETBalanceRunner.cpp ETLineTracer.cpp \
+TARGET_CPP_SOURCES = main.cpp ETLinePos.cpp ETBalanceRunner.cpp ETLineTracer.cpp \
context.cpp \
runstate.cpp \
exceptionstate.cpp \
//
T CalcControlValue(const T& diff);
void SetClip(const T& clipMin, const T& clipMax);
+ void ResetPrevDiff();
};
template<class T>
m_clipMin = clipMin;
m_clipMax = clipMax;
}
+
+template<class T>
+void PID<T>::ResetPrevDiff()
+{
+ m_prevDiff = 0;
+ m_sumDiff = 0;
+}
+++ /dev/null
-#include "Runner.h"\r
-\r
-Runner::Runner(void)\r
-{\r
-}\r
-Runner::~Runner(void)\r
-{\r
-}\r
class Runner\r
{\r
public:\r
- Runner(void);\r
- virtual ~Runner(void);\r
+ virtual ~Runner(void){}\r
//\r
virtual void Run(int forward,int turn) = 0;\r
+ virtual bool IsException() const = 0;\r
+ virtual void Stop() = 0;\r
+ virtual void Reset() = 0;\r
};\r
<ClCompile Include="ETLineTracer.cpp" />\r
<ClCompile Include="ETTailControl.cpp" />\r
<ClCompile Include="exceptionstate.cpp" />\r
- <ClCompile Include="LinePos.cpp" />\r
<ClCompile Include="main.cpp" />\r
- <ClCompile Include="Runner.cpp" />\r
<ClCompile Include="runstate.cpp" />\r
<ClCompile Include="tsprintf.c" />\r
</ItemGroup>\r
<ClCompile Include="ETLineTracer.cpp">\r
<Filter>ソース ファイル</Filter>\r
</ClCompile>\r
- <ClCompile Include="LinePos.cpp">\r
- <Filter>ソース ファイル</Filter>\r
- </ClCompile>\r
- <ClCompile Include="Runner.cpp">\r
- <Filter>ソース ファイル</Filter>\r
- </ClCompile>\r
<ClCompile Include="ETLinePos.cpp">\r
<Filter>ソース ファイル</Filter>\r
</ClCompile>\r
TASK(Task4ms)\r
{\r
if(touch.isPressed()){\r
- motorR.setPWM(0);\r
- motorL.setPWM(0);\r
+// motorR.setPWM(0);\r
+// motorL.setPWM(0);\r
ActivateTask(TaskMain);\r
TerminateTask();\r
}\r